Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions 강연주/1장.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## 1. 협력하는 객체들의 공동체
객체지향에서 가장 중요한 개념은 바로 역할, 책임, 협력이다.
- 객체는 각자의 역할이 있고
- 그 역할에 맡는 책임이나 임무를 다하여
- 다른 객체와 협력하는 과정을 통해 요청에 대해 응답한다.

위와 같은 사실은 몇 가지 중요한 개념을 포함한다.
- 여러 객체가 동일한 역할을 수행할 수 있다. 역할은 대체 가능성을 의미한다.
- 공통된 내용을 포함한 인터페이스와, 그것을 실제로 구현한 클래스를 구분함으로써 DIP(의존 관계 역전)가 성립한다.
- Service는 Repository 구현체의 내용을 모른체, Interface에만 의존하고, Repository의 구현체가 Interface에 의존(상속)한다.
- 책임을 수행하는 방법은 자율적으로 선택할 수 있다.(다형성)
- [상속과 인터페이스 차이] https://velog.io/@rudwhd515/%EC%83%81%EC%86%8D-vs-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4
- 다형성 구현 방법 -> 상속의 코드 재사용성 < 인터페이스의 유연성
- 객체의 내부와 외부가 명확히 구분된다.
- setter 지양
- 핵심 규칙을 구현한 코드는 도메인 모델에만 위치 -> 규칙이 바뀌거나 규칙을 확장해야할 때 다른 코드에 영향을 덜 주고 변경 내역을 모델에 반영

즉, 1장에서 하고 싶은 말은 객체지향 프로그래밍의 핵심은 역할, 책임, 협력이고
이를 위해서는 인터페이스 구현, 각자 역할의 영역 침범하지 않기에 주의하여 코드를 짜야한다.