bookseek.
◎ 한국어 ⌄
객체지향의 사실과 오해 책 표지

BOOKSEEK BOOK NOTES

객체지향의 사실과 오해

조영호 지음

객체지향을 클래스 문법이 아니라 역할·책임·협력의 관계로 이해하도록 돕는 책입니다. 객체의 상태와 행동, 메시지와 인터페이스를 공부할 범위와, 언어 입문 이후 설계의 관점을 바꾸려는 독자에게 맞는 이유를 살펴봅니다.

책의 기본 정보

출판사
위키북스
출간일
2015-06-17
분량
260쪽
ISBN
9788998139766

책의 내용과 읽을 거리

『객체지향의 사실과 오해』는 클래스를 만들 줄 알지만 객체지향적으로 생각한다는 말이 여전히 추상적인 독자에게 맞는 책입니다. 조영호는 객체의 상태와 행동, 역할과 책임, 메시지와 협력을 중심으로 설계의 관점을 설명합니다. 프로그래밍 언어의 문법을 배우기 위한 교재와는 읽는 목적이 다릅니다.

독자가 먼저 붙들 질문은 기능을 완성하기 위해 누가 무엇을 해야 하는가입니다. 클래스 안에 필드와 메서드를 넣었다고 해서 책임이 적절하게 나누어진 것은 아닙니다. 책의 개념을 읽으면서 자신의 프로그램에서 한 객체가 다른 객체의 내부 사정을 얼마나 알아야 하는지 적어 보면 설계 문제를 더 구체적으로 바라볼 수 있습니다.

상태와 행동을 함께 다루는 부분에서는 객체가 가진 데이터 목록보다 수행할 일이 무엇인지 먼저 생각해 볼 수 있습니다. 다만 현실의 사물을 그대로 코드로 복제하는 것이 목표는 아닙니다. 책의 설명을 활용해 같은 현실 대상도 프로그램이 해결하려는 문제에 따라 다른 책임을 가질 수 있다는 점을 정리해 보세요.

메시지와 인터페이스는 객체들이 협력하는 경계를 읽는 데 필요한 개념입니다. 호출하는 쪽이 요청할 내용과 받는 쪽이 내부에서 처리하는 방법을 나누어 보세요. 여기서 얻을 질문은 어떤 메서드 이름이 멋진가가 아니라, 상대 객체가 구현을 바꾸더라도 요청한 일이 유지될 수 있는가입니다.

후반부에는 도메인 모델과 유스케이스, 구현을 함께 살펴보는 구성이 있습니다. 개념을 따로 암기하기보다 사용자의 요청에서 협력과 책임이 어떻게 이어지는지 한 장에 정리해 보기를 권합니다. 이 정리는 책에 없는 새 사례를 만들 때도 쓸 수 있지만, 예시를 이해한 것과 실제 설계를 검증한 것은 구별해야 합니다.

자신이 아는 서비스를 예로 들어 역할 이름만 나열해 보는 것에서 출발할 수 있습니다. 다음에는 각 역할이 다른 역할에게 무엇을 요청하며 어떤 결과를 돌려주는지 적어 보세요. 모든 데이터를 한 객체에 몰아넣었을 때와 책임을 나눴을 때 설명이 어떻게 달라지는지 비교하면 좋습니다. 이 활동은 책이 제시하는 관점을 일상적인 설명에 적용하는 제안이며, 곧바로 완성된 클래스 설계가 된다는 뜻은 아닙니다.

2015년 출간된 책이지만 여기서 선택한 이유는 당시 도구나 프레임워크를 재현하려는 데 있지 않습니다. 언어 문법과 별개로 책임과 협력의 의미를 설명하는 읽기에 목적이 있습니다. 특정 패러다임이 모든 문제에서 우월하다고 받아들이기보다, 이 관점이 자신의 코드에서 무엇을 분명하게 해 주는지 확인하는 편이 좋습니다.

이 책에서 공부할 수 있는 내용

객체의 상태·행동·식별자를 구분하고 역할, 책임, 메시지의 관계를 배울 수 있습니다. 도메인과 사용자의 기능 요구를 설계로 연결하는 질문도 살핍니다. 학습 후에는 작은 기능 하나를 고르고 필요한 요청과 응답을 적어 보세요. 데이터를 소유한 객체와 실제 일을 맡은 객체가 다른 이유를 설명해 보는 활동을 제안합니다.

설명 방식에서 눈여겨볼 특징

  • 개념을 세우는 설명: 객체지향 용어의 뜻을 먼저 정리하는 데 무게를 둡니다.
  • 협력 중심 관점: 객체 하나의 구조보다 기능을 함께 수행하는 관계를 살핍니다.
  • 메시지와 경계: 공개할 요청과 내부 구현을 구분하는 이유를 배웁니다.
  • 모델과 기능 연결: 도메인 모델과 유스케이스를 설계의 질문으로 이어 갑니다.

이런 독자에게 권합니다

자바나 C++ 등의 기본 문법을 공부했지만 설계의 기준을 정하지 못한 독자에게 권합니다. 프레임워크 사용법이나 코딩 테스트 문제풀이를 원하는 경우에는 별도의 책이 필요합니다. 처음에는 익숙한 프로그램 한 개를 곁에 두고 읽되, 모든 클래스를 한꺼번에 재설계하지 않는 편이 좋습니다.

이 책에서 주로 다루는 내용

  • 객체의 상태·행동·정체성
  • 역할과 책임에 따른 협력
  • 메시지·인터페이스와 도메인 관점

작가 소개

조영호는 소프트웨어 개발과 교육 경험을 바탕으로 객체지향 설계를 설명해 온 개발자입니다. 특정 언어의 문법보다 역할·책임·협력이라는 설계 관점에 집중한 책을 집필했습니다.

이 책과 함께 읽는 주제