[Effective C++] "has-a" 혹은 "is-implemented in terms of"(~는 ~를 써서 구현됨)를 모형화할 때는 객체 합성을 사용하자
항목 38 : "has-a" 혹은 "is-implemented in terms of"(~는 ~를 써서 구현됨)를 모형화할 때는 객체 합성을 사용하자
- 소프트웨어 개발에서 영역(domain)은 두 가지로 나뉜다. 사람, 이동수단 등 실제 사물을 본 따서 만든 객체를 응용 영역(application domain), 버퍼, 뮤텍스, 탐색 트리 등 순수하게 시스템 구현만을 위한 인공물들을 구현 영역(implementation domain)에 속해있다고 부른다. 여기서 객체 합성이 응용 영역의 객체들 사이에서 일어나면 has-a 관계이다. 반면 구현 영역에서 일어나면 그 객체 합성의 의미는 (is-implemented-in-terms-of) 관계를 나타낸다.
- 써서 구현되는 관계(is implemented in terms of) 형태의 설계 -> 특정 파생클래스와 기반클래스가 is-a 관계가 아니지만, 파생클래스는 기반 클래스의 기능을 활용해서 구현된 것
댓글
댓글 쓰기