2013-05-02 1 views
2

차 클래스와 페인트 클래스 (다른 색상으로 구성)가 있다고 가정 해 보겠습니다. 이제 객체 지향 디자인의 관점에서이 두 클래스 사이의 관계가 될 수있는 것은 컴포지션 또는 집계입니다. 처음에는 컴포지션이 될 것이라고 생각했는데 차 클래스가 파괴 되더라도 페인트는 독립적으로 존재할 수 있기 때문에 집계가 될 것이라고 생각했습니다. 내가 여기서 생각하고 있니?컴포지션 대 집계

+0

[집계 대 작곡] 가능한 복제본 (http://stackoverflow.com/questions/734891/aggregation-versus-composition) – nawfal

답변

1

귀하의 모델 컨텍스트에 따라 다릅니다. Paint 클래스가 구체적으로 나타내는 것은 무엇입니까? "그 차에 특정한 페인트 작업"인가요? 그렇다면 부분은이고 그 차는 작곡으로 간주됩니다. 독립 개념으로서 페인트이고 인스턴스가 인 경우 여러 자동차에 적용 할 수있는 경우 에는 - 페인트 인스턴스가 있으며 집계로 간주됩니다.

+0

아주 좋은 설명 – SomeWittyUsername

0

귀하의 예는 다소 어색하지만 질문하시는 질문은 답변을 얻으려면 정확히 대답해야합니다. 아무도 당신의 시스템에 맞는 대답을 할 수는 없습니다.

예를 들어, 적용된 페인트에 대해 실제로 말하고있는 경우 컴포지션입니다. 이는 수령인 (예 : 자동차)없이 페인트를 재사용/재사용/가질 수 없기 때문입니다. 또한 시스템에 독립적 인 페인트 객체를 사용하지 않는 경우 컴포지션이어야합니다.

반면 페인트가 스프레이 컨테이너 인 경우 자동차 개념이 없으면 매우 많이 존재할 수 있으며 다른 자동차에도 적용 할 수 있습니다. 자동차와 페인트 사이에 밀접한 관계가 없기 때문에 페인트가 실제로 자동차의 기능에 영향을하지 않습니다 제거하면

그것은 상황에 따라 달라
0

, 그것은

그러나 경우, IMO 집계 것 당신은 자동차와 엔진 사이의 관계를 생각하고 엔진을 제거하면 자동차가 움직일 수 없습니다. 그래서 이것은 구성이 될 것입니다.