이전의 메시지에 대해서 조금 더 자세한 설명을 들을 수 있었다.
그리고, 내가 만든 코드들의 문제가 무엇인가를 생각해볼 수 있었다.
4장에서 내가 만든 코드의 구조를 생각해보았을 때, 결국 증인이 일을 하기 위해 받아야 할 메시지는 존재하지 않는다.
일을 '어떻게' 처리해야하는지 구조를 잡았지만, '무슨' 일을 해야할 지 처리하지 않은 것이다.
책의 예시를 들어보자.
재판관이 증인에게 어제 주방에서 본 것이 있는지 묻는다.
증인은 말을 하기도, 글로 쓰기도, 그림으로 그리기도 할 수 있다. 하지만 하는 말의 내용은 어제 주방에서 본 것들이다.
여기에서 내가 느낀 것은 2가지 이다.
- 재판관은 무슨 일을 해야 할지 이야기 해야 한다.
- 이를 위해서 증인은 그 당시 그 장소에 관해 할 이야기가 있는지 확인하고 말을 해야 한다.
이를 위해서 어떻게 해야할까?
일단 수정된 코드를 가져와 봤다.
이를 통해
증인은 요구되는 장소에서 해당 시간에 본 것을 이야기할 책임을 수행하며, 이를 메시지로 받을 수 있게 된다.
재판관은 증언을 받으며 이 증언이 지금 필요한 것인지 판별해낼 수 있게 된다.
잘 보면, 증인의 입장에서 메시지를 받는 구조의 메서드가 생겼다.
하지만, 같은 역할을 가져도 메시지를 받아 처리하는 방식은 객체마다 다를 수 있다.
우리는 이를 다형성이라고 부른다.
증인이라는 송신자와, 재판관이라는 수신자의 입장에서 보자.
증인의 역할을 하는 객체는 자신만의 방식으로 수신자가 들을 수 있는 정보를 알려줄 수 있다.
즉, 수신자가 받는 방식이 있다면 이를 송신자를 만들어주는 방식에서 자유롭게 설정해줄 수 있다.
이를 통해 책에서는 유연하고 확장 가능하며 재사용성이 높은 협력을 만들 수 있다.
객체지향에서는 이 메시지를 통해 송수신자의 연결을 약하게 만들어주며, 객체들이 더 자율적이게 만들어준다.
누가, 무엇을 하는지 생각하고 만들면 되는 것이다.
프로그래밍을 하면서 있는 코드를 수정하는 방식을 지양하고
코드를 추가하는 방식으로 리펙토링하는 것이 더 이상적이라고 했던 기억이 있다.
이번 장을 통해서 객체지향적이고, 객체간의 독립성을 만들기 위한 방법이 무엇인지 다시 생각해볼 수 있게 되었다.
라고 해도 사실 5장 내용 자체가 깊이가 있다는 생각이 든다.
1회독이 끝나고 한번 더 읽어보면서 깊이있게 이해해봐야 겠다.
그럼...twenty thousand...🔥
'개발공부 > 객체지향의 사실과 오해' 카테고리의 다른 글
[객(체지향의)사(실과)오(해)] 6. 객체지도 ( 태초마을로 간 지우 ) (1) | 2023.06.05 |
---|---|
[객(체지향의)사(실과)오(해)] 4. 역할, 책임, 협력 (부제 : 그래 팩토리를 더 써먹어보자) (0) | 2023.04.28 |
[객(체지향의)사(실과)오(해)] 3. 타입과 추상화( 부제 : 어...이거?!) (0) | 2023.04.28 |
[객(체지향의)사(실과)오(해)] 2. 이상한 나라의 앨리스를 이상하게 보고 있는 나 (0) | 2023.04.20 |
[객(체지향의)사(실과)오(해)] 1장. 협력하는 객체들의 공동체 (1) | 2023.04.15 |