Skip to content

Commit

Permalink
Merge pull request #424 from ThinkAboutSoftware/dhlee-TEOOO-week1
Browse files Browse the repository at this point in the history
dhlee-teooo week1
  • Loading branch information
jongfeel authored Jun 17, 2024
2 parents 8772cd3 + d64261a commit e64e6a5
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 0 deletions.
11 changes: 11 additions & 0 deletions 2024/TheEssenseOfObjectOrientation/ch01.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# ch01. 협력하는 객체들의 공동체

- 객체지향의 목표는 새로운 세계를 창조하는 것
- 객체는 서로 협렵(요청 + 응답)한다.
- 협력 과정 속에서 특정한 역할(role)과 그에 대한 책임을 부여 받음
- 여러 객체가 동일한 역할을 수행 할 수 있음 => 역할은 대체가능
- 객체는 책임 수행 방법을 자율적으로 선택
- 요청 객체는 응답 객체의 책임 수행 방법을 몰라도 됨
- 하나의 객체가 동시에 여러 역할을 수행할 수 있음
- 객체
- 애플리케이션의 기능을 구현하는 협력적, 자율적 존재
19 changes: 19 additions & 0 deletions 2024/TheEssenseOfObjectOrientation/ch02.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# ch02. 이상한 나라의 객체

- 상태를 결정하는 것은 행동이지만 행동의 결과를 결정하는 것은 상태
- 상태
- 상호작용에 어떻게 반응하는가를 결정
- 프로퍼티
- 상태를 구성하는 모든 특징
- 속성(단순 값)과 링크(다른 객체를 가리키는 값)로 표현가능
- 행동
- 부수 효과(side effect)를 일으킴
- 협력하는 다른 객체에 메시지를 전송
- 상태의 캡슐화
- 객체는 자신의 상태를 스스로 관리하는 '자율적' 존재
- 메시지 송신자는 수신자의 상태 변경에 대해서는 전혀 알지 못하는 것이 캡슐화
- 캡슐화로 인해 객체의 자율성을 높임
- 객체의 행동에 초점을 맞춰야 함
- 객체가 다른 객체와 협력할 수 있는 유일한 방법은 행동
- 쿼리(query): 객체의 상태를 조회하는 작업
- 명령(command): 객체의 상태를 변경하는 작업
15 changes: 15 additions & 0 deletions 2024/TheEssenseOfObjectOrientation/ch03.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# ch03. 타입과 추상화

- 추상화
- 목적에 맞게 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도 감소
- 데이터 추상화: 공통된 특징으로 그룹으로 분류(classification)
- 어떤 특징으로 그룹화하는지에 따라 달라짐
- 객체의 행동으로 그룹화
- 객체는 행위에 따라 상태가 변할 수 있기 때문
- 타입(type)
- 공통점을 기반으로 객체들을 묶기 위한 틀
- 타입에 속한 데이터를 메모리에 어떻게 표현하는지를 감춤
- 일반화/특수화
- 일반적인 타입(슈퍼타입): 특수한 타입이 가진 모든 행동 중 일부 **행동**만을 가지는 타입
- 특수한 타입(서브타입): 일반적인 타입이 가진 모든 타입을 포함하고, 자기만의 **행동**을 추가하는 타입
- 제어 추상화: 내부 로직을 숨김
14 changes: 14 additions & 0 deletions 2024/TheEssenseOfObjectOrientation/ch04.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# ch04. 역할, 책임, 협력

- 객체는 협력(요청 + 응답)관계로 이루어짐
- 객체는 요청(메시지 전송)에 대해 적절한 행동을 할 의무(책임)가 있음
- 역할(role)
- 하나의 책임을 수행하는 객체는 여러개일 수 있기 때문에 책임을 수행하는 역할을 부여
- 역할을 대체하기 위해서는 행동이 호환되어야 함
- 수신받은 메시지(요청)를 동일한 방식으로 이해할 수 있어야 함
- 역할을 통해 협력을 추상화 할 수 있음
- 하나의 객체는 역할에 주어진 책임 외에 다른 책임을 수행할 수도 있음
- 깔끔한 협력 설계
1. 협력 문맥에서 객체가 수행하게 될 적절한 책임을 결정
2. 행동을 수행하는데 필요한 데이터 결정
3. 클래스의 구현 방법 결정

0 comments on commit e64e6a5

Please sign in to comment.