IT자료실/기술서적

오브젝트 - 기술서적 스터디 6단원-메시지와 인터페이스

Ramda 2023. 7. 24. 22:39

 

협력과 메시지

  • 협력은 어떤 객체가 다른 객체에게 요청할 때 시작
  • 메시지는 객체 사이의 협력을 가능하게 하는 매개체
  • 메시지는 오퍼레이션명 + 인자로 구성된다 (ex. car.colar(red))
  • 메시지를 수신했을 때 실제로 실행되는 함수 또는 프로시저를 메서드라고 한다
  • 객체가 의사소통을 위해 외부에 공개하는 메시지의 집합을 퍼블릭 인터페이스 라고 한다
  • 퍼블릭 인터페이스에 포함된 메시지를 오퍼레이션이라고 하고, 오퍼레이션은 수행 가능한 어떤 행동에 대한 추상화이다

인터페이스와 설계 품질

  • 인터페이스의 품질에 영향을 미치는 4가지 원칙
    • 디머터 법칙 : 협력하는 객체의 내부 구조에 대한 결합으로 인해 발생하는 설계 문제를 해결하기 위해 제안된 원칙
      • 클래스 내부의 메서드가 아래의 조건을 만족하는 인스턴스에만 메시지 전송
      • this 객체, 메서드의 매개변수, this의 속성, this의 속성인 컬렉션 요소, 매서드 내에서 생성된 지역객체
    • 묻지말고 시켜라 : 객체에게 어떤 정보를 가졌는지 묻지말고, 행동을 하도록 시키라는 의미
      (객체의 정보에 관심을 가지는게 아니라 책임에 관심을 가져라)
    • 의도를 드러내는 인터페이스 : 구현과 관련된 모든 정보는 캡슐화하고 객체의 인터페이스에는 협력과 관련된 의도만을 표현해야한다
      (메서드의 이름을 의도가 드러나도록 명명해야 한다, 어떻게 하느냐가 아니라 무엇을 하느냐에 따라 메서드 이름을 짖도록 하자)
    • 명령 - 쿼리 분리 원칙 : 부수효과를 발생 시키는 명령과 쿼리 개념을 분리해서 생각하자
      • 명령은 프로시저 개념이고, 쿼리는 함수 개념이다. 프로시저는 부수효과를 발생시킬수 있다.
      • 객체의 상태를 변경하는 명령은 반환값을 가질 수 없다
      • 갹채의 정보를 반환하는 쿼리는 상태를 변경할 수 없다원칙의 함정
  • 위 에서 배웠던 내용들은 정말 원칙을 뿐이다. 절대적인 개념으로 이해를 하지말고 적용이 안되는 상황이 있다면 그 상황에 맞게 트레이드 오프를 겪어서 원칙을 무시하자

인터페이스 설계 품질과 메시지

  • 메시지를 먼저 선택하는 방식을 따르면 인터페이스 설계 품질 향상에 도움을 줄 수 있다
  • 디미터 법칙 : 협력안에서 객체보다 메시지를 먼저 선택하면 두 객체 사이의 구조적인 결합도를 낮출 수 있다
  • 묻지 말고 시켜라 : 메시지를 먼저 선택하면 협력을 구조화 하게 된다
  • 의도를 드러내는 인터페이스 : 메시지를 전송하는 클라이언트의 관점에서 메시지의 이름을 정한다
  • 명령-쿼리 분리 원칙 : 예측이 가능한 협력을 만들기 위해 명령과 쿼리를 분리한다

메시지와 메서드의 관계 등 메시지의 중요성에 대해 배웠고, 그 메시지를 인터페이스 품질과 연결하여 적용 시 결과가 어떨게 좋게 나오는지 잘 알아볼 수 있다고 생각한 단원이였다.