From e8cb4d85ae9f30126835c20580d23dd76f1252a6 Mon Sep 17 00:00:00 2001 From: dhlee3994 Date: Sun, 21 Apr 2024 15:22:06 +0900 Subject: [PATCH 1/2] =?UTF-8?q?ch03=20=EC=97=85=EB=A1=9C=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- donghyeon/ch03.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 donghyeon/ch03.md diff --git a/donghyeon/ch03.md b/donghyeon/ch03.md new file mode 100644 index 0000000..45a1186 --- /dev/null +++ b/donghyeon/ch03.md @@ -0,0 +1,33 @@ +# ch03. 역할, 책임, 협력 + +- 객체지향의 본질: 협력하는 객체들의 공동체를 창조하는 것 +- 객체지향의 핵심 + - 협력(collaboration): 기능을 구현하기 위해 객체들이 수행하는 상호작용 + - 메시지 전송(message sending)이 객체간의 의사소통 수단 + - 메시지를 받은 객체는 자율적으로 메시지 처리 + - 자율성을 보장하기한 가장 기본적인 방법은 내부 구현을 **캡슐화**하는 것 + - 객체를 설계하는데 필요한 문맥(context) 제공 + - 책임(responsibility): 객체가 협력에 참여하기 위해 수행하는 로직 + - 책임의 분류 + - 하는 것(doing) + - 객체 생성, 계산 수행 등 스스로 하는 것 + - 다른 객체의 행동을 시작시키는 것 + - 다른 객체의 활동을 제어하고 조절하는 것 + - 아는 것(knowing) + - 사적인 정보에 관해 아는 것 + - 관련된 객체에 관해 아는 것 + - 자신이 유도하거나 계산할 수 있는 것에 대해 아는 것 + - 책임 할당시 고려해야 할 요소 + - 메시지가 객체를 결정: 필요한 메시지를 먼저 식별, 메시지를 처리할 객체를 나중에 선택 + - 객체가 최소한의 인터페이스를 가질 수 있게 됨 + - 객체는 충분히 추상적인 인터페이스를 가질 수 있게 됨 + - 행동이 상태를 결정 + - 응집도가 높고 결합도가 낮은 설계를 할 수 있게 됨 + - 역할(role): 객체가 맡게 되는 책임의 집합 + - 역할은 구체적인 객체를 포괄하는 추상화 + - 역할을 구현하는 가장 일반적인 방법인 인터페이스 또는 추상 클래스를 사용하는 것 + - 역할을 통해 유연하고 재사용 가능한 협력을 얻을 수 있음 + - 객체는 다양한 역할을 가질 수 있음. 하지만 하나의 협력 안에서는 하나의 역할로 보여진다. + - 하나의 협력 안에서 동일한 역할을 수행하는 객체들은 대체 가능하다. + - 역할은 특정한 객체의 종류를 캡슐화하기 때문! +- 객체지향 설계의 핵심: 협력을 구성하기 위해 적절한 객체를 찾고 적절한 책임을 할당 From 9c3a99dcb43c77efe9dd5d601dda7d5068bc2bc9 Mon Sep 17 00:00:00 2001 From: dhlee3994 Date: Sun, 21 Apr 2024 19:26:48 +0900 Subject: [PATCH 2/2] =?UTF-8?q?ch04=20=EC=97=85=EB=A1=9C=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- donghyeon/ch04.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 donghyeon/ch04.md diff --git a/donghyeon/ch04.md b/donghyeon/ch04.md new file mode 100644 index 0000000..f27f2b7 --- /dev/null +++ b/donghyeon/ch04.md @@ -0,0 +1,8 @@ +# ch04. 설계 품질과 트레이드오프 + +- 역할, 책임, 협력 중 '책임'이 가장 중요하다. +- 책임이 객체지향 애플리케이션 전체의 품질을 결정한다. +- 적절한 책임은 높은 응집도, 낮은 결합도와 연관되어 있다. + - 객체의 행동에 초점을 맞추자! +- 진정한 캡슐화: 변할 수 있는 모든 것을 감추는 것. + - 데이터 캡슐화: 내부 속성을 외부로부터 감추는 것