차 클래스와 페인트 클래스 (다른 색상으로 구성)가 있다고 가정 해 보겠습니다. 이제 객체 지향 디자인의 관점에서이 두 클래스 사이의 관계가 될 수있는 것은 컴포지션 또는 집계입니다. 처음에는 컴포지션이 될 것이라고 생각했는데 차 클래스가 파괴 되더라도 페인트는 독립적으로 존재할 수 있기 때문에 집계가 될 것이라고 생각했습니다. 내가 여기서 생각하고 있니?컴포지션 대 집계
답변
귀하의 모델 컨텍스트에 따라 다릅니다. Paint 클래스가 구체적으로 나타내는 것은 무엇입니까? "그 차에 특정한 페인트 작업"인가요? 그렇다면 부분은이고 그 차는 작곡으로 간주됩니다. 독립 개념으로서 페인트이고 인스턴스가 인 경우 여러 자동차에 적용 할 수있는 경우 에는 - 페인트 인스턴스가 있으며 집계로 간주됩니다.
아주 좋은 설명 – SomeWittyUsername
귀하의 예는 다소 어색하지만 질문하시는 질문은 답변을 얻으려면 정확히 대답해야합니다. 아무도 당신의 시스템에 맞는 대답을 할 수는 없습니다.
예를 들어, 적용된 페인트에 대해 실제로 말하고있는 경우 컴포지션입니다. 이는 수령인 (예 : 자동차)없이 페인트를 재사용/재사용/가질 수 없기 때문입니다. 또한 시스템에 독립적 인 페인트 객체를 사용하지 않는 경우 컴포지션이어야합니다.
반면 페인트가 스프레이 컨테이너 인 경우 자동차 개념이 없으면 매우 많이 존재할 수 있으며 다른 자동차에도 적용 할 수 있습니다. 자동차와 페인트 사이에 밀접한 관계가 없기 때문에 페인트가 실제로 자동차의 기능에 영향을하지 않습니다 제거하면
그것은 상황에 따라 달라, 그것은
그러나 경우, IMO 집계 것 당신은 자동차와 엔진 사이의 관계를 생각하고 엔진을 제거하면 자동차가 움직일 수 없습니다. 그래서 이것은 구성이 될 것입니다.
- 1. 개체 대 집계 대 집계
- 2. 컴포지션 대 상속 종속성 삽입
- 3. 컴포지션 대 상속. 나는 어디로 잘못 갔는가?
- 4. 클래스 확장시 성능 컴포지션 대 다형성
- 5. JAX-RS 응답의 유틸리티 대 컴포지션 대 상
- 6. C++ 템플릿 대 집계
- 7. 인터페이스와 컴포지션
- 8. DDD 집계 대 GoF의 외관
- 9. MySQL 대 MongoDB 집계 성능
- 10. PSQL 그룹 대 집계 속도
- 11. 집계 대 합계 성능 LINQ
- 12. 컴포지션 대 객체에 대한 단일 인스턴스 만들기 SomeClass(). someMethod() performance
- 13. 컴포지션 관계가있는 클래스 정의
- 14. 하위보기 Durandal을 사용하여 컴포지션
- 15. 코어 데이터 + 컴포지션 아키텍처
- 16. 컴포지션 클래스의 캡슐화 C++
- 17. 루비에서 컴포지션 사용
- 18. 상속 대신에 컴포지션 사용
- 19. 추상 클래스와 컴포지션 관계
- 20. 컴포지션 관계의 다중성
- 21. 컴포지션 객체를 노출해야합니까?
- 22. 추상 클래스 간의 컴포지션
- 23. MEF 컴포지션 재정의
- 24. JavaScript 및 컴포지션
- 25. 컴포지션 관계의 변수 처리
- 26. 생성자가 컴포지션 호출
- 27. 클래스 다이어그램 컴포지션 관계
- 28. C++ 컴포지션 모범 사례
- 29. Linq 효율성 질문 - foreach 대 집계
- 30. 여러 필터 집계 대 모든 버킷 반환
[집계 대 작곡] 가능한 복제본 (http://stackoverflow.com/questions/734891/aggregation-versus-composition) – nawfal