다형성(Polymorphism)
은 한 객체가 여러 가지(poly) 모습(morph) 을 갖는다는 것을 의미한다. 여기서 모습이란 타입을 뜻하는데, 즉 다형성이란 한 객체가 여러 타입을 가질 수 있다는 것을 뜻한다.
추상화(abstraction)
는 데이터나 프로세스 등을 의미가 비슷한 개념이나 표현으로 정의하는 과정이다. 추상화된 타입은 오퍼레이션의 시그너처만 정의할 뿐 실제 구현을 제공하지는 못한다. 단지 의미만 제공할 뿐이다.
알고리즘이 바뀌거나 데이터를 읽고 쓰는 대상이 바뀌더라도 제어의 역할을 하는 상위 수준의 로직은 바뀌지 않고 재사용되므로, 재사용의 중요성으로 봤을 때 하위 수준의 상세 구현보다는 변하지 않는 상위 수준의 로직을 재사용할 수 있도록 설계하는 것이 더 중요하다.