[Object] 12. 다형성
in Programming on Java
앞에서 배운 상속의 목적은 코드 재사용이 아니다. 상속은 타입계층을 구조화하기 위해 사용해야한다.
상속을 통해 타입 계층을 구조화하여 다형성을 구현하는 방법에 대해 알아보자.
in Programming on Java
앞에서 배운 상속의 목적은 코드 재사용이 아니다. 상속은 타입계층을 구조화하기 위해 사용해야한다.
상속을 통해 타입 계층을 구조화하여 다형성을 구현하는 방법에 대해 알아보자.
in Programming on Java
상속 : 부모클래스와 자식클래스를 연결해서 부모 클래스의 코드를 재사용. is-a 관계. 의존성이 컴파일 타임에 해결됨. 정적인 관계.
합성 : 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용. has0a 관계. 의존성이 런타임에 해결됨. 동적인 관계
in Programming on Java
유연한 설계
in Programming on Java
잘 설계된 객체지향 어플리케이션은 작고 응집도높은 객체들로 구성된다. 때문에 객체들간 협력은 필수적이다. 협력하기 위해서는 객체끼리 서로 어떤 기능인지 알고있어야한다. 이런 다른 객체에 대한 지식은 객체간 의존성을 낳는다.
협력을 위해서는 의존성이 필수적이지만 과도한 의존성은 유지보수를 어렵게 만든다.
따라서 객체지향의 핵심은 필요한 의존성은 유지하고 변경을 방해하는 의존성은 제거하는것이다.
충분히 협력적이면서 변경을 방해하지않는 유연한 객체를 만ㄷ르기 위한 의존성 관리 방법을 알아보자.
in Programming on Java
불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업을 추사오하라고 한다.
큰 문제를 해결 가능한 작은 문제로 나누는 작업을 분해라고 한다.
in Programming on Java
객체지향 애플리케이션의 가장 중요한 재료는 객체들이 주고받는 메시지이다.
즉 추상화한 뒤 public method로 공개하여 협력을 위해 서로 호출하는 기능들이 주인공이라는 뜻이다.
in Programming on Java
책임을 할당할때는 두가지 원칙을 따라야함
in Programming on Spring
Lombok의 @Data가 @Builder가 어떤 코드를 알아서 선언해주는지 알아보자