그냥 게임개발자
컴포지션(Composition)이란? 본문
- 객체 지향 설계에서 상속이 가진 Is-A 관계만 의존해서는 설계와 유지보수가 어려움
- 컴포지션은 객체 지향 설계에서 Has-A 관계를 구현하는 설계 방법
- 컴포지션의 활용
- 복합적인 기능을 거대한 클래스를 효과적으로 설계하는데 유용하게 사용할 수 있음.
class Card
{
public:
Card(int InId) : Id(InId) {}
int Id = 0;
};
class Person
{
public:
Person(Card InCard) : IdCard(InCard) {}
protected:
Card IdCard;
};
상속
- 성질이 같은 부모 클래스와 자식 클래스의 관계를 의미
- Is - A
컴포지션
- 성질이 다른 두 객체에서 어떤 객체가 다른 객체를 소유하는 관계를 의미
- Has - A
언리얼 엔진에서의 컴포지션 구현 방법
- 방법 1 : CDO에 미리 언리얼 오브젝트를 생성해 조합. (필수적 포함)
- 방법 2 : CDO에 빈 포인터만 넣고 런타임에서 언리얼 오브젝트를 생성해 조합 (선택적 포함)
- 언리얼 오브젝트를 생성할 때 컴포지션 정보를 구축할 수 있다.
- 내가 소유한 언리얼 오브젝트를 Subobject라고 한다.
- 나를 소유한 언리얼 오브젝트를 Outer라고 한다.
그래서 서브오브젝트 필수적이냐, 선택적이냐에 따라서 방법은 달라진다.
'Unreal스터디' 카테고리의 다른 글
언리얼 Enum DisplayName과 String으로 가져오는 방법 (0) | 2024.01.01 |
---|---|
인터페이스란? (0) | 2024.01.01 |
Assert(어썰트) (0) | 2024.01.01 |
언리얼 오브젝트 처리 (1) | 2024.01.01 |
리플렉션 시스템이란? (0) | 2024.01.01 |