Taking baby-developer steps

[객체지향의 사실과 오해] 3. 타입과 추상화 - 5 타입의 계층, 일반화/특수화 본문

CS 지식/객체지향

[객체지향의 사실과 오해] 3. 타입과 추상화 - 5 타입의 계층, 일반화/특수화

Surin Lee 2023. 11. 18. 21:19

타입의 계층

 강아지는  꼬리를 흔들고 물을 마시고 산책을 한다. 골든 리트리버는 강아지의 행동에 더해 물을 보면 돌진해 들어가고, 사람이라면 모두 반기고, 입에 무언가 물고 다닌다. (객체를 결정하는 것은 행동이므로 행동 위주로 썼다) 골든 리트리버는 강아지이기도 하다. 골든 리트리버 타입의 외연(집합)은 강아지의 외연의 부분집합인 셈이다.  골든 리트리버는 강아지 보다 좀 더 특화된 행동을 하는 특수한 개념이다.  

일반화/특수화 관계(generalization / specialization)

 일반화와 특수화는 동시에 일어난다. 이 때 중요한 것은 일반화/특수화 관계 역시 객체의 "행동"에 의해 결정 된다. 일반화/특수화 관계가 성립하려면 한 타입이 다른 타입보다 더 특수하게/일반적으로 행동해야한다. 

 일반적인 타입은 특수한 타입에 비해 적은 행동을 가지고 외연의 크기(집합의 크기)는 더 크다. 특수한 타입은 일반적인 타입에 비해 더 많은 행동을 가진다. 단 일반적인 타입이 할 수 있는 모든 행동을 동일하게 할 수 있어야 한다.

 

슈퍼타입과 서브타입 (Supertype / Subtype)

 일반화/ 특수화 관계에 있는 타입들에 이름을 붙인 것. 더 일반적인 타입을 슈퍼타입,  더 특수한 타입을 서브타입이라고 한다. 위 예시로 보면 강아지가 슈퍼타입, 골든 리트리버가 서브타입이다. 서브타입은 슈퍼타입의 행위와 호환되기 때문에 서브타입은 슈퍼타입을 대체할 수 있어야한다. 예를 들어, "강아지는 매일 산책을 한다." 를 "골든 리트리버는 매일 산책을 한다"로 대체 할 수 있다.

 


참고문헌 : 객체지향의 사실과 오해

Comments