02. 이상한 나라의 객체

2023. 5. 29. 00:00북리뷰/객체지향 사실과 오해

728x90

객체지향 페러다임의 목적은 현실 세계를 모방하는 것이 아니라 현실 세계를 기반으로 새로운 세계를 창조하는 것

 

- 행동에 따라 상태가 변함

- 상태를 결정하는 것은 행동, 행동의 결과를 결정하는 것은 상태

 

# 갹체의 특징

- 상태를 가지며 상태는 변경 가능함

- 상태를 변경시키는 것은 행동임

--행동의 결과는 상태 의존적, 상태를 이용해 서술 가능

--행동의 순서가 결과에 영향을 미침

- 객체는 어떤 상태에 있더라도 유일하게 식별 가능

 

## 상태(state, property)

상태를 이용하면 현재를 기반으로 객체의 행동 방식을 이해할 수 있음

근본적으로 세상의 복잡성을 완화, 인지 과부하를 줄일 수 있음

- 모든 객체의 상태는 단순한 값과 객체의 조합으로 표현 가능

- 링크 : 객체와 객체 사이의 의미 있는 연결

 

객체지향 세계에서 객체는 다른 객체의 상태에 직접적으로 접근할 수도, 상태를 변경할 수도 없음, 각 객체는 자신의 상태를 책임져야

 

## 행동

다른 객체로 하여금 간접적으로 객체의 상태를 변경하는 것을 가능케 함 : 부수효과

객체의 상태는 저절로 변경되지 않음

행동 : 외부 요청 또는 수신된 메시지에 응답하기 위에 동작하고 반응하는 활동

행동의 결과로 객체는 자신의 상태를 변경하거나 다른 객체에게 메시지를 전달할 수 있음

객체의 행동은 다른 객체와 협력해 참여하므로 행동은 외부에 가시적이어야

 

### 객체와 행동 사이의 관계

- 객체의 행동은 상태에 영향을 받음

- 객체의 행동은 상태를 변경시킴

- 상호작용이 현재의 상태에 어떤 방식으로 의존하는가

- 상호작용이 어떻게 현재 상태를 변경시키는가

 

 

## 캡슐화

- 객체는 상태를 캡슐 안에 감춰둔 채 외부로 노출하지 않음.

- 객체가 외부에 노출하는 것은 행동뿐, 외부에서 객체에 접근할 수 있는 방법 역시 행동뿐

- 상태 변경 여부는 객체 스스로 결정

- 캡슐화로 인해 객체의 자율성을 높임

 

## 식별자

객체를 구별할 수 있는 특정한 프로퍼티.

단순한 값은 식별자를 가지지 않음.

동등성 : 상태를 이용해 두 값이 같은지 판단할 수 있는 성질

동일성 : 식별자를 기반으로 객체가 같은지를 판단할 수 있는 성질

 

# 기계로서의 객체

- 쿼리(query) : 객체 상태를 조회하는 작업

- 명령(command) : 객체 상태를 변경하는 작업

 

# 행동이 상태를 결정

- 초보자가 가장 쉽게 빠지는 함정은 상태를 중심으로 객체를 바라보는 것

## 상태를 먼저 결정하고 행동을 나중에 결정할 시 문제점 

- 캡슐화가 저해 : 상태를 캡슐화하지 못하고 공용 인터페이스에 그대로 노출시킬 수 있음

- 객체를 협력자가 아닌 고립된 섬으로 만듬

- 객체 재사용성이 저해

객체 설계시 상태가 아닌 행동에 초점을 맞춰야

어플리케이션 안에서 어떤 행동을 원하느냐가 어떤 객체를 적합한지를 결정

즉, 행동을 결정한 후에 행동에 필요한 정보를 고려하여 선택

 

# 의인화

- 현실속에서 수동적인 존재가 SW객체로 구현될 때는 능동적으로 변함

--EX) 트럼프 카드가 스스로 뒤집고, 걸고, 섞임

- 객체는 현실 객체의 부분적 특징을 모방하는 것이 아니라, 현실 객체가 가지지 못한 추가적인 능력을 보유함

- 심지어 현실 세계에 존재하지 않는 것들도 새로 탄생 

 

# 은유

현실 세계와 객체지향 세계 사이의 관계

- 은유의 본질은 한 종류의 사물을 다른 종류의 사물 관점에서 이해하고 경험

 

 

728x90

'북리뷰 > 객체지향 사실과 오해' 카테고리의 다른 글

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