새소식

반응형
Study/오브젝트

[Object] 11장 : 합성과 유연한 설계

  • -
반응형

상속과 합성은 객체지향 프로그래밍에서 가장 널리 사용되는 코드 재사용 기법이다. 

  • 상속이 부모 클래스와 자식 클래스를 연결해서 부모 클래스의 코드를 재사용(is-a관계)
  • 합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용 (has-a관계)

합성은 구현에 의존하지 않는다는 점에서 상속과 다르다.

합성은 내부에 포함되는 객체의 구현이 아닌 퍼블릭 인터페이스에 의존한다. 

합성 관계는 객체 사이의 동적인 관계다.

 

상속으로 인한 조합의 폭발적인 증가

출처:https://jaehun2841.github.io/2020/07/11/object-chapter11/

기본정책과 부가정책이 있는 경우 

기본 정책이 추가되는 경우에 기존에 만들어진 하나의 쌍이 하나 더 만들어지면 되겠지만..

만약 부가정책이 추가된다면 엄청나게 많은 조합이 생겨나게 될 것이다

이를 클래스 폭발(class explosion) 문제 또는 조합의 폭발(combinational explosion) 문제라고 부른다. 

클래스 폭발 문제는 자식 클래스가 부모 클래스의 구현에 강하게 결합되도록 강요하는 상속의 근본적인 한계 때문에 발생하는 문제다.

 

합성 관계로 변경하기

상속 관계는 컴파일타임에 결정되고 고정-코드를 실행하는 도중에는 변경 불가

합성은 컴파일타임 관계를 런타임 관계로 변경 

요구 사항이 추가되더라도 깔끔하게 하나의 클래스만 수정하면 된다. 

 

반응형

'Study > 오브젝트' 카테고리의 다른 글

[Object] 12장 : 다형성  (0) 2025.02.20
[Object] 10장 : 상속과 코드 재사용  (5) 2024.10.06
[Object] 9장 : 유연한 설계  (0) 2024.08.26
[Object] 8장 : 의존성 관리하기  (0) 2024.08.21
[Object] 7장 : 객체 분해  (0) 2024.08.13
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.