http://www.yes24.com/Product/Goods/18249021
『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝게도 많은 사람들이 객체지향의 본질을 오해하고 있다. 가장 널리 퍼져있는 오해는 클래스가 객체지향 프로그래밍의 중심이라는 것이다. 객체지향으로 향하는 첫 걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다.
이 책은 많은 사람들이 객체지향에 대한 오해를 하고 있다고 말하면서 시작합니다. 가장 널리 퍼져있는 오해는, 클래스가 객체지향의 중심이라는 것입니다. 객체지향은 클래스, 그리고 그것을 구현한 인스턴스로 이루어져 있던 게 아니었던 걸까요? 그렇다면 왜 그토록 수많은 문서와 책들은 클래스와 인스턴스로 객체지향을 설명하고 있었을까요?
책은 딱히 아름다운 코드라던지, 특이한 기술들에 대해서 설명하고 있지는 않습니다. 대신 여러 예시(이상한 나라의 앨리스)를 들면서 객체 지향의 진정한 의미에 대해서 설명합니다. 우리가 가지고 있는 잘못된 편견들을 하나씩 무너뜨리는 데 그 목표를 두고 있습니다.
총 8장으로 구성되어 있습니다. "객체란 무엇인가?"라는 본질적인 질문부터 배운 이론들을 활용한 구현 코드까지 유기적으로 연결되어 있습니다.
추천 독자는 "객체지향"의 진정한 개념을 알고 싶은 개발자들이 되겠네요. 중간부터 읽는 것은 이해하는 데 어려움을 줄 수 있기 때문에 권장하지 않습니다.
다음은 책을 읽으면서 정리한 내용입니다.
[객체란?]
- 식별 가능한 개체 또는 사물
- 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태를 가짐
- 상태: 특정 시점에 객체가 가지고 있는 정보의 집합
- 식별자: 객체를 구별할 수 있는 값
- 행동: 외부의 요청 또는 수신된 메시지에 응답하기 위해 동작하고 반응하는 활동
[객체의 역할 특징]
- 여러 객체가 동일한 역할을 수행할 수 있다.
- 역할은 대체 가능성을 의미한다.
- 각 객체는 책임을 수행하는 방법을 개별적으로 선택할 수 있다.
- 하나의 객체가 동시에 여러 역할을 수행할 수 있다.
[객체의 특성]
- 객체는 상태를 가지며 상태는 변경 가능하다.
- 객체의 상태를 변경시키는 것은 객체의 행동이다.
- 객체는 어떤 상태에 있더라도 유일하게 식별 가능하다.
[심볼, 내연, 외연]
- 심볼(symbol): 개념을 가리키는 간략한 이름이나 명칭 ex. 트럼프
- 내연(intension): 개념의 완전한 정의를 나타내며 내연의 의미를 이용해 객체가 개념에 속하는지 여부를 확인할 수 있다. ex. 몸이 납작하고 두 손과 두 발은 네모 귀퉁이에 달려 있는 등장인물
- 외연(extension): 개념에 속하는 모든 객체의 집합 ex. 정원사, 병사, 신하, 왕자와 공주 등
[객체지향 설계 기법]
1. 책임-주도 설계: 협력에 필요한 책임들을 식별하고 적합한 객체에게 책임을 할당하는 방식
2. 디자인 패턴: 전문가들이 반복적으로 사용하는 해결 방법을 정의해 놓은 설계 템플릿 모음
3. 테스트-주도 개발(TDD): 테스트를 먼저 작성하고 테스트를 통과하는 구체적인 코드를 추가하면서 애플리케이션을 완성하는 방식
참고
'개발서적' 카테고리의 다른 글
[리뷰#6] 스트리트 코더 (0) | 2023.11.29 |
---|---|
[리뷰#5] 육각형 개발자 (0) | 2023.07.31 |
[리뷰#4] 프로그래머의 길, 멘토에게 묻다. (0) | 2023.03.26 |
[리뷰#2] 좋은 코드, 나쁜 코드 (0) | 2023.02.05 |
[리뷰#1] 개발자를 위한 글쓰기 가이드 (0) | 2023.01.22 |