목차
▣ 01장: 협력하는 객체들의 공동체
__협력하는 사람들
____커피 공화국의 아침
____요청과 응답으로 구성된 협력
____역할과 책임
__역할, 책임, 협력
____기능을 구현하기 위해 협력하는 객체들
____역할과 책임을 수행하며 협력하는 객체들
__협력 속에 사는 객체
____상태와 행동을 함께 지닌 자율적인 객체
____협력과 메시지
____메서드와 자율성
__객체지향의 본질
____객체를 지향하라
▣ 02장: 이상한 나라의 객체
__객체지향과 인지 능력
__객체, 그리고 이상한 나라
____이상한 나라의 앨리스
____앨리스 객체
__객체, 그리고 소프트웨어 나라
____상태
____행동
____식별자
__기계로서의 객체
__행동이 상태를 결정한다
__은유와 객체
____두 번째 도시전설
____의인화
____은유
____이상한 나라를 창조하라
▣ 03장: 타입과 추상화
__추상화를 통한 복잡성 극복
__객체지향과 추상화
____모두 트럼프일 뿐
____그룹으로 나누어 단순화하기
____개념
____개념의 세 가지 관점
____객체를 분류하기 위한 틀
____분류는 추상화를 위한 도구다
__타입
____타입은 개념이다
____데이터 타입
____객체와 타입
____행동이 우선이다
__타입의 계층
____트럼프 계층
____일반화/특수화 관계
____슈퍼타입과 서브타입
____일반화는 추상화를 위한 도구다
__정적 모델
____타입의 목적
____그래서 결국 타입은 추상화다
____동적 모델과 정적 모델
____클래스
▣ 04장: 역할, 책임, 협력
__협력
____요청하고 응답하며 협력하는 사람들
____누가 파이를 훔쳤지?
____재판 속의 협력
__책임
____책임의 분류
____책임과 메시지
__역할
____책임의 집합이 의미하는 것
____판사
출판사 서평
현재의 소프트웨어 개발에 있어 가장 중요한 패러다임이 객체지향이라는 사실에 대부분 이견이 없을 것이다. 절차형 패러다임을 접목한 C++나 함수형 패러다임을 접목한 Scala나 Java 8과 같은 멀티패러?다임 언어들이 인기를 끌고 있지만 여전히 그 중심에는 객체지향 패러다임이 위치한다. 그러나 객체지향이 소프트웨어 개발 패러다임에 대한 패권을 쥔 이후로 많은 시간이 흘렀음에도 소프트웨어 개발 커뮤니티는 여전히 객체지향이란 무엇인가라는 질문에 정확하게 대답하지 못하고 있다.
『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론...
현재의 소프트웨어 개발에 있어 가장 중요한 패러다임이 객체지향이라는 사실에 대부분 이견이 없을 것이다. 절차형 패러다임을 접목한 C++나 함수형 패러다임을 접목한 Scala나 Java 8과 같은 멀티패러다임 언어들이 인기를 끌고 있지만 여전히 그 중심에는 객체지향 패러다임이 위치한다. 그러나 객체지향이 소프트웨어 개발 패러다임에 대한 패권을 쥔 이후로 많은 시간이 흘렀음에도 소프트웨어 개발 커뮤니티는 여전히 객체지향이란 무엇인가라는 질문에 정확하게 대답하지 못하고 있다.
『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝게도 많은 사람들이 객체지향의 본질을 오해하고 있다. 가장 널리 퍼져있는 오해는 클래스가 객체지향 프로그래밍의 중심이라는 것이다. 객체지향으로 향하는 첫 걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두 번째 걸음은 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 바라보는 것이다. 세 번째 걸음을 내디딜 수 있는지 여부는 협력에 참여하는 객체들에게 얼마나 적절한 역할과 책임을 부여할 수 있느냐에 달려 있다. 객체지향의 마지막 걸음은 앞에서 설명한 개념들을 프로그래밍 언어라는 틀에 흐트러짐 없이 담아낼 수 있는 기술을 익히는 것이다.
이 책의 목적은 특정한