막뇌 2023. 6. 27. 02:04

포함 관계는 상속 관계와 같이 클래스 간에 관계를 설정하는 방법 중 하나입니다.

 

어떤 객체가 다른 객체를 포함하고 있다면 그 관계를 포함(Containment) 이라 합니다.

 

포함과 상속의 구분

포함과 상속은 비슷하면서도 다릅니다. 본질적으로 다른 객체의 맴버를 편하게 가져오기 위해 만든 개념입니다.

 

포함은 Has 관계다. A가 B를 가지고 있다면 포함을 사용합니다.

상속은 Is 관계입니다. A가 B라면 상속을 사용합니다.

 

예를 몇가지 실생활에서 들어 보겠습니다..

 

컴퓨터와 CPU는 포함 관계 입니다.

마우스와 스위치는 포함관계 입니다.

인간과 동물은 상속 관계 입니다.

파인애플과 과일은 상속 관계 입니다.

콜오브듀티와 게임은 상속 관계 입니다.

자동차와 엔진은 포함 관계입니다.

 

다르게 표현하자면 

A가 B라는 카테고리의 한 종류 일 경우 상속입니다.

A가 B라는 객체를 부품으로 가지고 있을 경우 포함입니다.

 

포함은 어떻게 사용할 수 있을까요?

객체 자체를 맴버로 사용하는 것입니다.

 

#include "부품객체"

class 포함을사용하는객체
{
public:
//맴버
private:
//맴버
protected:
부품객체 맴버변수1;
부품객체 맴버변수2;
};

포함을 사용하는 객체의 헤더파일 모양새입니다.

위와같은 모양을 취함으로서 부품객체를 타입으로 하는 맴버변수를 가지게 되는것입니다.

해당 맴버변수 1, 맴버변수2는 부품의 객체이므로 당연히 해당 객체가 가지고 있는 맴버 함수, 맴버변수 모두 가지고 있게 됩니다.

 

부품 객체를 맴버로 가지게 됨으로서 별도로 명시하지 않아도 위 객체의 구현파일에서 맴버함수를 정의하는데에 부품 객체를 사용할 수 있게 됩니다.