그냥 게임개발자

컴포지션(Composition)이란? 본문

Unreal스터디

컴포지션(Composition)이란?

sudoju 2024. 1. 1. 15:50
  • 객체 지향 설계에서 상속이 가진 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