• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

인터페이스를 쓰는 근본적인 이유

21.10.16 03:59 작성 조회수 297

0

안녕하세요 강사님

강의를 듣다가 의문이 생겼습니다

 

약간 혹은 상당히 일반적인 질문이 될 것 같은데요

 

왜 인터페이스를 써서 Complete()이라는 함수를 PlayerScript에서 구현을 해야 하는 건가요?

강사님 설명을 듣고 이해는 됐는데 다른 한쪽으로는 그냥 저 Complete()라는 함수를 바로  PlayerScript 클래스에 구현을 해주면 안되는건가요?

아니면 기능별로 클래스를 나눠야 한다는 OOP의 기본 개념 때문에 쓰는 건가요?

답변 1

답변을 작성해보세요.

0

플레이어 스크립트에서 인터페이스 상속을 통해서 구현이 되어 있습니다. 

그런데 어디선가 실행해주는 것을 확인해보기 위해서 IAdManager 라는 것을 직접 작성해서 확인해본 것입니다. 플레이어 안에 IAdManager 의 기능을 넣고 설명하면 더 혼돈이 올수 있기 때문에 이렇게 만든 것입니다. 

인터페이스가 실행되는 것은 구조가 딜리게이트와 같습니다만 문법이 다릅니다. 

어딘가에서 실행해주는 기능을 구현하였을때 사실 이 강의에서 볼수 있는 IAdManager 라는 클래스는 외부에 노출되어 있지 않게 됩니다. 

저희 광고도 마찬가지로 구현이 되어 있는데 저희가 알수있는것은 인터페이스의 이름과 그것이 지원하는 함수입니다. 

다음강의를 보시면 이해하기 쉬울텐데요. 

어딘가에서 실행해주는 기능이 있는데  그것의 소스코드는 알리고 싶지 않고 게임개발자에게는 완료가 된 상황(광고가 끝난상황) 취소가 된 상황만을 알리고 싶습니다. 

그렇기 때문에 저희는 IUnityAdsListener 라는 인터페이스를 상속받아서 사용합니다. 인터페이스 상속과 실제상속이 완전히 다른의미입니다. 그리고 유니티에서는 IUnityAdsListener 라는 인터페이스만 미리 만들어놓으면 됩니다. 실제 함수가 실행되는 것은 광고기능의 어딘가에 있겠죠. 그것조차 게임개발자는 알필요가 없다는 것입니다.   

인터페이스의 뜻이 접속이라는 뜻이죠. 

저희의 클래스와 광고클래스를 서로 접속 시킨다는 의미로 이해하시면 더 쉬울 것입니다. 

감사합니다.