2023. 5. 29. 00:00ㆍ북리뷰/객체지향 사실과 오해
객체지향 페러다임의 목적은 현실 세계를 모방하는 것이 아니라 현실 세계를 기반으로 새로운 세계를 창조하는 것
- 행동에 따라 상태가 변함
- 상태를 결정하는 것은 행동, 행동의 결과를 결정하는 것은 상태
# 갹체의 특징
- 상태를 가지며 상태는 변경 가능함
- 상태를 변경시키는 것은 행동임
--행동의 결과는 상태 의존적, 상태를 이용해 서술 가능
--행동의 순서가 결과에 영향을 미침
- 객체는 어떤 상태에 있더라도 유일하게 식별 가능
## 상태(state, property)
상태를 이용하면 현재를 기반으로 객체의 행동 방식을 이해할 수 있음
근본적으로 세상의 복잡성을 완화, 인지 과부하를 줄일 수 있음
- 모든 객체의 상태는 단순한 값과 객체의 조합으로 표현 가능
- 링크 : 객체와 객체 사이의 의미 있는 연결
객체지향 세계에서 객체는 다른 객체의 상태에 직접적으로 접근할 수도, 상태를 변경할 수도 없음, 각 객체는 자신의 상태를 책임져야
## 행동
다른 객체로 하여금 간접적으로 객체의 상태를 변경하는 것을 가능케 함 : 부수효과
객체의 상태는 저절로 변경되지 않음
행동 : 외부 요청 또는 수신된 메시지에 응답하기 위에 동작하고 반응하는 활동
행동의 결과로 객체는 자신의 상태를 변경하거나 다른 객체에게 메시지를 전달할 수 있음
객체의 행동은 다른 객체와 협력해 참여하므로 행동은 외부에 가시적이어야
### 객체와 행동 사이의 관계
- 객체의 행동은 상태에 영향을 받음
- 객체의 행동은 상태를 변경시킴
- 상호작용이 현재의 상태에 어떤 방식으로 의존하는가
- 상호작용이 어떻게 현재 상태를 변경시키는가
## 캡슐화
- 객체는 상태를 캡슐 안에 감춰둔 채 외부로 노출하지 않음.
- 객체가 외부에 노출하는 것은 행동뿐, 외부에서 객체에 접근할 수 있는 방법 역시 행동뿐
- 상태 변경 여부는 객체 스스로 결정
- 캡슐화로 인해 객체의 자율성을 높임
## 식별자
객체를 구별할 수 있는 특정한 프로퍼티.
단순한 값은 식별자를 가지지 않음.
동등성 : 상태를 이용해 두 값이 같은지 판단할 수 있는 성질
동일성 : 식별자를 기반으로 객체가 같은지를 판단할 수 있는 성질
# 기계로서의 객체
- 쿼리(query) : 객체 상태를 조회하는 작업
- 명령(command) : 객체 상태를 변경하는 작업
# 행동이 상태를 결정
- 초보자가 가장 쉽게 빠지는 함정은 상태를 중심으로 객체를 바라보는 것
## 상태를 먼저 결정하고 행동을 나중에 결정할 시 문제점
- 캡슐화가 저해 : 상태를 캡슐화하지 못하고 공용 인터페이스에 그대로 노출시킬 수 있음
- 객체를 협력자가 아닌 고립된 섬으로 만듬
- 객체 재사용성이 저해
객체 설계시 상태가 아닌 행동에 초점을 맞춰야
어플리케이션 안에서 어떤 행동을 원하느냐가 어떤 객체를 적합한지를 결정
즉, 행동을 결정한 후에 행동에 필요한 정보를 고려하여 선택
# 의인화
- 현실속에서 수동적인 존재가 SW객체로 구현될 때는 능동적으로 변함
--EX) 트럼프 카드가 스스로 뒤집고, 걸고, 섞임
- 객체는 현실 객체의 부분적 특징을 모방하는 것이 아니라, 현실 객체가 가지지 못한 추가적인 능력을 보유함
- 심지어 현실 세계에 존재하지 않는 것들도 새로 탄생
# 은유
현실 세계와 객체지향 세계 사이의 관계
- 은유의 본질은 한 종류의 사물을 다른 종류의 사물 관점에서 이해하고 경험
'북리뷰 > 객체지향 사실과 오해' 카테고리의 다른 글
06. 객체 지도 (0) | 2023.05.31 |
---|---|
05. 책임과 메시지 (0) | 2023.05.30 |
04. 역할, 책임, 협력 (0) | 2023.05.30 |
03. 타입과 추상화 (0) | 2023.05.29 |
01. 협력하는 객체들의 공동체 (0) | 2023.05.28 |