주로 객체지향 프로그래밍의 핵심 개념 중 하나인 '역할, 책임, 협력'에 대해 다룹니다. 이 챕터의 주요 내용은 다음과 같습니다.

  1. 협력: 소프트웨어 내에서 객체들은 서로 '협력'을 통해 작동합니다. 협력을 위해서는 각 객체가 특정 '역할'을 맡고, 그 역할에 맞는 '책임'을 수행해야 합니다. 즉, 소프트웨어는 객체들 간의 협력의 집합으로 볼 수 있습니다.
  2. 역할과 책임: 객체지향 설계에서 '역할'은 객체가 협력 내에서 수행하는 동작이나 책임을 의미합니다. '책임'은 객체가 수행해야 하는 행동이나 정보 제공 등을 말합니다. 즉, 역할과 책임은 객체가 협력에 참여하기 위해 필요한 능력과 책임을 정의합니다.
  3. 유연하고 재사용 가능한 설계: 역할, 책임, 협력을 중심으로 설계하면 유연하고 재사용 가능한 소프트웨어를 만들 수 있습니다. 이는 다양한 문제 상황에 적용 가능한 설계를 의미하며, 변경에 유연하게 대응할 수 있는 소프트웨어를 개발할 수 있습니다.
  4. 객체지향 설계의 핵심: 책임을 적절한 객체에 할당하는 것이 객체지향 설계의 핵심입니다. 이를 통해 각 객체는 명확한 역할을 가지며, 이러한 역할과 책임을 기반으로 객체 간의 협력이 이루어집니다.

협력, 객체, 클래스

클래스를 결정한 후, 클래스에 포함될 속성과 메서드를 고려하는 것은 객체지향 패러다임을 위반하는 것이다. 즉, 클래스가 아닌 객체에 초점을 맞춰야 한다.

  1. 어떤 객체들이 필요한지 고민 → 어떤 상태와 행동ㅇ르 가지는지를 먼저 결정하라는 말이다. → (즉, 사람은 행위를 기준으로 설게를 하게된다는 것을 말하는 것 같다)
  2. 객체를 고립된 존재로 바라보지 말고 협력에 참여하는 협력자로 바라보기 바란다. → 즉, 객체들의 모양과 윤곽이 잡히면 공통된 특성과 상태를 가진 객체들을 타입으로 분류하고 이 타입을 기반으로 클래스를 구현하라.

도메인의 구졸르 따르는 프로그램 구조

도메인 : 문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야

플젝에 처음부터 끝까지 객체라는 동일한 추상화 기법을 사용할 수 있기 때문에 객체지향 패러다임이 강력하다.

→ 이는 요구사항과 프로그램을 객체라는 동일한 관점에서 바라볼 수 있기 때문이다.


클래스 구현

구현할 때, 변수는 private, 메서드는 public 으로 구현했을 것이다. 이는 객체화의 기본이다.

이렇게 경계를 구분하는 이유는 무엇일까 ??? → 경계의 명확성이 객체의 자율성을 보장하기 때문이다.