Java16 Optional 기초 사용법 Optional 이란?개발을 진행하다 보면, Primitive Type(원시 타입)과 더불어 Reference Type(참조 타입)을 사용한다. 원시 타입과 달리 참조 타입은 Null 값을 발생시키고 이로 가장 많이 발생하는 예외 중 하나인 바로 NPE(NullPointerException)을 유발한다. 이를 피하려면, null 여부를 검사하고 처리하는 로직이 필요한데 이를 모든 코드에서 사용하는 것을 상상해보면,꽤나 번거롭고 코드 가독성을 더럽힐 것이다. 따라서 Java는 8버전부터 Optional 클래스를 사용해서 NPE를 방지할 수 있도록 도와준다.이는 Null이 올 수 있는 값을 감쌀 수 있는 Wrapper 클래스이다. 이번 글에서는 Optional의 사용법에 대해 공부하고 정리해보겠다. .. Java/자바개념 2025. 1. 18. 객체 지향과 디자인 패턴 Chapter 05 - 의존 역전 원칙(SOLID) 더보기'개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴'을 읽고 학습합니다. ( 최범균 저 ) SOLID의 마지막 원칙인 의존 역전 원칙은' 고수준 모듈은 저수준 모듈의 구현에 의존하면 안 된다. 저수준 모듈이 고수준 모듈에서 정의한 추상 타입에 의존해야 한다. ' 이다. 말이 어렵다.. 먼저 고수준 모듈과 저수준 모듈이 무엇인지 정의부터 해보자.고수준 모듈은 어떤 단일 기능을 제공하는 모듈이라고 정의할 수 있으며, 저수준 모듈은 고수준 모듈의 기능을 구현하기 위해 필요한 하위 기능의 실제 구현으로 정의 가능하다. 아래의 예제를 보며 쉽게 이해해보자. 위의 예시는 바이트 데이터를 암호화하는 것이 이 프로그램의 의미 있는 단일 기능으로 고수준 모듈에 해당한다.이 고수준 모듈은 데이터 읽기, 함호.. Java/객체지향 2024. 11. 15. 객체 지향과 디자인 패턴 Chapter 05 - 인터페이스 분리 원칙(SOLID) 더보기'개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴'을 읽고 학습합니다. ( 최범균 저 ) 이번 장에서 다룰 인터페이스 분리 원칙(ISP)을 표현하자면 다음과 같다.' 인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다. ' 본래 원칙 정의는 ' 클라이언트는 자신이 사용하는 메서드에만 의존해야 한다 '지만, 저자는 이해와 기억을 위해 나름 문장을 바꿔서 표현하였다. 해당, 내용에서 저자는 C++ 언어를 사용하여 인터페이스 분리 원칙을 설명하였다. 하지만, 필자는 C++에 능숙하지 않고 책에 적힌 내용만으로 이해되지 않는 부분이 있어, 자료 조사를 더하여 정리해보겠다. 인터페이스 분리 원칙을 다루기에 앞서 인터페이스와 클래스( 특히, 추상 클래스 )는 설계와 관련이 깊다.인.. Java/객체지향 2024. 11. 14. 객체 지향과 디자인 패턴 Chapter 05 - 리스코프 치환 원칙(SOLID) 더보기'개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴'을 읽고 학습합니다. ( 최범균 저 ) 이전의 개발 폐쇄 원칙은 추상화와 더불어 다형성을 이용하여 구현했는데, 리스코프 치환 원칙은 개방 폐쇄 원칙을 받쳐 주는 다형성에 관한 원칙을 제공한다. 리스코프 치환 원칙→ ' 상위 타입의 객체를 하위 타입 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다. ' 이 말의 의미를 코스 수준에서 살펴보자면 상위 타입 클래스와 하위 타입 클래스를 통해 파악할 수 있다.아래의 코드로 예시를 살펴보자.public void somMethod(SuperClass sc) { sc.someMethod();} someMethod()는 상위 타입인 sc 객체를 사용하는 메서드이다. 그리고 만약 이 .. Java/객체지향 2024. 11. 13. 객체 지향과 디자인 패턴 Chapter 05 - 개방 폐쇄 원칙(SOLID) 더보기'개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴'을 읽고 학습합니다. ( 최범균 저 ) 개방 폐쇄 원칙(Open-closed principle), ' 일명 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다. ' 는 말로 들으면 무슨 소리인지 알 수 없는 이 원칙에 대해서 알아보자. 개방 폐쇄 원칙(Open-close principle)→ ' 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다. ' 이를 좀 더 구체적인 말로 표현하자면 다음과 같이 풀이할 수 있다. 기능을 변경하거나 확장할 수 있으면서, 그 기능을 사용하는 코드는 수정하지 않는다. 기능을 변경하면서도 그 기능을 사용하는 코드를 사용하는 코드는 수정하지 않는다?말로는 전혀 와닿지 않는다. 이를 이해하기 위해서는 앞서 학.. Java/객체지향 2024. 11. 5. 객체 지향과 디자인 패턴 Chapter 05 - 설계원칙: 단일 책임 원칙(SOLID) 더보기'개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴'을 읽고 학습합니다. ( 최범균 저 ) 지금까지 객체 지향의 기본 내용들인 책임 할당, 캡슐화, 다형성과 추상화 그리고 조립을 통한 재사용 등에 대해서 알아보았으며, 어떻게 객체 지향이 소프트웨어의 변경에 유연하게 대응하도록 만드는 지 학습했다. 그리고 지금부터는 객체 지향적으로 좋은 설계를 구성하기 위한 설계 원칙인 SOILD에 대해서 살펴보겠다. 그리고 이를 통해 보다 명확하게 객체 지향적 설계를 구성함에 필요한 사고에 대해서 익숙해지자.단, 지금부터 학습할 SOLID 원칙들은 별도가 아닌 서로 밀접하게 연결되므로 종합적으로 이해하자.단일 책임 원칙(Single responsibility principle)→ ' 클래스는 단 한 개의 책임을.. Java/객체지향 2024. 11. 2. 객체 지향과 디자인 패턴 Chapter 04 - 재사용: 상속보단 조립 더보기'개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴'을 읽고 학습합니다. ( 최범균 저 )객체 지향의 주요 특징으로 재사용이 있으며, 이를 지원하는 대표적인 예는 상속이다.상속이 상위 클래스에 구현된 기능을 그대로 사용할 수 있기에 상속의 사용이 재사용을 쉽게 해준다는 점은 분명하다.그러나 상속을 통한 재사용 과정에서 발생하는 문제점이 있다. 이를 살펴보고 다른 재사용의 방법으로 객체 조립을 파악하여 상속을 통한 재사용의 단점을 해소화하는 방법에 대해서 알아보자. 상속과 재사용스프링(2점대)은 웹 요청을 처리하기 위한 컨트롤러 기능을 위해서 아래와 같은 클래스들을 제공하고 있다.위의 그림을 보면, 상속 계층을 따라서 아래와 같이 기능을 확장한다.◎ AbstractController → 웹 요청을.. Java/객체지향 2024. 10. 30. 객체 지향과 디자인 패턴 Chapter 03 (1~3) - 상속, 다형성, 추상화 더보기'개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴'을 읽고 학습합니다. ( 최범균 저 ) 객체 지향의 패러다임을 통한 프로그래밍으로 얻을 수 있는 이점은 구현 변경에 대한 유연성이며. Chapter 02에서는 캡슐화를 통해 객체를 사용하는 다른 코드에서 변경에 대한 영향을 최소화하며 객체 자체의 코드 변경에 대한 유연함을 얻는 방법에 대해서 알아보았다. 유연함을 얻을 수 있게 만들어 주는 방법에는 ' 추상화 '에 있는데, 이에 대해서 학습한 내용을 정리해보겠다. 그 이전에 추상화를 가능하게 만들어주는 ' 다형성 '과 ' 상속 ' 대해서 알아보겠다. 상속다형성을 알아보기 이전에 상속에 대한 내용 파악이 필요하므로 가볍게 알아보자. ( 아마 객체 지향 언어를 학습했다면, 상속에 대한 내용은 기.. Java/객체지향 2024. 8. 29. 객체 지향과 디자인 패턴 Chapter 02 (2~6) - 객체 더보기'개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴'을 읽고 학습합니다. ( 최범균 저 ) Chapter 02의 1번 주제에서 절차 지향과 객체 지향 개발 방법에 대해 알아보며, 둘의 차이를 살펴보고 객체 지향이 왜 유연하며 유지 보수에 더 좋은 개발 방법론인지 개념에 대해 알아보았다. 이번에는 객체 지향 개발 방법에서 객체의 개념과 속성 그리고 기능과 활용적 측면에서 알아야할 개념 등에 대해서 Chapter 02의 2~6번 주제로 살펴보겠다. 객체 앞서 객체는 데이터와 그 데이터를 조작하는 프로시저로 구성됨을 알아보았는데, 실제 객체를 정의할 때는 객체가 제공해야하는 기능에 대한 집중이 필요하며, 내부적으로 어떤 데이터를 지녔는가로 정의하지 않는다. 예를 들어, ' 소리 크기 제어 '.. Java/객체지향 2024. 8. 26. 객체 지향과 디자인 패턴 Chapter 02 (1) - 절차 지향과 객체 지향 더보기 '개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴'을 읽고 학습합니다. ( 최범균 저 ) 앞서 Chapter 01 에서는 '절차 지향적' 코드의 작성이 수정사항에 맞춰 변화에 어려운 코드임을 보여주었다. 그리고 변화에 잘 대응하는 소프트웨어의 구조와 기법으로 객체 지향 프로그래밍에 대한 소개한다.( Chapter 02부터 본격적으로 객체 지향에 대해 알아보기에 Chapter 02부터 정리한다. ) 절차 지향과 객체 지향 '소프트웨어를 구현한다는 점은 결국 최종적으로는 소프트웨어를 구성하는 데이터와 데이터를 조작하는 코드를 작성하는 것이다.'(p.29) 위의 말처럼 소프트웨어는 데이터를 가지고 조작 형태를 구현하여 필요한 기능을 만드는 것으로 생각할 수 있다. 와중에 데이터를 어떻게 조작.. Java/객체지향 2024. 8. 26. 인터페이스 ( 2 ) <팩토리 메서드 패턴> GitHub - KOSA-Group-04-Study/JAVA-StudyContribute to KOSA-Group-04-Study/JAVA-Study development by creating an account on GitHub.github.com자바스터디 4회 주제는 ‘인터페이스’이다. 인터페이스는 다중 상속의 이점을 지원하는 자바의 문법이다.인터페이스는 다른 클래스를 작성할 떄 기본이 되는 틀을 제공하며, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스이다. 따라서 인터페이스는 클래스들이 필수로 구현해야함을 강요하는 추상 자료형이자, 객체의 사용방법에 대한 가이드라인을 제시하는 설계도이다. 본 스터디에서 인터페이스에 속성과 정의를 배운 후, 마침 교육과정에서 디자인 패턴에 대한.. Java/디자인패턴 2024. 3. 31. 인터페이스 ( 1 ) <템플릿 메서드 패턴> GitHub - KOSA-Group-04-Study/JAVA-StudyContribute to KOSA-Group-04-Study/JAVA-Study development by creating an account on GitHub.github.com자바스터디 4회 주제는 ‘인터페이스’이다. 인터페이스는 다중 상속의 이점을 지원하는 자바의 문법이다.인터페이스는 다른 클래스를 작성할 떄 기본이 되는 틀을 제공하며, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스이다. 따라서 인터페이스는 클래스들이 필수로 구현해야함을 강요하는 추상 자료형이자, 객체의 사용방법에 대한 가이드라인을 제시하는 설계도이다. 본 스터디에서 인터페이스에 속성과 정의를 배운 후, 마침 교육과정에서 디자인 패턴에 대한.. Java/디자인패턴 2024. 3. 31. 이전 1 2 다음