조영호 님의 '객체지향 프로그래밍' 관련된 책은 두 권이 있고 4가지 주제를 이야기한다.(2021년 기준)
- 객체지향은 클래스 중심이 아닌 객체를 바라보는 것이다.
- 객체는 독립적인 존재가 아니라 기능 구현을 위해 협력하는 공동체의 존재이다.
- 객체들에게 적절한 역할과 책임을 부여할 수 있어야 한다.
- 1,2,3의 내용을 요구사항에 맞게 설계하고 프로그래밍 언어로 담아내야 한다.
책 "오브젝트" 는 4가지 주제 중 3,4번을 이야기한다.
객체에 적절한 역할과 책임을 부여하는 방법과 유연하면서도 요구사항에 적절한 협력을 설계하는 방법을 코드로 설명한다.
여기서 소개하는 방법은 유일한 것이 아니고, 실무에 적용하는 방법이 부족하지만, 객체지향 프로그래밍의 출발점으로 생각하면 좋다.
"객체 지향의 사실과 오해"는 추상적인 개념, 이론, 용어 설명 중심이었다면 "오브젝트"는 실제 코드와 함께 설명한다.
객체 지향의 사실과 오해만 읽으면 추상적으로만 다가오기 때문에 두 책을 함께 공부하기 좋다.
혼자 공부하지만, 이미 진행된 스터디를 참고하여 요약,정리하려 한다.
들어가며
- 이 책은 객체지향 패러다임에 관한 책, 절차형과 객체지향을 비교하며 서로 장단점 설명, 객체지향 패러다임은 은총알이 아니다. 적재적소에 사용하자.
- 2021.11.23 - [👨👩👦👦 OOP] - 📓 오브젝트 0장 : 들어가며
1장. 객체 설계
- 책의 전체 주제 함축, 티켓 판매 시스템 도메인 예시 설명, 이해 안 되더라도 슥 읽어보면 된다. (다음 장들 읽으면 이해됨)
2장. 객체지향 프로그래밍
- 영화 예매 시스템 도메인 설명, 객체지향적 작성 코드 이해
3장. 역할, 책임 협력
- 2장에서 구현한 영화예매 시스템을 역할, 책임, 협력 관점에서 설명 → 책임 주도 설계 이해
- 객체지향 설계 핵심은 클래스, 상속이 아니라 역할, 책임, 협력임을 확인
- 책의 핵심 주제
4장. 설계 품질과 트레이드오프
- 2,3 내용을 절차적으로 다시 구현하고 나쁜 이유 설명, 품질 평가를 위한 캡슐화, 응집도, 결합도 개념 소개
5장. 책임 할당하기
- GRASP라고 부르는 책임 할당 패턴 설명, 2장을 책임 할당 관점에서 설명하며 4장 절차적과 비교하며 설명
6장. 메시지와 인터페이스
- 퍼블릭 인터페이스 작성을 위한 설계 원칙 소개 (디미터 법칙, 묻지 말고 시켜라, 의도를 드러내는 인터페이스, 명령-쿼리 분리 원칙)
7장. 객체 분해
- 추상화의 한 가지 방법인 분해의 역사를 다룬다. 프로시저 추상화와 데이터 추상화 사이의 갈등, 역사를 이해하고 객체 지향에 이르기까지 sw 패러다임 이해
8장. 의존성 관리하기
- 의존성이 무엇인지, 의존성 관리가 곧 변경의 관리이고 유연한 설계를 낳는 기반이라는 사실 이해
9장. 유연한 설계
- 8장 토대로 '이름을 가진 설계 원칙' 기법 이해를 통해 추상적인 개념과 장황한 메커니즘 이해, 설계 논의 시 공통의 어휘 익힌다는 점 이해
10장. 상속과 코드 재사용
- 상속 이해, 코드 재사용을 위해 상속 사용하지 마라!
11장. 합성과 유연한 설계
- 상속 이해, 코드 재사용을 위해 상속 사용하지 마라!
12장. 다형성
- 객체지향 핵심 다형성 이해, 서브타입 다형성 중점, 객체지향 시스템이 런타임에 메시지를 처리할 적절한 메서드 찾기 위해 사용하는 동적 메서드 탐색 기법 이해
13장. 서브 클래생과 서브 타이핑
- 슈퍼 타입과 서브타입 개념 설명, 타입 계층 만족 위한 설계 원칙 설명, 올바른 타입 계층 구성은 클라이언트 관점에서 슈퍼 타인과 서브타입 사이에 행동이 호환되도록 만들어야 한다는 사실 이해
14장. 일관성 있는 협력
- 유사한 요구사항 구현 시 협력 패턴 적용, 설계 일관성 있게 만드는 캡슐화 기법 소개
15장. 디자인 패턴과 프레임워크
- 설계를 재사용하는 디자인 패턴과 설계와 코드를 재사용하는 프레임워크 살펴보기, 제어 역전 원칙 설명
부록.
⛓ Reference
'📚 Books' 카테고리의 다른 글
책 '업무에 바로 쓰는 SQL 튜닝` 소개와 정리 📘 (1) | 2022.05.15 |
---|---|
책 '이펙티브 자바(Effective Java)' 소개와 요약정리📙 (2) | 2022.03.05 |
책 '소프트웨어의 품격(Seriously Good Software)' 소개와 요약정리, 스터디 📕 (2) | 2022.01.08 |
책 '단위 테스트(Unit Test)' 소개와 요약정리 📗 (0) | 2022.01.04 |
책 '객체지향의 사실과 오해' 소개와 요약정리 📔 (0) | 2021.11.15 |
댓글