[Book]객체 지향의 사실과 오해, 조영호: 5장

Hyunta·2021년 10월 7일
0
post-thumbnail

5. 책임과 메시지

반응과 집단의 크기 사이에 밀접한 관계가 있음을 발견 - '책임감 분산'

역할과 책임이 뚜력해야 협력이 잘 이뤄진다.

자율적인 책임

자율적인 객체 = 스스로의 의지와 판다에 따라 각자 맡은 책임을 수행하는 객체

  1. 증언하라 - 자유도가 높음
  2. 목격한 장면을, 시간에 따라서 구성하고, 간결하게 말해라 - 제한사항들이 많음
  3. 설명하라 - 협력의 의도가 불분명하다.

객체가 자율적이기 위해서는 객체에게 할당되는 책임의 수준 역시 자율적이어야 한다.

훌륭한 책임 = 자율성 보장할 정도의 추상성과 협력의 의도를 뚜렷하게 볼 수 있도록 구체적

'어떻게' 가 아니라 '무엇'을에 집중한다.

행동을 어떻게 수행할지 메시지를 통해 전달한다.

메시지와 메서드

메시지이름(argument) - 증언하라(어제, 왕국)

메서드 - 메시지를 처리할 방법

다형성이란 서로 다른 유형의 객체가 동일한 메시지에 대해 서로 다르게 반응하는 것을 의미한다.

'증언하라' 라는 메시지를 이해할 수 있는 모든 객체들은 '증인' 이라는 역할을 수행할 수 있다.

다형성은 송신자와 수신자 간의 객체 타입에 대한 결합도를 메시지에 대한 결합도로 낮춤으로써 달성된다.

송신자는 오직 메시지만 바라본다.

메시지를 따라라

메시지를 주고받는 객체들 사이의 커뮤니케이션에 초점을 맞춰야한다.

어떤 객체가 어떤 메시지를 전송할 수 있는가와 어떤 객체가 어떤 메시지를 이해할 수 있는가를 중심으로 객체 사이의 협력관계를 구성하는 거이 훌륭한 객체지향 설계.

협력이라는 문맥 안에서 필요한 메시지를 먼저 결정한 후에 메시지를 수신하기에 적합한 객체를 선택한다.

메시지를 믿어라 그러면 자율적인 책임은 저절로 따라온다

객체 인터페이스

인터페이스

  1. 복잡한 내부구조를 몰라도 조작하거나 의사 전달 가능하다
  2. 내부 구성, 작동 방식이 변해도 사용자에게는 영향을 미치지 않는다.
  3. 대상이 변경되도 동일한 인터페이스를 제공하면 상호작용 가능하다

어떤 메시지를 수신할 수 있는지가 객체를 제공하는 인터페이스의 모양을 빚는다.

인터페이스와 구현의 분리

좀 더 추상적인 인터페이스 : 세부사항을 제거하고 메시지의 의도를 나타냄

최소 인터페이스 : 메시지를 따라서 만든다

객체의 외부 : 인터페이스

객체의 내부: 구현(Implemetation)

인터페이스와 구현을 분리한다는 것은 변경될 만한 부분을 객체 내부에 숨긴다는 말이다.

캡슐화(정보 은닉)

객체의 자율성을 보존하기 위해 구현을 외부로부터 감추는 것

  1. 상태와 행위의 캡슐화 (데이터 캡슐화)

    상태와 행동을 하나의 단위로 묶는 자율적인 실체

  2. 사적인 비밀의 캡슐화

책임의 자율성이 협력의 품질을 결정한다.

  1. 자율적인 책임은 협력을 단순하게 만든다.

    책임이 적절하게 추상화된다.

  2. 자율적인 책임은 외부와 내부를 명확하게 분리한다.

  3. 책임이 자율적일 경우 책임을 수행하는 내부적인 방법을 변경하더라도 외부에 영향을 미치지 않는다.

  4. 자율적인 책임은 협력의 대상을 다양하게 선택할 수 있는 유연성을 제공한다.

  5. 객체가 수행하는 책임들이 자율적일수록 객체의 역할을 이해하기 쉬워진다.

profile
세상을 아름답게!

0개의 댓글