이번 장에서는 온라인 영화 시스템을 구축하되 할인 조건과 할인 정책에 초점을 맞춰봅니다.

객체지향 프로그래밍

협력, 객체, 클래스

클래스를 결정한 후 어떤 속성과 메서드가 필요한지 결정할 것이 아니라 먼저 객체에 초점을 맞춰야 합니다. 이를 위해서는 다음 두 가지에 집중해야 합니다.

  1. 어떤 객체들이 어떤 상태와 행동을 가지는지 결정할 것. 클래스는 결국 어떤 상태와 행동을 공유하는 객체를 추상화한 것이므로 객체가 우선시되어야 합니다.
  2. 객체를 독립적 존재가 아닌 특정 기능을 구현하기 위해 협력하는 공동체의 일원으로 볼 것. 그리고 객체들의 모양과 윤곽을 잡은 뒤 공통 특성, 상태를 타입으로 분류하고 클래스로 구현해 내야 합니다.

도메인 구조

문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야를 도메인이라고 부릅니다. 요구사항과 프로그램을 객체라는 동일한 관점에서 바라볼 수 있기 때문에 도메인의 개념들이 프로그램의 객체와 클래스로 매끄럽게 연결될 수 있다는 장점이 있습니다.

클래스의 이름은 대응되는 도메인 개념과 동일하거나 유사하게 지어야 합니다. 그래야 구조를 이해하거나 예상하기가 쉬워집니다.

구현

자율적인 객체

두 가지 알아야할 사실이 있습니다.

  1. 객체는 상태 + 행동을 함께 가지는 복합적 존재