집계와 컴포지션의 비유에 대해

개요



「집합」과 「컴포지션」의 차이에 대해서

- 디자인 패턴과 함께 배우기 - 객체 지향의 마음 을 읽고 있어 「집약」과 「컴포지션」의 차이에 대해서 쓰여져 있던 것이 신경이 쓰였으므로, 나름대로 간단하게 정리해 보았습니다.

정의



이 책은 '집합'과 '컴포지션'의 정의가 GoF와 UML에서 다르다는 것을 설명했다. 그 이유는 GoF가 UML 제정 이전에 기록된 것, 채용되고 있는 모델링 언어가 다른 것 같습니다. 이 기사에서는 현재 일반적으로 사용되는 UML의 정의에 따라 설명합니다.
또, 양자를 각각 다른 것에 비유하는 것이 아니라, 가능한 한 통일의 것에 비유해 보았습니다.

컴포지션



보유하고 있는 것이 보유하고 있는 것의 일부인 경우
P.29

이 책에서는 "차와 엔진"으로 비유됩니다.

구현 단계에서 A의 인스턴스가 생성됨과 동시에 B가 생성되고 A가 삭제될 때 B도 삭제됩니다. 이것으로부터, 「양자의 관계에 강한 결합이 있다」라고 말해집니다.



이것은 사원과 사원증의 관계로 생각하면 알기 쉬울까라고 생각했습니다.
사원이 입사함과 동시에 사원증이 발행되어 퇴직함과 동시에 파기됩니다.
사원증의 수명(생성에서 파기)은 독립적이라고 말할 수 없습니다.



집계



독립적으로 존재할 수 있는 콜렉션이 있는 경우
P.29

이곳은 공항과 비행기로 비유됩니다.

컴포지션과 같은 A와 B의 강한 연결은 없습니다.
B 인스턴스의 수명은 A 인스턴스에 묶이지 않습니다.



이것은 회사와 직원 간의 관계라고 생각했습니다.
어느 날 회사가 사라져도 직원은 다른 회사에서 직원이 될 수 있습니다.
(노동 시장에 있어서의 회사와 종업원이라고 하는 쪽이 전해지기 쉬울지도 모릅니다)



요약



실제 업무에서 '집약'과 '컴포지션'의 선택은 어느 단계에서 일어나는지 신경이 쓰여 조사하거나 생각하거나 한 내용을 기술하게 했습니다. 실장 단계에서 선택하는 일도 있을지도 모릅니다만, 예를 생각해 보았을 때에, 대체로 사양에 의해 정해지는 인상을 받았습니다. 실장으로 의식해 보면 또, 다른 인상을 얻을 수 있을지도 모르기 때문에 기대하고 있습니다.

좋은 웹페이지 즐겨찾기