# ch1-발상의 전환
## 객체지향 정의
- 높은 응집도(기능의 집중도), 낮은 결합도(관계의 의존성)를 지향하며 유연한 소프트웨어를 추구하는 개발 기법
### 어떻게 유연한 소프트웨어를 추구할 수 있을까
- 로직 구현보다는 객체가 외부에 노출하는 인터페이스를 잘 설계하는 것
- 객체지향적으로 리팩토링 하면서 객체 내부와 객체 간의 관계를 깔끔하게 정리하는 것
- 인터페이스를 통해 여러 객체와 **협력**하는 것
### 핵심
- 점(객체 하나 하나)보다 선(**객체 간의 협력** 관계)로 접근한다.
#### 내 생각
- 테스트코드를 작성하면 자연스럽게 객체지향적으로 코드 작성할 수 있다는 걸 집과 비교해서 독서실에 가면 공부에만 집중할 수 있다는 것과 비교하는 게 인상 깊었음. 테스트코드에 의도적으로 좀 시간을 들여서 작성해야겠다.
# ch2-객체지향을 돕는 도구
# ch3-객체지향의 넓이
# ch4-디자인패턴의 깊이
# ch5-한 점 보기