닭발개발

[오브젝트] 7일차. 78-91pg | 객체의 책임, 역할 본문

책책책 책을 읽읍시다‼ ver.개발/[ 오브젝트: 코드로 이해하는 객체지향 설계 ]

[오브젝트] 7일차. 78-91pg | 객체의 책임, 역할

D269 2023. 7. 3. 21:06
728x90

7일차.

 
오브젝트: 코드로 이해하는 객체지향 설계[2주차_월요일]
78-91pg
 
 

#요약 

 **Chapter 03. 역할, 책임, 협력** 
 
- 객체지향 패러다임의 관점에서 핵심은 역할, 책임, 협력이다.
 
02. 책임
1) 책임이란 무엇인가.
- 책임 : 협력에 참여하기 위해 객체가 수행하는 행동
- 객체의 책임은 객체가 '무엇을 알고 있는가'와 '무엇을 할 수 있는가'로 구성된다.
- CRC 카드: Candidate(후보), Responsibility(책임), Collaborator(협력자). 하나의 CRC 카드는 협력에 참여하는 하나의 후보를 표현한다.
 
 2) 책임할당
- 책임을 수행하는 데 필요한 정보를 가장 잘 알고 있는 전문가에게 그 책임을 할당하는 것 => Information Expert(정보 전문가)
- 정보 전문가에게 책임을 할당하는 것만으로도 상태와 행동을 함께 가지는 자율적인 객체를 만들 가능성이 높아진다.
 
3) 책임 주도 설계(Responsibility-Driven Disign, RDD)
- 책임을 찾고 책임을 수행할 적절한 객체를 찾아 책임을 할당하는 방식으로 협력을 설계하는 방법
- 책임을 할당할 때 고려해야 하는 두 가지 요소 : 1. 메시지가 객체를 결정한다. 2. 행동이 상태를 결정한다.
 
4) 메시지가 객체를 결정한다.
- 객체에게 책임을 할당하는 데 필요한 메시지를 먼저 식별하고 메시지를 처리할 객체를 나중에 선택했다는 것이 중요하다.
- 메시지가 객체를 선택해야 하는 이유1: 객체가 최소한의 인터페이스를 가질 수 있게 된다.
- 이유2: 객체는 충분히 추상적인 인터페이스를 가질 수 있게 된다.
 
5) 행동이 상태를 결정한다.
- 초보자들은 객체에 필요한 상태가 무엇인지 결정-> 상태에 필요한 행동 결정 : 캡슐화 저해 : 데이터 주도 설계
- 캡슐화를 저해하지 않도록 결정을 뒤로 미루면서 객체의 행동을 고려하기 위해서는 협력이라는 문맥 안에서 객체를 생각해야 한다.
- 개별 객체의 상태와 행동이 아닌 시스템의 기능을 구현하기 위한 협력에 초점을 맞춰야만 응집도가 높고 결합도가 낮은 객체들을 만들 수 있다.
 
 
03. 역할
1) 역할과 협력
- 역할 : 객체가 어떤 특정한 협력 안에서 수행하는 책임의 집합
 
2) 유연하고 재사용 가능한 협력
- 역할을 통해 유연하고 재사용 가능한 협력을 얻을 수 있다.
- 역할을 구현하는 가장 일반적인 방법은 추상 클래스와 인터페이스를 사용하는 것이다.
 
3) 객체 대 역할
- 동일한 종류의 객체가 하나의 역할을 항상 수행한다면 둘은 동일한 것이다. 하지만 어떤 협력에서 하나 이상의 객체가 동일한 책임을 수행할 수 있다면 역할은 서로 다른 방법으로 실행할 수 있는 책임의 집합이 된다.
- 협력은 역할들의 상호작용으로 구성되고, 협력을 구성하기 위해 역할에 적합한 객체가 선택되며, 객체는 클래스를 이용해 구현되고 생성된다.
 
 
 

 

#발췌

객체지향 개발에서 가장 중요한 능력은 책임을 능숙하게 소프트웨어 객체에 할당하는 것 by 크레이그 라만
객체가 충분히 추상적이면서 미니멀리즘을 따르는 인터페이스를 가지게 하고 싶다면 메시지가 객체를 선택하게 하라.
동일한 책임을 수행하는 역할을 기반으로 두 개의 협력을 하나로 통합할 수 있다. -> 역할을 이용하면 불필요한 중복코드 제거 가능

 
 
 
 
 
 

728x90
반응형