Removal of Polymorphism in Object-Oriented Software

객체 지향 소프트웨어의 다형성 제거 알고리즘

  • 조영석 (동국대학교 전자계산학과)
  • Published : 1998.10.01

Abstract

상속은 객체 지향 원리에서 만의 특성으로 추상화 레벨을 높여주고, 소프트웨어의 재사용을 강력히 지원하며, 대체 원리를 따른다. 또한 유지 보수의 용이성, 신뢰성등의 잇점을 제공한다. 그러나 측정 결과에 따르면 상속 계층이 깊어질수록 재사용이 어렵다고 조사되었으며 이는 재사용뿐아니라 개발에 있어서도 장애의 요인이 된다. 상속의 깊이를 최소화하기 위해서는 우선 상속 계층에서 직접적, 또는 간접적으로 사용되는 instance variable과 method만을 제외하고는 모두 삭제되어야 한다. 그러나, 다형성이 적용된 클래스는 정적(static) 분석이 불가능하므로 다형성을 제거하되, 다형성이 적용되었을 때와 동일한 모든 state, 기능 및 동작이 유지된 상태에서 처리되어야 한다. 다형성이 제거될 때 구현의 세부 사항은 변경하지 않음으로써 black box의 이점을 살린다. 다중상속의 경우는 각각의 상속 경로에 대하여 동일한 처리를 반복 수행하여 결과를 얻을 수 있으며, instance variable과 method의 access 레벨에 따라 처리 방법이 조금씩 달라진다. 본 논문에서는 C++에서의 다형성과 불필요한 instance variable과 method의 제거알고리즘에 대하여 논한다.

Keywords