목록협력 (2)
개발자는 기록이 답이다

3. 역할 역할과 협력 객체는 협력이라는 주어진 문맥안에서 특정한 목적을 갖게 되고, 객체의 목적은 협력 안에서 객체가 맡게 되는 책임의 집합으로 표시된다. 이처럼 객체가 어떤 특정한 협력 안에서 수행하는 책임의 집합을 역할이라고 부른다. 영화예매 협력에서 "예매하라"라는 메시지를 처리하기에 적합한 객체로 Screening을 선택했다. 하나의 단계처럼 보이는 이 책임 할당 과정은 실제로 두 개의 독립적인 단계가 합쳐진 것이다. 1. 영화를 예매할 수 있는 적절한 역할이 무엇인가 찾는다 2. 역할을 수행할 객체로 Screening 인스턴스를 선택한다 역할에 특별한 이름을 부여하지 않았지만 실제로는 익명의 역할을 찾고 그 역할을 수행할 수 있는 객체를 선택하는 방식으로 설계가 진행된 것이다. Screenin..

2장에서는 클래스, 추상 클래스, 인터페이스를 조합해서 객체 지향 프로그램을 구조화하는 기본적인 방법과 상속을 이용해 다형성을 구현하는 기법을 소개했다. 다형성이 지연 바인딩이라는 매커니즘을 통해 구현된다는 사실도 설명했고, 상속은 코드를 재사용할 수 있는 가장 널리 알려진 방법이지만 캡슐화의 측면에서 합성이 더 좋은 방법이라는 사실을 이해했다. 또한, 유연한 객체지향 프로그램을 위해서는 컴파일 시간 의존성과 실행 시간 의존성이 달라야 한다는 사실 역시 알게 됐다. 객체지향 패러다임의 관점에서 핵심은 역할(role), 책임(responsibility), 협력(collaboration)이다. 클래스, 상속, 지연바인딩이 중요하지 않은것은 아니지만 구현 측면에 치우쳐 있으며 객체지향 패러다임의 본질과 거리가..