Skip to content
Merged
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
5 changes: 5 additions & 0 deletions 객체지향의_사실과_오해/1장/김민정_1장.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
![0001](https://user-images.githubusercontent.com/26458200/66711179-29aaab80-edc2-11e9-95e8-c4dcc5607d0c.jpg)
![0002](https://user-images.githubusercontent.com/26458200/66711181-2e6f5f80-edc2-11e9-9c99-086c8ab03310.jpg)
![0003](https://user-images.githubusercontent.com/26458200/66711182-2e6f5f80-edc2-11e9-89f1-69a97906c18a.jpg)
![0004](https://user-images.githubusercontent.com/26458200/66711183-2e6f5f80-edc2-11e9-8ad8-7e72bba6c0d3.jpg)
![0005](https://user-images.githubusercontent.com/26458200/66711184-2e6f5f80-edc2-11e9-8cdf-0e5e1fa55847.jpg)
34 changes: 34 additions & 0 deletions 객체지향의_사실과_오해/1장/최유성_1장.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## 협력하는 객체들의 공동체

1. 객체지향의 목표는 실세계를 모방하는것이 아니다. 새로운 세계를 창조하는 것이다.
- 그럼에도 실세계를 모방하는 형식으로 객체지향을 설명하는 이유는 **캡슐화, 자율성, 메시지를 주고받으며 공동의 목표를 달성하기 위한
협력하는 객체들의 관계**를 설명하기 좋다.

2. **요청과 응답을 통해 협력하여 어려운 문제를 해결하는 공동체**를 만들 수 있다.(객체간의 관계) 객체의 역할과 책임이 잘 나누어져 있다면
어려운 문제를 파악하기 더 쉬워질 것이다.

- 손님 -> 캐시어 -> 바리스타 -> 캐시어 -> 손님

3. 객체의 역할
- 여러객체가 동일한 역할을 수행할 수 있다.
- 역할은 대체 가능성을 의미한다.
- 각 객체는 책임을 수행하는 방법을 자율적으로 선택할 수 있다. (다형성)
- 하나의 객체가 동시에 여러 역할을 수행할 수 있다.


** 책임이 불분명한 객체는 애플리케이션의 미래 역시 불분명하게 만듬


4.객체는 협력적이어야 한다. 전지전능한 객체는 내부적인 복잡도를 만든다.

5.객체는 자율적이어야 한다. 여기서 자율적이란 말은 자기 스스로를 통제하는 것을 의미한다.
**어떤 요청에 대하여 어떻게 행동할 것인지, 자신의 어떤것을 변경할지는 스스로 결정한다.**

6. 객체는 다른 객체가 무엇을 수행하는지만 알 수 있다. 어떻게 수행하는지는 그 객체 자신만 알 수 있다.

7. 객체는 서로 메시지만으로 서로 요청하고 협력할 수 있다.

8. 외부의 요청이 무엇인지를 표현하는 메시지와 요청을 처리하기 위한 구체적인 방법 즉 메서드를 분리하는 것이 객체의 자율성을 높이는 핵심 메커니즘
- 캡슐화

9. 클래스는 객체를 표현하기 위한 도구이다. 중요한 것은 객체간의 동적인 관계이다.
7 changes: 7 additions & 0 deletions 객체지향의_사실과_오해/2장/김민정_2장.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
![0006](https://user-images.githubusercontent.com/26458200/66711185-2f07f600-edc2-11e9-89ed-4822ffc88f36.jpg)
![0007](https://user-images.githubusercontent.com/26458200/66711186-2f07f600-edc2-11e9-9da7-881cae612c53.jpg)
![0008](https://user-images.githubusercontent.com/26458200/66711187-2f07f600-edc2-11e9-9a4f-61fa002dc8cc.jpg)
![0009](https://user-images.githubusercontent.com/26458200/66711188-2fa08c80-edc2-11e9-9243-c4d676e89fec.jpg)
![0010](https://user-images.githubusercontent.com/26458200/66711189-2fa08c80-edc2-11e9-933c-dd890a9c6536.jpg)
![0011](https://user-images.githubusercontent.com/26458200/66711190-2fa08c80-edc2-11e9-9a0b-577dc3c33d4f.jpg)
![0012](https://user-images.githubusercontent.com/26458200/66711180-2dd6c900-edc2-11e9-93c4-86f19ff1ea5a.jpg)
36 changes: 36 additions & 0 deletions 객체지향의_사실과_오해/2장/최유성_2장.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
## 이상한 나라의 객체

1. 세상을 더 작은 객체로 분해하는 것은 본질적으로 세상이 포함하고 있는 복잡성을 낮출 수 있다.

2. 객체는 **상태,행동,식별자**를 지닌 실체
* 상태란 행동의 결과를 예상하기 위해 과거의 행적을 다 외워야 한다는 어려운 점을 해결하기 위해 고안되었다.
**행동의 과정과 결과를 단순하게 기술**
* 상태를 표현하는 모든 특징은 **프로퍼티**, 프로퍼티는 정적, 프로퍼티 값은 동적이다. (프로퍼티는 속성 단순값, 연관관계 두가지 종류로 구분)
* 객체와 객체의 사이의 의미있는 연결을 링크라 한다. (엘리스 객체가 가지고 있는 음료 객체 여기서 음료는 값이 아닌 객체이다.)
* 객체지향의 기본 사상은 **상태와 상태를 조작하기 위한 행동**을 하나의 단위로 묶는것이다.

3.Side effect (어떤 행동을 통해 객체의 상태를 변경시킨다.)

4.상태와 행동은 서로 의존적이다. 행동은 상태에 영향을 주고, 상태는 행동에 영향을 준다.

5.자신에게 주어진 책임을 완수하기 위해 다른 객체를 이용하고 다른 객체에게 서비스를 제공한다.
* 객체 자신의 상태변경
* 행동 내에서 협력하는 다른 객체에 대한 메시지 전송

6. 객체지향 세계와 현실세계가 가장 다른점은 객체의 의인화이다.
** 자신의 상태를 스스로 관리하는 자율적인 존재, 예를들어 음료가 자신의 양을 줄이는 것은 음료 자신이어야 한다.**

7. 메시지 송신자는 수신자의 상태변화에 대해 알지 못한다. **- 캡슐화**
* 상태를 잘 정의된 행동 집합 뒤로 캡슐화하는 것은 **객체의 자율성을 높이고 협력**을 단순하고 유연하게 만든다.
* 캡슐화되지 않은 채 다른 객체가 서로의 상태 변화에 대해 알고 관여한다면 객체간의 협력이 복잡해지고 파악하기 어려워진다.

8. 값과 객체의 가장 큰 차이점은 식별자의 유무다.
* 참조객체,엔티티는 식별자를 지닌 전통적인 의미
* VO는 식별자를 가지지 않는 (MONEY 같은 것)

9. 객체는 상태를 가지며 상태는 변경 가능, 객테의 상태를 변경시키는 것은 개게의 행동, 객체는 어떤 상태에 있더라도 유일하게 식별 가능

10. **상태를 먼저 결정하고 행동을 나중에 결정하는 방법은 나쁜 설계이다.**

* 상태를 먼저 결정할 경우 캡슐화가 저해 -> 상태에 초점을 맞출경우 공용 인터페이스에 상태가 노출될 수있다.
* 객체의 행동에 집중하여 설계할 시 문맥이 더 명확해진다.