조립 구현 2가지
다른 클래스의 기능을 사용하고 싶을 때, 2가지 방법이 있다.
상속 관계, 포함 관계가 있는데 각각의 사용법과 차이점을 정리해보았다.
1. 상속 관계로 구현
구체화를 시킬 때, 구체화된 클래스도 같이 추가된다.
class C_CHILD : public C_PARENT
{
};
예시) 기존에 (A 몬스터)가 있다. (B 몬스터), (C 몬스터)가 기획적으로 추가된다.
-> (몬스터를 상속받는 B 클래스), (몬스터를 상속받는 C 클래스)를 추가해야 한다.
// 기존
class AAA : public C_MONSTER // 몬스터 클래스에는 기본적인 정보들이 들어있다고 가정.
{
};
// 추가된다면...
class BBB : public C_MONSTER // BBB 클래스 생성
{
};
class CCC : public C_MONSTER // CCC 클래스 생성
{
};
2. 포함 관계로 구현
구체화를 시킬 때, 멤버 변수를 바꾸면 된다.
class C_CHILD
{
private:
C_PARENT m_cParent;
};
예시) 기존에 (A 몬스터)가 있다. (B 몬스터), (C 몬스터)가 기획적으로 추가된다.
-> 몬스터 객체를 2개 더 선언하고, 멤버 변수의 값을 바꾼다.
// 기존
class C_MONSTER
{
private:
C_INFO m_cInfo; // 기본적인 정보들이 있는 클래스라고 가정. ex) name=AAA
}
// 추가된다면...
class C_MONSTER
{
private:
C_INFO m_cInfo; // 객체 선언하고 여기 부분만 수정. ex) name=BBB, name=CCC
}
상황 예시
기획 : 몬스터가 10마리로 정해져있고, 기껏 추가해봤자 1~2마리 추가됩니다.
-> 상속으로 관리하는 게 직관적이고 더 편할듯.
기획 : 몬스터가 100마리이고, 업데이트 때마다 계속 추가됩니다.
-> 포함으로 만드는 게 정신건강에 이로울 듯. (상속으로 만들면 몬스터 클래스 갯수만 100개 넘어감.)
'기타 > C++' 카테고리의 다른 글
[C++] 상속에 대해서 (0) | 2021.01.17 |
---|---|
[C++] 복사 생성자에 대해서 (2) | 2020.12.24 |
[C++] 메모리 관리, 누수잡기 (0) | 2020.12.23 |
[C++] 참조자 (reference), 포인터와의 차이 (0) | 2020.12.23 |
[C++] 동적 할당과 메모리 해제 (0) | 2020.12.17 |