daisy0461 2023. 12. 27. 22:22

Interface

  • 객체가 반드시 구현해야할 행동을 지정하는데 활용되는 타입
  • 다형성의 구현과 의존성 분리 설계에 유용하게 활용된다.

Unreal에서 Interface 예시

  1. World에 배치되는 모든 오브젝트 -> Actor
  2. 움직이는 오브젝트 -> Pawn - 즉, Pawn은 Actor 중에 Pawn으로서 움직임을 구현해야한다.
  3. Pawn은 INavAgnentInterface를 통해 길찾기 시스템이 구현되어야 한다.

구현될 때 예시

  1. Person 안에 Student, Staff, Teacher가 있다.
  2. Student와 Teacher는 수업에 반드시 참여해야하며, Staff는 참여가 불가하다.
  3. 그렇다면 Student와 Teacher는 Lesson Inteface를 통해 수업과 관련된 내용을 작성해주면 된다.
  4. 수업에 참여 가능한지 알아내기 위해서 Cast<ILesson>을 통해 알 수 있다. 불가하면 Cast 시 null값을 반환한다.
    생각보다 개발을 진행하며 Cast를 자주 사용한 기억이 있다.

Unreal C++ Interface

  • U로 시작하는 타입 클래스: 클래스 타입정보를 제공하는 클래스 (우리가 크게 건들이지 않음)
  • I로 시작하는 인터페티스 클래스: 실질적인 설계 및 구현을 할 때 사용하는 클래스

Interface 주의사항

  1. 클래스 정보에 대해서 단일 상속만 지원하기 때문에 다른 것을 상속받고 있을 경우 Interface와 관련해서 Super를 사용해서 Interface의 함수를 불러올 수 없다.
  2. 추상타입( = 0;)으로 강제되지 않고 구현을 해서 사용해도 무관하다. 다만 객체지향과 멀어질 뿐이다.