04. 역할, 책임, 협력

2023. 5. 30. 11:19북리뷰/객체지향 사실과 오해

728x90

인간이 어떤 본질적인 특성을 지니고 있느냐가 아니라 어떤 상황에 처해있느냐가 인강의 행동을 결정.

즉, 각 개인이 처해 있는 정황 또는 문맥이 인간의 행동 방식을 결정 

인간의 행동을 결정하는 문맥은 타인과의 협력

객체의 모양을 빚는 것은 객체가 참여하는 협력.

어떤 협력에 참여하는지가 객체에 필요한 행동을 결정하고, 필요한 행동이 객체의 상태를 결정

 

# 협력

객체들은 동일한 목적을 달성하기 위해 협력

객체 간 요청과 응답을 통해 협력

 

# 책임

어떤 객체가 어떤 요청에 대해 대답해 줄 수 있거나, 적절한 행동을 할 의무가 있는 경우 책임을 가진다고 함

 

## 책임의 범주

### 하는 것(doing)

- 객체를 생성하거나 계산을 하는 등의 스스로 하는 것

- 다른 객체의 행동을 시작시키는 것

- 다른 객체의 활동을 제어하고 조절하는 것

 

### 아는 것(knowing)

- 개인적인 정보에 관해 아는 것

- 관련된 객체에 관해 아는 것

- 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것

 

책임은 객체의 외부에 제공해줄 수 있는 정보(아는 것의 측면)와 외부에 제공해 줄 수 있는 서비스(하는 것의 측면)의 목록

책임은 공용 인터페이스를 구성함

 

# 책임과 메시지

객체는 다른 객체로부터 요청이 전송됐을 경우에만 자신에게 주어진 책임을 수행

객체가 다른 객체에게 주어진 책임을 수행하도록 요청을 보내는 것을 메시지 전송이라고 함.

즉, 두 객체 간의 협력은 메시지를 통해 이루어짐

책임과 메시지 수준은 같지 않음

책임이 여러 메시지로 분할되는 것이 일반적

 

# 책임의 집합

책임의 집함은 객체가 협력 안에서 수행하는 역할을 암시

역할을 사용헤 협력을 모두 포괄할 수 있는 하나의 협력으로 추상화 가능

 

# 협력의 추상화

- 동일한 역할을 수행할 수 있다는 것은 동일한 책임의 집합을 수행한다는 것, 즉, 동일한 메시지를 수신할 수 있다는 것

역할의 가장 큰 가치는 하나의 협력 안에서 여러 종류의 객체가 참여할 수 있게 함으로써 협력을 추상화

역할을 이용하면 협력을 추상화함으로써 단순화

상태와 행위에 대해 고민하기 전에 협력을 정의 

 

# 객체지향 시스템 설계 절차

1. 시스템이 사용자에게 제공해야 하는 기능인 시스템 책임 파악

2. 시스템 책임을 더 작은 책임으로 분할

3. 분할된 책임을 수행할 수 있는 적절한 객체 또는 역할을 찾아 책임을 할당

4. 객체가 책임을 수행하는 중에 다른 객체의 도움이 필요한 경우 이를 책임질 적절한 객체 또는 역할을 찾음

5. 해당 객체 또는 역할에게 책임을 할당함으로써 두 객체가 협력하게 함

 

# 디자인 패턴

책임 주도 설계의 결과를 표현.

패턴 : 모범이 되는 설계

디자인 패턴은 반복적으로 발생하는 문제와 그 문제에 대한 해법의 쌍으로 정의

디자인 패턴은 공통으로 사용할 수 있는 역할, 책임, 협력의 템플릿

 

 

 

728x90

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

06. 객체 지도  (0) 2023.05.31
05. 책임과 메시지  (0) 2023.05.30
03. 타입과 추상화  (0) 2023.05.29
02. 이상한 나라의 객체  (0) 2023.05.29
01. 협력하는 객체들의 공동체  (0) 2023.05.28