시배's Android

객체지향의 사실과 오해 | 5장. 책임과 메시지 본문

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

객체지향의 사실과 오해 | 5장. 책임과 메시지

si8ae 2023. 12. 28. 22:18
  • 객체지향의 세계는 명확하게 정의된 역할과 책임을 지닌 객체들이 상호 협력하는 세계다.
  • 객체지향 세계는 자율적인 객체들의 공동체라는 점을 명시하라.
  • 객체가 자율적이기 위해서는 객체에게 할당되는 책임의 수준 역시 자율적이어야 한다.
  • 자율적인 책임의 특징은 객체가 어떻게 해야 하는가가 아니라 무엇을 해야 하는가를 설명한다는 것이다.
  • 메시지의 개념은 책임의 개념과 연결된다.
  • 객체가 수신할 수 있는 메시지와 메시지를 처리하기 위해 선택할 수 있는 방법이라는 두 가지 개념이 존재한다.
  • 메시지를 처리하기 위해 내부적으로 선택하는 방법을 메서드라고 한다.
  • 다형성이란 서로 다른 유형의 객체가 동일한 메시지에 대해 서로 다르게 반응하는 것을 의미한다.
  • 서로 다른 타입에 속하는 객체들이 동일한 메시지를 수신할 경우 서로 다른 메서드를 이용해 메시지를 처리할 수 있는 메커니즘을 가리킨다.
  • 다형성은 메시지 송신자의 관점에서 동일한 역할을 수행하는 다양한 타입의 객체와 협력할 수 있게 한다.
  • 다형성은 수신자의 종류를 캡슐화 한다.
  • 협력이 유연해진다.
  • 협력이 수행되는 방식을 확장할 수 있다.
  • 협력이 수행되는 방식을 재사용할 수 있다.
  • 메시지는 송신자와 수신자 사이의 결합도를 낮춤으로써 설계를 유연하고, 확장 가능하고, 재사용 가능하게 만든다.
  • 객체지향 설계에 관한 많은 논의가 클래스에 어떤 책임을 할당하고 클래스 간의 의존성을 어떻게 관리하것인가에 집중된다.
  • 객체지향 애플리케이션은 클래스를 이용해 만들어지지만 메시지를 통해 정의된다.
  • 클래스는 단지 동적인 객체들의 특성과 행위를 정적인 텍스트로 표현하기 위해 사용할 수 있는 추상화 도구일 뿐이다.
  • 클래스를 정의하는 것이 먼저가 아니라 객체들의 속성과 행위를 식별하는 것이 먼저다.
  • 훌륭한 객체지향 설계는 어떤 객체가 어떤 메시지를 전송할 수 있는가와 어떤 객체가 어떤 메시지를 이해할 수 있는가를 중심으로 객체 사이의 협력 관계를 구성하는 것이다.
  • 객체가 책임을 완수하기 위해 다른 객체의 도움이 필요하다고 판단되면 도움을 요청하기 위해 어떤 메시지가 필요한지 결정한다.
  • 메시지를 결정한 후에는 메시지를 수신하기에 적합한 객체를 선택한다.
  • 객체의 구체적인 타입과 무관하게 전송된 메시지를 이해할 수 있는 객체들을 서로 연결하고 상호 협력 가능하게 만드는 것은 유연하고 재사용 가능한 설계를 낳는 토양이다.
  • 인터페이스의 사용법만 알고 있으면 대상의 내부 구조나 동작 방법을 몰라도 상호작용 가능하다.
  • 인터페이스가 변경되지 않고 단순히 내부 구성이나 작동 방식이 변경되는 것은 인터페이스 사용자에게 아무런 영향도 미치지 않는다.
  • 인터페이스가 동일하기만 하다면 어떤 대상과도 상호작용할 수 있다.
  • 객체의 책임이 자율적이어야 한다.
  • 객체가 메시지를 수신했을 때 적절한 객체의 책임이 수행된다.
  • 메서드란 메시지를 수신했을 때 책임을 수행하는 방법을 의미한다.
  • 객체가 책임을 수행하기 위해 외부로부터 메시지를 받기 위한 통로인 인터페이스다.
  • 최소 인터페이스 주의는 외부에서 사용할 필요가 없는 인터페이스는 최대한 노출하지 말라는 것이다.
  • 훌륭한 객체란 구현을 모른 채 인터페이스만 알면 쉽게 상호작용할 수 있는 객체를 의미한다.
  • 소프트웨어는 항상 변경된다.
  • 상태와 행위의 캡슐화
  • 사적인 비밀의 캡슐화
  • 객체는 상태와 행위를 한데 묶은 후 외부에서 반드시 접근해야만 하는 행위만 골라 공용 인터페이스를 통해 노출한다.
  • 외부에서 객체와 의사소통할 수 있는 고정된 경로를 공용 인터페이스라고 한다.
  • 객체는 자신의 의지에 따라 변경하고 조작할 수 있는 비밀을 가지고 있다. 이것은 객체 내부다.
  • 동시에 객체는 외부의 객체가 의지하고 접근할 수 있는 공용 인터페이스를 가진다. 이것은 객체 외부다.
  • 자율적인 책임은 협력을 단순하게 만든다.
  • 자율적인 책임은 외부와 내부를 명확하게 분리한다.
  • 책임이 자율적일 경우 책임을 수행하는 내부적인 방법을 변경하더라도 외부에 영향을 미치지 않는다.
  • 자율적인 책임은 협력의 대상을 다양하게 선택할 수 있는 유연성을 제공한다.
  • 객체가 수행하는 책임들이 자율적일수록 객체의 역할을 이해하기 쉬워진다.
  • 책임이 자율적일수록 적절하게 추상화되며 응집도가 높아지고 결합도가 낮아지며 캡슐화가 증진되고 인터페이스와 구현이 명확히 분리되며 설게의 유연성과 재사용성이 향상된다.