Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[이동현] ch03-04 #11

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
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
33 changes: 33 additions & 0 deletions donghyeon/ch03.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# ch03. 역할, 책임, 협력

- 객체지향의 본질: 협력하는 객체들의 공동체를 창조하는 것
- 객체지향의 핵심
- 협력(collaboration): 기능을 구현하기 위해 객체들이 수행하는 상호작용
- 메시지 전송(message sending)이 객체간의 의사소통 수단
- 메시지를 받은 객체는 자율적으로 메시지 처리
- 자율성을 보장하기한 가장 기본적인 방법은 내부 구현을 **캡슐화**하는 것
- 객체를 설계하는데 필요한 문맥(context) 제공
- 책임(responsibility): 객체가 협력에 참여하기 위해 수행하는 로직
- 책임의 분류
- 하는 것(doing)
- 객체 생성, 계산 수행 등 스스로 하는 것
- 다른 객체의 행동을 시작시키는 것
- 다른 객체의 활동을 제어하고 조절하는 것
- 아는 것(knowing)
- 사적인 정보에 관해 아는 것
- 관련된 객체에 관해 아는 것
- 자신이 유도하거나 계산할 수 있는 것에 대해 아는 것
- 책임 할당시 고려해야 할 요소
- 메시지가 객체를 결정: 필요한 메시지를 먼저 식별, 메시지를 처리할 객체를 나중에 선택
- 객체가 최소한의 인터페이스를 가질 수 있게 됨
- 객체는 충분히 추상적인 인터페이스를 가질 수 있게 됨
- 행동이 상태를 결정
- 응집도가 높고 결합도가 낮은 설계를 할 수 있게 됨
- 역할(role): 객체가 맡게 되는 책임의 집합
- 역할은 구체적인 객체를 포괄하는 추상화
- 역할을 구현하는 가장 일반적인 방법인 인터페이스 또는 추상 클래스를 사용하는 것
- 역할을 통해 유연하고 재사용 가능한 협력을 얻을 수 있음
- 객체는 다양한 역할을 가질 수 있음. 하지만 하나의 협력 안에서는 하나의 역할로 보여진다.
- 하나의 협력 안에서 동일한 역할을 수행하는 객체들은 대체 가능하다.
- 역할은 특정한 객체의 종류를 캡슐화하기 때문!
- 객체지향 설계의 핵심: 협력을 구성하기 위해 적절한 객체를 찾고 적절한 책임을 할당
8 changes: 8 additions & 0 deletions donghyeon/ch04.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# ch04. 설계 품질과 트레이드오프

- 역할, 책임, 협력 중 '책임'이 가장 중요하다.
- 책임이 객체지향 애플리케이션 전체의 품질을 결정한다.
- 적절한 책임은 높은 응집도, 낮은 결합도와 연관되어 있다.
- 객체의 행동에 초점을 맞추자!
- 진정한 캡슐화: 변할 수 있는 모든 것을 감추는 것.
- 데이터 캡슐화: 내부 속성을 외부로부터 감추는 것