객체 지향 프로그래밍은 소프트웨어 개발에 사용되는 일반적인 패러다임입니다. 객체는 클래스에 의해 생성 된 클래스의 인스턴스입니다. 개체는 링크를 통해 서로 공동으로 작업합니다. 링크는 객체 간의 물리적 및 개념적 연결입니다. 유사한 구조 및 의미를 갖는 링크들의 집합은 연관 으로서 기술된다.
비교 차트
비교 근거 | 집합 | 구성 |
---|---|---|
기본 | 집단적으로 볼 때 아이가 부모와 독립적으로 존재할 수있는 관계가있다. | 구성에서 부모는 독립적으로 존재할 수 없습니다. |
관계 유형 | "있다" | "부분의" |
연결 유형 | 약한 협회 | 강력한 연관성 |
UML 디자인 심볼 | 어셈블리 클래스 옆에 속이 빈 다이아몬드로 표시됩니다. | 어셈블리 클래스 옆에 단단한 다이아몬드로 표시됩니다. |
기능 | 조립품의 삭제는 부품에 영향을 미치지 않습니다. | 소유 클래스 객체가 삭제되면 포함하는 클래스 객체에 큰 영향을 미칠 수 있습니다. |
집계의 정의
집계 는 구성 클래스에 대한 어셈블리 클래스와의 관계로 정의 될 수 있습니다. 두 객체 간의 관계는 UML (Unified Modeling Language)로 선분을 그려 표현할 수 있습니다.
예를 들어 자동차는 바퀴, 엔진, 기어 박스, 스티어링, 본체 등으로 구성됩니다. 자동차는 조립품이며 다른 부품은 구성품입니다. 바퀴 바퀴는 하나의 집합체이며, 자동차 엔진은 또 다른 집합체입니다. 각 개별 페어링은 어셈블리의 각 구성 요소의 다중성을 결과로 표시하도록 정의되며 객체 수를 나타낼 수도 있습니다.
집계는 개체간에 " 유형 " 관계를 설명하는 연결 유형입니다. 예를 들어 자동차에는 "기어 박스가 있고"자동차에는 "엔진이 있습니다. 일대 다 관계의 경우, 예를 들어 자동차에 "많은"바퀴가 있습니다.
작곡의 정의
구성 은 또한 일종의 연관이지만보다 제한적인 형식입니다. 어셈블리 클래스에 인접한 작은 단단한 다이아몬드로 UML로 표현됩니다.
따라서 구성은 전체 구성 요소의 소유권을 나타냅니다. 이것은 궁극적으로 프로그래밍의 편리 성을 증가시킵니다. 컴포지션은 어셈블리 객체를 삭제하여 구성 객체의 삭제를 트리거 할 수 있습니다.
구성은 관계의 "부분"을 설명합니다. 예를 들어 잎은 나무의 일부이며, 나무가 파괴되면 나뭇잎을 파괴해야합니다.
집계와 구성의 주요 차이점
- 집합은 하위 엔티티와 상위 엔티티가 독립적으로 존재할 수있는 관계를 나타냅니다. 대조적으로, 구성시 하위 엔티티는 상위에 종속됩니다.
- 집계에는 "has a"관계가 있지만 구성에서는 어셈블리 및 구성 요소 클래스 객체간에 "부분"관계가 있습니다.
- 집합은 더 약한 연관성이 있지만 조합은 더 많은 제약이 있으므로 강력한 연관성이 있습니다.
- UML 디자인에서 집계는 속이 빈 다이아몬드로 표시됩니다. 대조적으로, 구성은 단단한 다이아몬드에 의해 그려진다.
결론
집계에서 구성 요소는 독립적으로 존재하며 집계 또는 집계에 공유되거나 재 할당 될 수 있습니다. 반면에 구성에서 구성 요소는 정확히 하나의 어셈블리 또는 집계에 속합니다. 또한, 집계가 작성 될 때 파트가 작성되고 집계가 파기 될 때 파트가 h 제됩니다.