GameStudy489 Ch 09. 델리게이트 9.1 느슨한 결합 9.1-1 강한 결합과 느슨한 결합 - 강한 결합(Tight Coupling) 클래스들이 서로 의존성을 가지는 경우. ex. Card 클래스가 없다면 Person 클래스가 만들어 질 수 없는 경우 Person 클래스는 Card 클래스에 대한 의존성을 가진다고 함. - 느슨한 결합(Loose Coupling) 실물에 의존하지 말고 추상적 설계에 의존하라.(DIP 원칙) ex. Person은 왜 Card가 필요한가? 출입을 확인해야 하기 때문. 출입에 관련된 추상적인 설계를 만들어보자. ICheck를 상속 받은 새로운 카드 인터페이스를 통해 해결하고자 함. 나중에 새로운 Card 클래스가 생성되도, ICheck 인터페이스를 상속 받는 방식. - 이러한 느슨한 결합 구조는 유지 보수를 손쉽.. 2023. 5. 12. Ch 08. 컴포지션 8.1 컴포지션 8.1-1 컴포지션 개요 - 개체 지향 설계에서 상속이 가진 Is-A 관계만 의존해서는 설계와 유지보수가 어려움. 상속의 깊이가 길고, 최상위 부모 클래스의 코드가 변경되면 그 하위 모든 자식 클래스가 영향을 받기 때문. - 컴포지션은 개체 지향 설계에서 Has-A 관계를 구현하는 설계 방법. 복잡한 기능을 가져야 하는 클래스를 효과적으로 설계하는데 유용함. - 모던 개체 설계 기법의 핵심은 상속을 단순화하고, 단순한 기능을 가진 개체를 조합해서 복잡한 개체를 구성하는 것. 그래서 컴포지션은 아주 중요함. 8.1-2 언리얼 엔진에서의 컴포지션 구현 방법 - 하나의 언리얼 오브젝트에는 항상 클래스 기본 오브젝트가 있음. - 언리얼 오브젝트 간의 컴포지션은 어떻게 구현할 것인가? CDO에 미.. 2023. 5. 11. Ch 07. 언리얼 인터페이스 7.1 언리얼 인터페이스 7.1-1 언리얼 C++ 인터페이스 개요 - 인터페이스란 객체가 반드시 구현해야 할 행동을 지정하는데 활용되는 타입 다형성(Polymorphism)의 구현, 의존성이 분리된(Decouple) 설계에 유용하게 활용됨. - 언리얼 엔진에서 게임 컨텐츠를 구성하는 오브젝트의 설계 예시 월드에 배치되는 모든 오브젝트(안움직이는 Actor, 움직이는 Pawn을 포함하는 상위개념) ex. 길찾기 시스템을 반드시 사용하면서 움직이는 오브젝트를 구현하고자 한다면 INavAgentInterface 인터페이스를 구현한 Pawn을 설계해야함. 7.1-2 언리얼 C++ 인터페이스의 특징 - 인터페이스를 생성하면 두 개의 클래스가 생성됨. U로 시작하는 타입 클래스/I로 시작하는 인터페이스 클래스 - .. 2023. 5. 11. Ch 06. 언리얼 리플렉션 2 6.1 언리얼 리플렉션 시스템 예제 확장 6.1-1 Person 클래스, Student 클래스, Teacher 클래스 - 새 C++ 클래스 > UObject 부모 클래스 > Person/Student/Teacher 클래스 생성 // Person.h #pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "Person.generated.h" UCLASS() class OBJECTREFLECTION_API UPerson : public UObject { GENERATED_BODY() public: UPerson(); UFUNCTION() virtual void DoLesson(); const FString& GetNa.. 2023. 5. 10. 이전 1 ··· 12 13 14 15 16 17 18 ··· 123 다음