인터페이스

· Game/Unreal
상속과 인터페이스 상속과 인터페이스의 공통점은 다형성이다. 상속은 자주 사용하지만 인터페이스는 자주 사용하지 않았다. 프로젝트를 진행하던 중 적절한 사용상황을 발견하여 기록한다. 프로젝트 중, NPC와 Drop Item 모두 캐릭터와 상호작용하는 경우가 있다. NPC는 대화를 통해 퀘스트를 주고, Drop Item은 Inventory에 Item을 추가한다. 둘 다, 상호작용하는 Actor이기 때문에 하나의 부모를 가지고 Interact 함수를 구현한 뒤 상속받게 하였다. 하지만, NPC를 구현하다 문제가 발생했다. 올바르게 동작하지만, 원하지 않는 상속이 이루어지게 되는 문제였다. 예를 들어, 부모 클래스인 InteractiveActor에서 Item에 관한 정보를 가지고 있다고 가정했을 때, NPC는 I..
컴파일 의존성을 최소화하는 작업의 배경이 되는 가장 기본적인 아이디어는 정의 대신에 선언에 의존하게 만드는 것이다. 이러한 방법으로는 핸들클래스와 인터페이스 클래스이다. 라이브러리 헤더는 그 자체로 모든 것을 갖추어야 하며 선언부만 갖고 있는 형태여야 한다. 이 규칙은 템플릿의 여부와 관계없이 동일하게 적용해야 한다. 파일 사이의 컴파일 의존성을 최대로 줄이자 C++은 헤더와 구현부를 두 파일로 분리하여 구현하는 것이 일반적이다. 프로그램의 규모가 커지면 여러 개의 파일이 존재할 것이다. 그러다 보면 파일들 사이의 컴파일 의존성이 올라가 빌드 속도도 느려지고 에러가 발생할 여지가 생긴다. class Person { public: Person(const std::string& name, const Date..
좋은 인터페이스는 제대로 쓰기엔 쉽고 틀리게 쓰기엔 어렵다. 인터페이스를 만들 때는 이 특성을 지닐 수 있도록 고민해야 한다. 사용자의 실수를 방지하는 방법으로는 새로운 타입 만들기, 타입에 대한 연산 제한, 객체의 값에 대해 제약 걸기, 자원 관리 작업을 사용자 책임으로 놓지 않기가 있다. 인터페이스의 올바른 사용을 이끄는 방법으로는 인터페이스 사이의 일관성 잡아주기, 기본 제공 타입과의 동작 호환성 유지하기가 있다. tr1::shared_ptr은 사용자 정의 삭제자를 지원한다. 이 특징 때문에 tr1::shared_ptr은 교차 DLL 문제를 막아 주며, 뮤텍스 등을 자동으로 잠금 해제하는 데 사용할 수 있다. 인터페이스는 제대로 쓰기엔 쉽게, 틀리게 쓰기엔 어렵게 C++에서 인터페이스의 활용도는 매..
· Kotlin
Inheritance 객체지향적인 언어의 장점 중 하나는 바로 상속이다. 코틀린에서의 상속을 알아보자. 코틀린의 최상의 클래스는 Any이다. 클래스에 상위 타입을 선언하지 않으면 Any가 상속된다. class Ex1 //암시적 Any상속 class Ex2: Any() //명시적 Any상속 Any는 java에서 Object와 비슷해 보이지만 조금 다르다. equals(), hashCode(), toString()만 존재한다. 상속을 해줄 클래스가 open을 해줘야 상속이 가능하다. 또한 부모 클래스에 기본 생성자가 있다면 호출하여 초기화 가능하다. 코틀린에서 클래스는 기본적으로 final이다. 따라서 상속을 원한다면 open을 반드시 적어야 한다. open class parent(firstName: Str..
hvv_an
'인터페이스' 태그의 글 목록