경주장
11장 합성과 유연한 설계 본문
상속 관계는 is-a 관계라고 부르고 합성 관계는 has-a 관계라고 부른다.
처음 해당 용어를 들었을 때에는 헷갈리고 와닿지 않았는데 책을 읽다보니 조금 정리가 되는 듯 하다.
상속 관계는 1대1로 발생하며 부모와 자식의 관계가 strict하게 딱 정해지는 효과가 있어 "is-a"와 같은 단정적인 표현이 어울리고
합성 관계는 1대 다로 발생하며 표현 자체도 딱 composite하게 인자로서 "has a"하는 느낌이 나는 듯 하다. 그리고 "has a" 는 "is a"보다는 아무래도 더 유연한 느낌이 든다.
상속 - 클래스 사이의 정적인 관계
합성 - 객체 사이의 동적인 관계 - 즉, 런타임에 동적으로 변경 할 수 있다.
상속을 합성으로 바꾸면 상속이 초래하는 세 가지 문제점을 해결 할 수 있다.
상속에서의 Vector와 Stack의 관계 - "나는 Vector의 기능을 확장해서 Stack을 만들거야"
합성에서의 Vector와 Stack의 관계 - "나는 Vector의 기능을 일부만 활용하는 방식으로 Stack을 만들거야"
위와 같은 경우
합성관계가 더 적절한 구현 방식이라는 것을 알 수 있다.
상속관계에서의 클래스 폭발 문제 해결
믹스인 - 추상 서브 클래스
'기술서적 > 오브젝트' 카테고리의 다른 글
12장 다형성 (0) | 2021.09.06 |
---|---|
10장 상속과 코드 재사용 1. 상속과 중복코드 (0) | 2021.09.04 |
9장 유연한 설계 (0) | 2021.09.03 |
8장 의존성 관리하기 02 유연한 설계 (0) | 2021.09.03 |
8장 의존성 관리하기 01 - 의존성 (0) | 2021.09.03 |