Book/객체지향의 사실과 오해

[Book] 5장) 책임과 메시지

kkkkkkkkkkkk 2022. 2. 12. 21:25

자율성

  • 타인이 아닌 자기 자신이 행동을 하는 특성

 

자율적인 책임

  • 요청을 자신의 판단에 처리하는 것
    • 자율적인 객체유연한 협력 관계품질 좌지우지한다.
  • 특징
    • 어떻게 ( How )  가 아니라 무엇 ( What ) 을 해야 하는가를 설명

 

메시지

  •  행동을 수행하게 하는 자극제
    • 조합 구조
      • 수신자 , 메시지 이름, 인자 
        • ex ) public String hello(String message) {};
    • 어떻게 ( How ) 처리 할지 명시하지 않고 무엇 ( What ) 이 실행되기를 명시

 

 

메서드

  • 메시지 처리를 위한 내부적 선택 방법

 

 

다형성

  • 서로 다른 객체동일한 메시지에 대해 다르게 반응
    • 대체 가능성을 보고 설계
      • 재사용성
      • 유연한 협력 관계 유지
      • 확장 가능성

 

 

메시지의 중요

  • 메시지를 중심으로 협력을 설계
  • 무엇, 어떤 행위 ( What ) / 누가 ( Who ) 사이클
    • 어떤 행위를 누가 할 것인지를 결정
      • 다른 객체의 도움이 필요시 어떤 메시지가 필요하진 결정
      • 책임을 받을 객체 결정
  • 묻지말고 시켜라
    • 캡슐화 특징으로 수신자의 상태에 대해 송신자는 모르고, 상태를 묻지 않고 시켜야 한다.
    • 결합도를 낮추고 유연하고 재사용이 가능한 설계를 만들수 있다.
  • 메시지를 믿어라
    • 메시지를 수신하는 객체가 메시지를 이해할 수 있는지의 여부

 

 

 

인터페이스

  • 서로 소통이 안되는 경계지점에서 소통을 할 수 있게 해주는 방법이나 장치
    • 특징
      • 내부구조나 동작방식은 알 필요가 없다.
      • 내부구조, 동작방식을 변경해도 사용자에게 영향을 미치지 않는다.
      • 사용자가 변경되도 동일한 인터페이스를 사용해도 문제없다.
    • 메시지가 인터페이스를 결정한다.

 

 

인터페이스와 구현의 분리

  • 객체 관점
    • 추상적인 인터페이스
      • 너무 상세한 메시지는 객체의 자율성을 침해.
    • 최소 인터페이스
      • 외부에서 사용하지 않는 부분은 감추자.
  • 구현
    • 내부 구조의 작동 방식을 말함.
  • 분리를 하는 이유
    • 변경을 관리하기 위한 것 
      • 유연한 협력 설계
      • 재사용 용이성
      • 캡슐화
        • 외부로부터 감춤 ( 정보 은닉 )

 

 

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

  • 자율적인 책임은 협력을 단순하게 만듬
  • 자율적인 책임은 외부 내부를 명확하게 분리
  • 책임이 자율적인 경우 책임을 수행하는 내부적인 방법을 변경 하더라도 외부의 영향을 미치지 않음
  • 자율적인 책임은 협력이 대상을 다양하게 선택할 수 있는 유연성을 제공
  • 객체가 수행한 책임들이 자율적일수록 객체의 역할을 이해하기 쉬움

 

 

책임이 자율적일 수록

1. '추상화' 가 된다.
2. '응집도' 가 높아진다.
3. '결합도' 가 낮아진다.
4. '캡슐화' 가 증진된다.
5. '인터페이스와 구현이 명확히 분리' 된다.
6. 설계의 '유연성' 과 '재사용' 이 향상된다.