개발 서적 기록/오브젝트_조영호

14일차 - 협력, 메시지, 퍼블릭 인터페이스, 오퍼레이션

밍 끄적 2023. 8. 15. 22:54
728x90

2023.08.15 TUE

169p ~ 185p

 

13일차 내용 ⬇️

2023.08.15 - [개발 서적 기록/오브젝트_조영호] - 13일차 - 다형성을 고려하자. 메서드를 분해하자.

 

13일차 - 다형성을 고려하자. 메서드를 분해하자.

2023.08.14 FRI 153p ~ 171p 12일차 내용 ⬇️ 2023.08.13 - [개발 서적 기록/오브젝트_조영호] - 12일차 - 변경될 가능성이 있는 클래스를 찾아라 12일차 - 변경될 가능성이 있는 클래스를 찾아라 2023.08.12 SAT 14

magenta-ming.tistory.com


잘게 쪼개서 응집도 높은 메서드 만들기

코드를 작은 메서드로 분해하면,

  • 전체적인 흐름을 이해하기 쉬워진다.
  • 기억해야하는 정보를 줄일 수 있다. 더 세부적인 정보가 필요하면 세부적인 구현을 확인하면 된다.
  • 변경하기 쉽다.
  • 각 메서드가 하나의 이유에 의해서만 변경된다.

그렇기 때문에, 메서드에 대한 응집도가 높아진다.

 

객체를 자율적으로 만들기

코드를 작은 메서드로 분해하는 것에서 나아가, 이 메서드가 어떤 객체의 책임으로 수행되게 할것인지도 중요하다.

객체는 자율적인 존재여야 하기 때문에, 자신이 소유하고 있는 데이터를 스스로 책임져 처리하도록 만들어야한다.

 

따라서 메서드가 사용하는 데이터를 저장하고 있는 클래스로 메서드를 이동시켜야한다.

 

협력과 메시지

어떤 객체가 다른 객체에게 무언가를 요청할 때, 두 객체는 협력관계에 놓인다.

클라이언트는 원하는 서비스를 메시지의 형태로 요청한다. ( 이것이 메시지 전송 / 메시지 패싱 이다. )

서버는 그 메세지를 수신해서 서비스를 제공하여 응답한다. 

 

메시지는, 요청하는 Operation nameargument, 그리고 메시지 수신자로 구성하여 메시지를 전송할 수 있다.

 

그리고 이런 메시지를 수신해서, 메서드가 실제로 실행한다.

 

퍼블릭 인터페이스와 오퍼레이션

외부의 객체는, 요청하려는 객체가 공개하는 메시지를 통해서만 객체와 상호작용할 수 있다.

이때, 객체가 의사소통, 협력을 위해서 외부에 공개하는 메시지의 집합이 퍼블릭 인터페이스다.

 

그리고, 이 퍼블릭 인터페이스에 포함된 메시지가 오퍼레이션이다.

오퍼레이션은 수행할 행동을 추상화했기에, 세부 구현은 제외하고 메시지시그니처(이름과 파라미터 목록)를 가지고 있다.

즉, 오퍼레이션은 실행하기 위해서 객체가 호출될 수 있는 변환, 정의에 관한 명세다.

 

이런 오퍼레이션을 메서드가 구현한다.

728x90