개발공부/객체지향의 사실과 오해

[객(체지향의)사(실과)오(해)] 5. 책임과 메시지 (부제. 메시지란 무엇인가)

장아장 2023. 6. 5. 16:15

책을 보며 느낀 딱 한가지.

이전의 메시지에 대해서 조금 더 자세한 설명을 들을 수 있었다. 

그리고, 내가 만든 코드들의 문제가 무엇인가를 생각해볼 수 있었다. 

 

4장에서 내가 만든 코드의 구조를 생각해보았을 때, 결국 증인이 일을 하기 위해 받아야 할 메시지는 존재하지 않는다. 

일을 '어떻게' 처리해야하는지 구조를 잡았지만, '무슨' 일을 해야할 지 처리하지 않은 것이다. 

 

책의 예시를 들어보자. 

재판관이 증인에게 어제 주방에서 본 것이 있는지 묻는다. 

증인은 말을 하기도, 글로 쓰기도, 그림으로 그리기도 할 수 있다. 하지만 하는 말의 내용은 어제 주방에서 본 것들이다. 

 

여기에서 내가 느낀 것은 2가지 이다. 

  1. 재판관은 무슨 일을 해야 할지 이야기 해야 한다. 
  2. 이를 위해서 증인은 그 당시 그 장소에 관해 할 이야기가 있는지 확인하고 말을 해야 한다. 

 

이를 위해서 어떻게 해야할까?

일단 수정된 코드를 가져와 봤다. 

이를 통해

증인은 요구되는 장소에서 해당 시간에 본 것을 이야기할 책임을 수행하며, 이를 메시지로 받을 수 있게 된다. 

재판관은 증언을 받으며 이 증언이 지금 필요한 것인지 판별해낼 수 있게 된다. 

 

잘 보면, 증인의 입장에서 메시지를 받는 구조의 메서드가 생겼다. 

하지만, 같은 역할을 가져도 메시지를 받아 처리하는 방식은 객체마다 다를 수 있다. 

우리는 이를 다형성이라고 부른다. 

증인이라는 송신자와, 재판관이라는 수신자의 입장에서 보자. 

증인의 역할을 하는 객체는 자신만의 방식으로 수신자가 들을 수 있는 정보를 알려줄 수 있다. 

즉, 수신자가 받는 방식이 있다면 이를 송신자를 만들어주는 방식에서 자유롭게 설정해줄 수 있다. 

이를 통해 책에서는 유연하고 확장 가능하며 재사용성이 높은 협력을 만들 수 있다. 

객체지향에서는 이 메시지를 통해 송수신자의 연결을 약하게 만들어주며, 객체들이 더 자율적이게 만들어준다. 

 

누가, 무엇을 하는지 생각하고 만들면 되는 것이다. 

 

프로그래밍을 하면서 있는 코드를 수정하는 방식을 지양하고

코드를 추가하는 방식으로 리펙토링하는 것이 더 이상적이라고 했던 기억이 있다. 

 

이번 장을 통해서 객체지향적이고, 객체간의 독립성을 만들기 위한 방법이 무엇인지 다시 생각해볼 수 있게 되었다. 

라고 해도 사실 5장 내용 자체가 깊이가 있다는 생각이 든다. 

1회독이 끝나고 한번 더 읽어보면서 깊이있게 이해해봐야 겠다. 

 

그럼...twenty thousand...🔥