diff --git "a/\352\260\235\354\262\264\354\247\200\355\226\245\354\235\230_\354\202\254\354\213\244\352\263\274_\354\230\244\355\225\264/02_\354\235\264\354\203\201\355\225\234_\353\202\230\353\235\274\354\235\230_\352\260\235\354\262\264.md" "b/\352\260\235\354\262\264\354\247\200\355\226\245\354\235\230_\354\202\254\354\213\244\352\263\274_\354\230\244\355\225\264/02_\354\235\264\354\203\201\355\225\234_\353\202\230\353\235\274\354\235\230_\352\260\235\354\262\264.md" new file mode 100644 index 0000000..3e3ec5b --- /dev/null +++ "b/\352\260\235\354\262\264\354\247\200\355\226\245\354\235\230_\354\202\254\354\213\244\352\263\274_\354\230\244\355\225\264/02_\354\235\264\354\203\201\355\225\234_\353\202\230\353\235\274\354\235\230_\352\260\235\354\262\264.md" @@ -0,0 +1,96 @@ +## Chapter 2 : 이상한 나라의 객체 + +
+ +- [은유와 객체](#은유와-객체) +- [행동과 상태](#행동과-상태) +- [식별자](#식별자) +- [마무리](#마무리) +- [💡 생각해볼 점](#-생각해볼-점) + +
+ +### 은유와 객체 +- `객체` : 인간이 인지하고 구별 할 수 있는 = `식별가능한` 개체 또는 사물(구체적일수도 추상적인 개념일 수도) + - 인간의 인지능력은 `물리적인것`뿐 아니라 `추상적인 사물`(개념적으로 경계 지을 수 있는)까지도 인지 + +- 객체지향 : 현실세계를 기반으로(수동적인 존재) -> 새로운 세계(능동적인 존재) 창조 + - 새로운 세계는 현실의 은유 + - 객체가 능력을 가짐 + +
+ +### 행동과 상태 +**상태** +- 단순한 값(숫자, 문자열, 참거짓)은 객체가 아님 + - `단순한 값`은 `객체의 상태를 표현`하기 위해 사용됨 + (때로는 단순한 값이 아니라 객체를 사용해 다른 객체의 상태를 표현하는 경우도 있음) + +=> 모든 객체의 `상태`는 `단순한 값과 객체`의 조합으로 표현할 수 있음 + +- 이때 객체의 상태를 구성하는 모든 특징을 통틀어 `객체의 프로퍼티`라고 합 + - 프로퍼티 : 변경되지 않고 고정되기 때문에 정적 + - 프로퍼티 값 : 시간이 흐름에 따라 변경되기 때문에 동적 + +
+ +**행동** +- 상태를 결정하는 것은 `행동` + - 객체의 행동은 상태에 영향을 받음 + - 객체가 취하는 행동은 객체 자신의 상태를 변경 +- 행동의 결과를 결정하는 것은 `상태` + - 상태가 변하더라도(`어떤 상태`에 있더라도) 유일한 존재로 `식별가능` + - 행동의 순서가 결과에 영향 + +=> 객체는 `구별가능한 식별자 / 특징적인 행동 / 변경가능한 상태`를 가짐 +=> 객체의 `상태를 변화`시키는 건 자신의 `자발적인 행동`뿐 +(객체의 행동을 `유발`하는 것은 `외부로부터 전달된 메시지`지만 객체의 상태를 변경할지 `여부`는 객체 `스스로 결정`) += 다른 객체와 협력하는 방법 : 행동 + +
+ +### 식별자 + +- 객체가 식별 가능하다는 것 = 객체를 서로 구별할 수 있는 `특정한 프로퍼티`가 객체 안에 존재한다는 것을 의미 + - 이 프로퍼티를 `식별자`라고 함 + +
+ +- `동등성(equality)` : `상태를 이용`해 두 값이 같은지 판단 + - 어떤 시점에 동일한 타입의 두 값이 같다면 언제까지라도 두 값은 동등한 상태를 유지할 것 + +- `동일성(identical)` : `식별자를 기반`으로 객체가 같은지를 판단 + - 두 객체의 `상태가 다르더라도` 식별자가 같다면 두 객체를 같은 객체로 판단 + +
+ +**값(value)** +- 변하지 않는 값은 모델링 = 불변상태(immutable) +- 식별자가 없음 +- 동등성 + +
+ +**객체(object)** +- 시간에 따라 변경되는 상태를 포함 +- 식별자가 있음(식별자가 상태에 독립적) +- 동일성 + +
+ +### 마무리 +- 객체는 다른 객체와 협력하기위해 존재함 + - 이 때, 협력하려면 유일한 방법 : 행동 +- 책임 주도 설계 + - 설계시 행동을 먼저 결정하고 -> 행동에 적절한 상태를 선택하기 + +

+ +## 💡 생각해볼 점 + +- 객체지향의 올바른 설계는 어떻게 해야하는걸까 + - 객체를 캡슐화하기 위해서 + 저자가 말한것처럼 설계 시, 상태가 아닌 행동과 책임을 중심으로 먼저 생각해야겠다 + - 앞으로 책에서도 더 나올 내용이겠지? 참고하되 비판적인 사고도 가지고 정리 해보도록 하자 + +