Skip to content

Commit

Permalink
Create 02_이상한_나라의_객체.md
Browse files Browse the repository at this point in the history
  • Loading branch information
ttaehee authored Jan 2, 2023
1 parent a5ac00e commit cac9c26
Showing 1 changed file with 96 additions and 0 deletions.
96 changes: 96 additions & 0 deletions 객체지향의_사실과_오해/02_이상한_나라의_객체.md
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/>

0 comments on commit cac9c26

Please sign in to comment.