01. 협력하는 객체들의 공동체

 · 2 mins read

01. 협력하는 객체들의 공동체


협력하는 사람들

  • “소프트웨어 개발자의 역할은 단순히 실세계를 소프트웨어 안으로 옮겨 담는 것이 아니라, 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다.”

  • 객체지향의 가장 중요한 개념은 역할, 책임, 협력
    • 협력은 요청과 응답으로 구성
    • 역할은 사람들이 다른 사람과 협력하는 과정 속에서 부여
    • 역할이라는 단어는 의미적으로 책임이라는 개념을 내포
  • 협력을 위해 특정한 역할을 맡고 역할에 적합학 책임을 수행


역할, 책임, 협력

  • 시스템은 역할책임을 수행하는 객체로 분할되고, 시스템의 기능은 객체 간의 연쇄적인 요청과 응답의 흐름으로 구성된 협력으로 구현

  • 객체지향 설계라는 예술은 적절한 객체에게 적절한 책임을 할당하는 것에서 시작된다.

  • 역할은 관련성 높은 책임의 집합이다.


협력 속에 사는 객체

  • 객체는 다른 객체와의 협력을 통해 기능을 구현

  • 협력을 위해 객체는 두 덕목을 갖춰야 한다.
    1. 객체는 충분히 협력적이어야 한다.
    2. 객체가 충분히 자율적이어야 한다.
  • 흔히 객체를 상태(state)행동(behavior)을 함께 지닌 실체라고 정의한다.
    • 객체가 협력에 참여하는 과정 속에서 스스로 판단하고 스스로 결정하는 자율적인 존재로 남기 위해서는 필요한 행동과 그를 위한 상태를 함께 지녀야 한다.
  • 객체는 협력을 위해 다른 객체에게 메시지를 전송하고 다른 객체로부터 메시지를 수신한다.

  • 객체가 수신된 메시지를 처리하는 방법을 메서드(method)라고 부른다.

  • 요청을 표현하는 메시지와 요청을 처리하는 메서드는 분리되어 있다. (캡슐화 개념과 관)련


객체지향의 본질

  • 객체지향의 개념?
    • 시스템을 상호작용하는 자율적인 객체들의 공동체로 바라보고 객체를 이용해 시스템을 분할하는 방법
    • 자율적인 객체란 상태행위를 함께 지니며 스스로 자기 자신을 책임지는 객체를 의미
    • 객체는 시스템의 행위를 구현하기 위해 다른 객체와 협력한다. 각 객체는 협력 내에서 정해진 역할을 수행하며 역할은 관련된 책임의 집합이다.
    • 객체는 다른 객체와 협력하기 위해 메시지를 전송하고, 메시지를 수신한 객체는 메시지를 처리하는데 적합한 메서드를 자율적으로 선택한다.
  • 객체지향은 객체를 지향하는 것이다. 객체의 역할, 책임, 협력에 집중하자.