구성 및 집계
클래스와 개체는 서로 관련될 수 있습니다. 상속은 "IS A" 관계를 설명합니다. 사자는 동물입니다. 이 관계는 상속을 사용하여 쉽게 표현되며, 여기서
Animal
부모 클래스는
Lion
자식 클래스가 됩니다. 그러나 세상의 모든 관계가 이런 식으로 적절하게 설명되는 것은 아닙니다. 예를 들어 키보드는 확실히 컴퓨터와 어떤 관계가 있지만
컴퓨터는 아닙니다 . 손은 사람과 어떤 관계가 있지만 사람이 아닙니다. 이러한 경우는 "IS A"가 아니라 "HAS A"라는 다른 유형의 관계를 나타냅니다. 손은 사람이 아니지만 사람에게는 손이 있습니다. 키보드는 컴퓨터가 아니지만 컴퓨터에는 키보드가 있습니다. "하스 A"
. 이러한 개념의 차이점은 관계의 "엄격성"에 있습니다. 간단한 예를 들어 보겠습니다
Car
. . 모든 자동차에는 엔진이 있습니다. 또한 모든 차량은 승객을 태울 수 있습니다.
Engine engine
및 필드 의 근본적인 차이점은 무엇입니까
Passenger[] passengers
? 승객이 차 안에 앉아 있다고 해서 승객 도 차 안에 있을 수 없다는
A
의미는 아닙니다 . 한 대의 차량은 여러 승객을 수용할 수 있습니다. 또한 모든 승객이 차에서 내릴 수 있지만 차는 계속 원활하게 작동합니다. 클래스와 배열 간의 관계는 덜 엄격합니다.
집계 라고 합니다 . 다음은 이 주제에 대한 좋은 기사입니다.
클래스(객체) 간의 관계B
C
Car
Passenger[] passengers
. 집계의 또 다른 좋은 예를 제공합니다.
Student
학생을 나타내는 클래스와
StudentGroup
학생 그룹을 나타내는 클래스가 있다고 가정해 보겠습니다 . 학생은 물리학 클럽, 스타워즈 학생 팬 클럽 또는 코미디 클럽의 회원이 될 수 있습니다.
구성은 더 엄격한 유형의 관계입니다. 컴포지션을 사용할 때 객체는 다른 객체를 가지지만 동일한 유형의 다른 객체에 속할 수 없습니다. 가장 간단한 예는 자동차 엔진입니다. 자동차에 엔진이 있으면 그 엔진은 다른 자동차에 속할 수 없습니다. 보시다시피 그 관계는
Car
및 의 관계보다 훨씬 더 엄격합니다
Passengers
.
GO TO FULL VERSION