• TOC

다형성

다형성이란?

하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미

  • 하위 구현에 의존하지 않도록
  • 책임을 잘 정의한다.

상속은 다형성인가?

의존이 역전되어 있다 하면 다형성이라 할 수 있다.

왜 다형성을 사용하는가?

확장성?

Standard Input/Output 을 사용하며 거기에 맞춰야만 하는 상황이 생김.
근데 다양한 기술이 나오며 이전에 있던 기술들이 쓸모없는 경우가 생김.

다양한 구현을 하나의 인터페이스로 한다.

Archive

코드/데이터

데이터는 힙에 저장한다.

코드/함수는 어디서 불러오는가 코드의 동작

ex) member.get 의 . 은 연산자다. 왼쪽에 속한 오른쪽의 무엇인가를 실행시킨다.

가상메서드, Virtual Function(C++, Pointer) 가상함수의 테이블에 어떠한 함수를 실행시킨다.

클래스의 속성을 정의할 때, 누가 사용하는 지 알아야 한다. 정의했는데, 안 쓰면 무쓸모잖아.

테스트 케이스는 각자의 책임을 적절하게 부여해 좋은 설계를 이끌어낼 수 있어야 한다.

어떤 객체에서 최단거리를 구한다. -> 최단거리를 구한다는 것은 만들어 졌는데 -> 상속을 하면 최단거리를 구하는 것을 실제 객체화되는 서브 클래스에게 위임을 한다. -> 바인딩이 되야한다면? 그걸 사용하는 클라이언트가 계속해서 변경되어야 한다. -> 합성을 사용하면 플러그인처럼 꽂아놓는 형태가 된다. -> 관리의 대상 자체가 상속을 하면 상속 대상을 다 관리를 해야 하지만 -> 합성을 하면 최단거리를 구하는 알고리즘을 관리하지 합성한 클래스를 관리하진 않는다. -> 상속보다는 합성을 사용하고 더 응집력있게 되고 결합도가 낮아진다.

스프링하고 디스패치 서블릿도 합성이다.