객체지향의 사실과 오해 리뷰

2021년 09월 09일 (1달 전)

이 책은 군대 훈련소에서 오랜만에 재밌게 완독한 책 중 하나인데, 그냥 독후감 겸 리뷰를 한번 써보려고 한다.

목차

  • 01 | 협력하는 객체들의 공동체
  • 02 | 이상한 나라의 객체
  • 03 | 타입과 추상화
  • 04 | 역할, 책임, 협력
  • 05 | 책임과 메시지
  • 06 | 객체 지도
  • 07 | 함께 모으기
  • 부록 A | 추상화 기법
  • 부록 B | 참고 문헌
객체지향의 목표는 실세계를 모방하는 것이 아니다.
오히려 새로운 세계를 창조하는 것이다.

이 책은 객체지향에 대해 개발자들이 가지고 있는 편견이나 오해들을 단번에 시원하게 깨트려주는 책이다. 객체지향이라는 개념을 처음 배울 때부터 객체지향이 뭔가요? 하면 돌아오는 대답은 객체를 지향하는 것이고, 현실 세계 모든 것은 객체이며 그런 것들을 지향하는 것이다~라는 다소 추상(?)적인 이야기를 들어왔고, 조금 의문은 남지만 그렇게 모호한 개념을 탑재한 채 개발을 해왔다.

건물의 방화벽과 네트워크의 방화벽

이 이야기는 책에서 나온 비유를 인용한 것이다.

  • 건물의 방화벽은 말 그대로 건물 내에 불이 번지는 것을 막기 위한 방화벽이다.
  • 네트워크의 방화벽은 네트워크 침입을 막는 것이다.

일단, 의미적 거리만큼이나 소프트웨어 객체와 실세계 사물 사이에 존재하는 연관성은 희미하다.

그렇다면 객체지향은 무엇일까?

→ 객체지향의 목표는 실세계를 모방하는 것이 아니다! 오히려 새로운 세계를 창조하는 것이다.

내가 이 책을 읽고 감명 깊었던 부분에 대해 설명을 하자면 현실 세계에서 라는 객체가 음료수를 마시는 행위를 한다고 했을 때 음료수의 양(곧 상태 값)을 조절하는 주체는 이지만, 객체지향 세계에서 라는 객체가 음료수를 마시는 행위를 할 때 음료수의 양은 곧 상태 값으로 이 값을 줄이는 주체는 음료수 자신이어야 한다는 것이다. 그러면 음료수는 라는 객체가 음료수 마시는 행위를 했을 때 음료수의 양을 줄이는 행위를 해야 하는데 객체지향 세계에서는 오직 한 가지의 의사소통만이 존재한다 바로 "메시지"인데, 라는 객체가 음료수 객체에게 "메시지"를 전송하면, 음료수 객체는 메시지를 수신하여 메시지를 처리한다.

곧 객체는 시스템 행위를 구현하기 위해 다른 객체와 협력하며, 각 객체는 협력 내에서 정해진 역할을 수행하고, 역할은 관련된 책임의 집합이라고 볼 수 있다.

그렇기 떄문에 객체는 충분히 협력적이어야 하며, 자율적(스스로의 원칙에 따라 어떤 일을 하거나 자기 스스로를 통제하여 절제하는 것)이어야 한다는 점에서 현실 세계의 객체와 차이점이 있다.

=> 곧 객체지향 프로그래밍에서 중요한 것은 클래스의 구조, 메서드가 아니라 객체의 역할, 책임, 협력에 집중해야 한다는 것이다.

이 책은 객체지향을 역할,책임,협력 관점에서 잘 설명하고 있어 객체지향 프로그래밍을 하는 개발자라면 꼭 한번 읽어보길 추천한다.