모르지 않다는 것은 아는것과 다르다.

객체지향 16

디자인 패턴에 함수형 프로그래밍 적용하기

빌더 패턴 대표적인 생성 패턴이다. 객체의 생성에 대한 로직과 표현에 대한 로직을 분리해준다. 객체의 생성 과정을 유연하게 해준다. 객체의 생성 과정을 정의하고 싶거나 필드가 많아 constructor 가 복잡해질 때 유용하다. 아래와 같이 빌더 패턴을 구현할 수 있다. public class User { private int id; private String name; private String emailAddress; private boolean isVerified; private LocalDateTime createdAt; private List friendUserIds; public User(Builder builder) { this.id = builder.id; this.name = builde..

객체지향 2022.03.06

다형성

다형성이란? 다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미합니다. 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있습니다. 다형성은 상속, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나입니다. 다시말해서 다형성이란, 하나의 객체 혹은 메소드가 여러 타입을 참조할 수 있음을 의미합니다. 다형성은 크게 객체의 다형성과, 메소드의 다형성으로 구분됩니다. 객체 다형성 객체 다형성은 객체가 상속된 부모 객체의 인스턴스로 할당될 수 있음을 의미합니다. class TV { // 메소드 } class SmartTV extends TV { // 메소드 } 위와 같이 SmartT..

객체지향 2022.02.28

디자인 패턴

디자인 패턴 자주 사용하는 설계 패턴을 정형화 해서 이를 유형별로 가장 최적의 방법으로 개발할 수 있도록 도와준다. 언어에 종속적이지 않고, 다양한 프레임워크에 적용시킬 수 있다. 특정 영역에 종속적이지 않고 일반적으로 활용할 수 있다. 좋은 설계에 도움이 된다. Gof 디자인 패턴 소프트웨어를 설계 할 때는 기존에 경험이 매우 중요하다. -> 그러나 모든 사람들이 다양한 경험을 가지고 있을 수는 없다. 이러한 지식을 공유하기 위해서 나온 것이 GOF 의 디자인 패턴이다. 객체지향 개념에 따른 설계 중 재사용할 경우 유용한 설계를 디자인 패턴으로 정리 해둔 것이다. Gof 의 디자인 패턴은 총 23개 이며, 이를 잘 이해하고 활용한다면, 경험이 부족하더라도 좋은 소프트웨어 설계가 가능하다. 디자인 패턴의..

객체지향 2022.02.28

SOLID

SOLID SOLID 란? 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리했다. SRP: 단일 책임 원칙(single responsibility principle) OCP: 개방-폐쇄 원칙 (Open/closed principle) LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregation principle) DIP: 의존관계 역전 원칙 (Dependency inversion principle) SRP: 단일 책임 원칙(single responsibility principle) 한 클래스에서 여러 기능을 제공하게 되면 유지보수가 어려움이 있다. 그렇게 때문에, 한 클래스는 하나의 ..

객체지향 2022.02.28

POJO

POJO 란? Plain Old Java Object 의 약자이다. 마틴 파울러가 위의 이름을 지었는데, 이유는 단순한 개체에 걸맞는 마땅한 이름이 없기 때문이라고 한다. 해석해보면, 오래된 방식의 간단한 자바 오브젝트라는 뜻이다. 객체지향적인 원리에 충실하면서 특정 환경과 규약에 종속되지 않아, 필요에 따라 재사용이 될 수 있는 방식으로 설계된 오브젝트를 말한다. 쉽게 말하면, 특정 기술과 환경에 종속되어 동작하는 것이 아닌 순수한 자바 객체를 말한다. Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에 반발해서 사용되게 된 용어이다. POJO의 장점 특정 기술과 환경에 종속적이지 않은 코드는 깔끔하다. 자동화된 테스트에 유리하다. 객체지향..

객체지향 2022.02.28

refactoring

이해하기 힘든 이름 Mysterius Name 깔끔한 코드에서 가장 중요한 것 중 하나가 바로 “좋은 이름”이다. 함수, 변수, 클래스, 모듈의 이름 등 모두 어떤 역할을 하는지 어떻게 쓰이는지 직관적이어야 한다. 사용할 수 있는 리팩토링 기술이다. 함수 선언 변경하기 (Change Function Declaration) 변수 이름 바꾸기 (Rename Variable) 필드 이름 바꾸기 (Rename Field) 함수 이름 바꾸기 Change Function Declaration 좋은 이름을 가진 함수는 함수가 어떻게 구현되었는지 코드를 보지 않아도 이름만 보고도 이해할 수 있다. 좋은 이름을 찾아내는 방법? 함수에 주석을 작성한 다음, 주석을 함수 이름으로 만들어 본 다. 함수의 매개변수는 함수 내부..

객체지향 2022.02.28