일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 깨끗한코드
- docker
- 클린코드
- 독서
- JAVA개발자
- 독서일지
- DesignPattern
- 헤드퍼스트디자인패턴
- 성수
- 오브젝트
- 디자인패턴
- 개발자
- 성수직장인
- Java
- 객체지향프로그래밍
- 성수볼거리
- 객체지향
- 책읽기
- JavaScript
- 헤드퍼스트
- 성수핫플
- 직장인
- Linux
- 성수맛집
- IntelliJ
- 주니어개발자
- 직장인점심
- 상속
- 책너두
- 코딩
- Today
- Total
닭발개발
[오브젝트] 7일차. 78-91pg | 객체의 책임, 역할 본문
[오브젝트] 7일차. 78-91pg | 객체의 책임, 역할
D269 2023. 7. 3. 21:067일차.
오브젝트: 코드로 이해하는 객체지향 설계[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 크레이그 라만
객체가 충분히 추상적이면서 미니멀리즘을 따르는 인터페이스를 가지게 하고 싶다면 메시지가 객체를 선택하게 하라.
동일한 책임을 수행하는 역할을 기반으로 두 개의 협력을 하나로 통합할 수 있다. -> 역할을 이용하면 불필요한 중복코드 제거 가능
'책책책 책을 읽읍시다‼ ver.개발 > [ 오브젝트: 코드로 이해하는 객체지향 설계 ]' 카테고리의 다른 글
[오브젝트] 9일차. 108-118pg | 캡슐화, 응집도, 결합도 (0) | 2023.07.05 |
---|---|
[오브젝트] 8일차. 92-107pg | 객체의 역할, 데이터 중심 설계 (0) | 2023.07.04 |
[오브젝트] 6일차. 65~77pg | 추상화, 상속, 협력 (0) | 2023.07.01 |
[오브젝트] 5일차. 51~64pg | 오버라이딩, 오버로딩, 상속과 다형성 (0) | 2023.06.30 |
[오브젝트] 4일차. 34~50pg | 객체지향 프로그래밍을 향해(도메인, 클래스, 메서드...) (0) | 2023.06.29 |