본문 바로가기


Java

[OOP] 책임과 역할의 차이 그리고 타입의 구현 방법

객체지향 관련글을 보다가 책임과 역할의 개념이 나왔다.

 

책임은 객체가 해야할 행위를 나타내고 역할을 그 책임이 모여 가지게 되는 것이 역할인 것이다. 

조형호 작가님의 객체지향의 사실과 오해에서 보면 증언을 해야할 책임을 가진 증인 여기서 증언해야할 책임있고 그것을 하는 주체인 증인이 역할이 된다.

 

여기서 궁금한게 생겼다.

이상한 나라의 앨리스에서 재판이 열리고 여기서 트럼프 왕이 재판장인 역할을 맡는다.

트럼프가 있고 트럼트왕이있다. 그러면 트럼는 슈퍼타입(Super Type) 트럼프왕은 서브타입(Sub Type) 이다. 

그리고 트럼프왕은 '재판장' 이라는 역할을 가지고 있다. 개념적으로 이해는 가지만 결국 이걸 구현하려다 보니 궁금해졌다. 그럼 어떻게 구현하지? 타입과 역할의 차이는 뭐지 역할이 타입이 아니었을까!? 하고 말이다.

 

나 나름대로 내린 결론은 이렇다.

TrumpKing 으로 Trump 를 상속받고 Witness 를 구현하면 된다.

Witness 는 외부에 노출되는 인터페이스로 '증언하다' 라는 메세지를 받아서 책임을 수행할 수 있도록 구현 하면된다.

 

새로운 책인 Object 를 보면 이에 대한 의문이 조금 풀릴 수 있다고 생각한다.

 

끝!