-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
96 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
## Chapter 2 : 이상한 나라의 객체 | ||
|
||
<br/> | ||
|
||
- [은유와 객체](#은유와-객체) | ||
- [행동과 상태](#행동과-상태) | ||
- [식별자](#식별자) | ||
- [마무리](#마무리) | ||
- [💡 생각해볼 점](#-생각해볼-점) | ||
|
||
<br/> | ||
|
||
### 은유와 객체 | ||
- `객체` : 인간이 인지하고 구별 할 수 있는 = `식별가능한` 개체 또는 사물(구체적일수도 추상적인 개념일 수도) | ||
- 인간의 인지능력은 `물리적인것`뿐 아니라 `추상적인 사물`(개념적으로 경계 지을 수 있는)까지도 인지 | ||
|
||
- 객체지향 : 현실세계를 기반으로(수동적인 존재) -> 새로운 세계(능동적인 존재) 창조 | ||
- 새로운 세계는 현실의 은유 | ||
- 객체가 능력을 가짐 | ||
|
||
<br/> | ||
|
||
### 행동과 상태 | ||
**상태** | ||
- 단순한 값(숫자, 문자열, 참거짓)은 객체가 아님 | ||
- `단순한 값`은 `객체의 상태를 표현`하기 위해 사용됨 | ||
(때로는 단순한 값이 아니라 객체를 사용해 다른 객체의 상태를 표현하는 경우도 있음) | ||
|
||
=> 모든 객체의 `상태`는 `단순한 값과 객체`의 조합으로 표현할 수 있음 | ||
|
||
- 이때 객체의 상태를 구성하는 모든 특징을 통틀어 `객체의 프로퍼티`라고 합 | ||
- 프로퍼티 : 변경되지 않고 고정되기 때문에 정적 | ||
- 프로퍼티 값 : 시간이 흐름에 따라 변경되기 때문에 동적 | ||
|
||
<br/> | ||
|
||
**행동** | ||
- 상태를 결정하는 것은 `행동` | ||
- 객체의 행동은 상태에 영향을 받음 | ||
- 객체가 취하는 행동은 객체 자신의 상태를 변경 | ||
- 행동의 결과를 결정하는 것은 `상태` | ||
- 상태가 변하더라도(`어떤 상태`에 있더라도) 유일한 존재로 `식별가능` | ||
- 행동의 순서가 결과에 영향 | ||
|
||
=> 객체는 `구별가능한 식별자 / 특징적인 행동 / 변경가능한 상태`를 가짐 | ||
=> 객체의 `상태를 변화`시키는 건 자신의 `자발적인 행동`뿐 | ||
(객체의 행동을 `유발`하는 것은 `외부로부터 전달된 메시지`지만 객체의 상태를 변경할지 `여부`는 객체 `스스로 결정`) | ||
= 다른 객체와 협력하는 방법 : 행동 | ||
|
||
<br/> | ||
|
||
### 식별자 | ||
|
||
- 객체가 식별 가능하다는 것 = 객체를 서로 구별할 수 있는 `특정한 프로퍼티`가 객체 안에 존재한다는 것을 의미 | ||
- 이 프로퍼티를 `식별자`라고 함 | ||
|
||
<br/> | ||
|
||
- `동등성(equality)` : `상태를 이용`해 두 값이 같은지 판단 | ||
- 어떤 시점에 동일한 타입의 두 값이 같다면 언제까지라도 두 값은 동등한 상태를 유지할 것 | ||
|
||
- `동일성(identical)` : `식별자를 기반`으로 객체가 같은지를 판단 | ||
- 두 객체의 `상태가 다르더라도` 식별자가 같다면 두 객체를 같은 객체로 판단 | ||
|
||
<br/> | ||
|
||
**값(value)** | ||
- 변하지 않는 값은 모델링 = 불변상태(immutable) | ||
- 식별자가 없음 | ||
- 동등성 | ||
|
||
<br/> | ||
|
||
**객체(object)** | ||
- 시간에 따라 변경되는 상태를 포함 | ||
- 식별자가 있음(식별자가 상태에 독립적) | ||
- 동일성 | ||
|
||
<br/> | ||
|
||
### 마무리 | ||
- 객체는 다른 객체와 협력하기위해 존재함 | ||
- 이 때, 협력하려면 유일한 방법 : 행동 | ||
- 책임 주도 설계 | ||
- 설계시 행동을 먼저 결정하고 -> 행동에 적절한 상태를 선택하기 | ||
|
||
<br/><br/> | ||
|
||
## 💡 생각해볼 점 | ||
|
||
- 객체지향의 올바른 설계는 어떻게 해야하는걸까 | ||
- 객체를 캡슐화하기 위해서 | ||
저자가 말한것처럼 설계 시, 상태가 아닌 행동과 책임을 중심으로 먼저 생각해야겠다 | ||
- 앞으로 책에서도 더 나올 내용이겠지? 참고하되 비판적인 사고도 가지고 정리 해보도록 하자 | ||
|
||
<br/> |