품목정보
출간일 | 2015년 06월 17일 |
---|---|
쪽수, 무게, 크기 | 260쪽 | 590g | 172*235*14mm |
ISBN13 | 9788998139766 |
ISBN10 | 8998139766 |
출간일 | 2015년 06월 17일 |
---|---|
쪽수, 무게, 크기 | 260쪽 | 590g | 172*235*14mm |
ISBN13 | 9788998139766 |
ISBN10 | 8998139766 |
『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝게도 많은 사람들이 객체지향의 본질을 오해하고 있다. 가장 널리 퍼져있는 오해는 클래스가 객체지향 프로그래밍의 중심이라는 것이다. 객체지향으로 향하는 첫 걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. |
▣ 01장: 협력하는 객체들의 공동체 협력하는 사람들 - 커피 공화국의 아침 - 요청과 응답으로 구성된 협력 - 역할과 책임 역할, 책임, 협력 - 기능을 구현하기 위해 협력하는 객체들 - 역할과 책임을 수행하며 협력하는 객체들 협력 속에 사는 객체 - 상태와 행동을 함께 지닌 자율적인 객체 - 협력과 메시지 - 메서드와 자율성 객체지향의 본질 - 객체를 지향하라 ▣ 02장: 이상한 나라의 객체 객체지향과 인지 능력 객체, 그리고 이상한 나라 - 이상한 나라의 앨리스 - 앨리스 객체 객체, 그리고 소프트웨어 나라 - 상태 - 행동 - 식별자 기계로서의 객체 행동이 상태를 결정한다 은유와 객체 - 두 번째 도시전설 - 의인화 - 은유 - 이상한 나라를 창조하라 ▣ 03장: 타입과 추상화 추상화를 통한 복잡성 극복 객체지향과 추상화 - 모두 트럼프일 뿐 - 그룹으로 나누어 단순화하기 - 개념 - 개념의 세 가지 관점 - 객체를 분류하기 위한 틀 - 분류는 추상화를 위한 도구다 타입 - 타입은 개념이다 - 데이터 타입 - 객체와 타입 - 행동이 우선이다 타입의 계층 - 트럼프 계층 - 일반화/특수화 관계 - 슈퍼타입과 서브타입 - 일반화는 추상화를 위한 도구다 정적 모델 - 타입의 목적 - 그래서 결국 타입은 추상화다 - 동적 모델과 정적 모델 - 클래스 ▣ 04장: 역할, 책임, 협력 협력 - 요청하고 응답하며 협력하는 사람들 - 누가 파이를 훔쳤지? - 재판 속의 협력 책임 - 책임의 분류 - 책임과 메시지 역할 - 책임의 집합이 의미하는 것 - 판사와 증인 - 역할이 답이다 - 협력의 추상화 - 대체 가능성 객체의 모양을 결정하는 협력 - 흔한 오류 - 협력을 따라 흐르는 객체의 책임 객체지향 설계 기법 - 책임-주도 설계 - 디자인 패턴 - 테스트-주도 개발 ▣ 05장: 책임과 메시지 자율적인 책임 - 설계의 품질을 좌우하는 책임 - 자신의 의지에 따라 증언할 수 있는 자유 - 너무 추상적인 책임 - ‘어떻게’가 아니라 ‘무엇’을 - 책임을 자극하는 메시지 메시지와 메서드 - 메시지 - 메서드 - 다형성 - 유연하고 확장 가능하고 재사용성이 높은 협력의 의미 - 송신자와 수신자를 약하게 연결하는 메시지 메시지를 따라라 - 객체지향의 핵심, 메시지 - 책임-주도 설계 다시 살펴보기 - What/Who 사이클 - 묻지 말고 시켜라 - 메시지를 믿어라 객체 인터페이스 - 인터페이스 - 메시지가 인터페이스를 결정한다 - 공용 인터페이스 - 책임, 메시지, 그리고 인터페이스 인터페이스와 구현의 분리 - 객체 관점에서 생각하는 방법 - 구현 - 인터페이스와 구현의 분리 원칙 - 캡슐화 책임의 자율성이 협력의 품질을 결정한다 ▣ 06장: 객체 지도 기능 설계 대 구조 설계 두 가지 재료: 기능과 구조 안정적인 재료: 구조 - 도메인 모델 - 도메인의 모습을 담을 수 있는 객체지향 - 표현적 차이 - 불안정한 기능을 담는 안정적인 도메인 모델 불안정한 재료: 기능 - 유스케이스 - 유스케이스의 특성 - 유스케이스는 설계 기법도, 객체지향 기법도 아니다 재료 합치기: 기능과 구조의 통합 - 도메인 모델, 유스케이스, 그리고 책임-주도 설계 - 기능 변경을 흡수하는 안정적인 구조 ▣ 07장: 함께 모으기 커피 전문점 도메인 - 커피 주문 - 커피 전문점이라는 세상 설계하고 구현하기 - 커피를 주문하기 위한 협력 찾기 - 인터페이스 정리하기 - 구현하기 코드와 세 가지 관점 - 코드는 세 가지 관점을 모두 제공해야 한다 - 도메인 개념을 참조하는 이유 - 인터페이스와 구현을 분리하라 추상화 기법 |
우리나라에는 실력이 뛰어난 개발자는 많다. 하지만 그 뛰어난 실력을 전달해서 후배 개발자들의 성장에 도움을 주는 것은 별개다. 난 한국에는 자신의 실력과 비례해서 그것들을 남에게 잘 전달하는 능력을 가진 개발자가 별로 없다고 생각했다. 그래서 해외 프로그래밍 도서 번역본만을 찾아다녔다.
그런데 이 책은 정말 훌륭하다.
객체지향을 어떻게 바라보고 어떤 관점을 가져야 하는지를 프로그래밍 관점이 아니라 인문학의 관점에서 이야기를 해 준다. 서술도 훌륭하고 예시도 적절하다. 읽으면 읽을수록 내용이 맘에 들고 글쓴이를 만나보고 싶었다.
정말 대학교에서 최소한 교양과목으로라도 이 책에 대해서 가르쳐주면 참 좋겠다는 생각을 했다.
이런 책을 이제야 발견하게 되어서 너무 아쉽다.
이 책에 대한 사람마다의 호불호는 분명 있을 것이다. 글을 읽어본 한 개인 독자로서 얘기하자면,
이 책은 프로그래밍을 할 때 '어떻게' 에 대한 정보가 필요한 개발자보다는 '무엇을','왜' 와 같은 본질적인 질문을 더 자주 떠올리는 사람이 정말 기분좋게 읽을 만한 책이다.
가장 먼저, 책 디자인이 너무 심플해서 좋았다. 토끼가 그려져 있는데, 귀여움... 대신 책이 때가 잘 탈 것 같다.
그 동안 객체에 대해서 현실세계?에 있는 모든 것은 객체가 될 수 있다. ~ 붕어빵틀과 붕어빵~ 등등 어렴풋하게 알고 있는 객체지향에 대한 개념들에 대해서 은은하게 고민하던 문제들을 쏙쏙 모두 집어주는 점이 매우 신기하면서도, 그게 너무 재밌게 다가왔던 것 같다.
또한 이상한 나라의 앨리스를 예로 들면서 설명하는데 설명법이 색다르고 좋았다.
객체지향에 대해서 고민하는 사람이라면 꼭 한번 읽어봤으면 좋겠다.