다형성 2

다형성 - 코드로 이해하는 객체지향

상속은 클라이언트 관점에서 인스턴스들을 동일하게 행동하는 그룹으로 믂고 싶을 때 사용해야 합니다. 단지 단순히 코드를 재사용하기 위함이 목적이면 안 됩니다! 다형성은 런타임에 메시지를 처리하기에 적합한 메서드를 동적으로 찾는 과정을 통해서 구현됩니다. 또 상속은 이런 메서드를 찾기 위한 탐색 경로를 클래스 계층의 형태로 구현하기 위한 방법입니다. 상속의 관점에서 다형성이 구현되는 기술적인 매커니즘을 먼저 살펴봅시다. 다형성 다형성(Polymorphism)은 여러 타입을 대상으로 동작할 수 있는 코드를 작성할 수 있는 방법입니다. 객체지향 프로그래밍에서 다형성은 아래처럼 분류될 수 있습니다. 오버로딩 다형성: 하나의 클래스 안에 동일한 메서드 존재하는 경우입니다. 흔히 말하는 메서드 오버로딩이 이 경우이죠..

역할, 책임, 협력 - 코드로 이해하는 객체지향 프로그래밍

이전 글 https://sh1mj1-log.tistory.com/131 에서 객체 지향 프로그밍을 구성하는 다양한 요소와 구현 기법을 살펴보았습니다. 클래스, 추상 클래스, 인터페이스를 조합하여 객체지향 프로그램을 구조화하는 기본 방법 상속을 이용해 다형성을 구현하는 기법 다형성은 지연 바인딩을 통해 구현됨. 상속은 다형성을 위해 사용. 코드 재사용만 할 때는 캡슐화 측면에서 합성이 더 좋음. 유연한 객체 지향 프로그램을 위해서는 컴파일 타임 의존성과 런타임 의존성이 다름. 역할, 책임, 협력 객체지향의 본질은 역할(role), 책임(responsibility), 협력(collaboration) 입니다. 물론 클래스, 상속, 지연 바인딩이 중요하지만 이는 구현 방법일 뿐 본질은 아닙니다. 계속 반복하여 ..