Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- go
- 기초100제
- MySQL
- JPA
- 롬복
- golang
- Codeup
- Spring
- 알고리즘
- 코드업
- thymeleaf
- Git
- 오블완
- Gradle
- Postman
- spring security
- mariadb
- 객사오
- Python
- Spring Boot
- java
- 스프링
- H2 설치
- Vue.js
- 파이썬
- 티스토리챌린지
- GitHub
- springboot
- 클린코드
- 클린 코드
Archives
- Today
- Total
nyximos.log
[객체지향의 사실과 오해] 4. 역할, 책임, 협력 본문
- 협력이 객체의 행동 방식을 결정한다.
협력
어떤 객체가 도움을 요청하면 시작
책임
- 어떤 객체가 어떤 요청에 대해 대답할수 있거나 적절한 행동을 할 의무가 있는 경우 해당 객체는 책임을 가진다.
- 책임을 객체에 할당하는 것은 중요하다.
- 책임의분류
- 하는것
- 아는것
- 객체의 공용 인터페이스를 구성한다.
책임과 메시지
- 한 객체가 다른 객체에게 요청을 전송 → 수신한 객체의 책임이 수행되어야 한다.
- 메시지 전송 - 객체가 다른 객체에게 주어진 책임을 수행하게 한다.
역할
책임의 집합이 의미하는 것
협력의 추상화
대체 가능성
객체의 모양을 결정하는 협력
협력을 고려하고 클래스를 개발해야한다.
객체들이 주고받을 요청과 응답의 흐름을 결정해야한다.
→ 행동 결정 → 필요한 데이터 결정 → 클래스 구현 방법 결정
객체지향 설계 기법
역할, 책임, 협력의 관점에서 애플리케이션을 설계하는 세가지 기법
- 책임 주도 설계 Responsibility-Driven Design
- 협력에 필요한 책임들을 식별하고 적합한 객체에 책임 할당
- 객체의 상태가 아닌 책임과 상호작용에 집중
- 시스템의 책임을 객체의 책임으로 변환
- → 각 객체가 책임을 수행하는 중에 필요한 정보나 서비스를 제공해줄 협력자를 찾아 해당 협력자에게 책임을 할당
- 시스템이 사용자에게 제공해야하는 기능인 시스템 책임을 파악
- 시스템 책임을 더 작은 책임으로 분할
- 분할된 책임을 수행할 수 있는 적절한 객체/역할을 찾아 책임 할당
- 객체가 책임 수행하는 중 다른 객체의 도움이 필요한 경우 이를 책임질 적절한 객체/역할을 찾음
- 해당 객체 또는 역할에게 책임 할당 → 두 객체가 협력하게 함
- 디자인패턴
- 테스트 주도 개발 Test-Driven Development
- 책임을 수행할 객체/클라이언트가 기대하는 객체의 역할이 메시지를 수신할때 어떤 결과를 반환하고 그 과정에서 어떤 객체와 협력할 것인지에 대한 기대를 코드 형태로 작성
- 책임 : 객체의 메서드 호출, 반환값 검증
- 협력 : 테스트에 필요한 간접 입력 값을 제공하기 위해 stub 추가, 간접 출력값을 검증하기 위해 mock object 사용
'Books' 카테고리의 다른 글
[객체지향의 사실과 오해] 6. 객체 지도 (1) | 2024.11.14 |
---|---|
[객체지향의 사실과 오해] 5. 책임과 메시지 (0) | 2024.11.13 |
[객체지향의 사실과 오해] 3. 타입과 추상화 (0) | 2024.11.11 |
[객체지향의 사실과 오해] 2. 이상한 나라의 객체 (0) | 2024.11.10 |
[객체지향의 사실과 오해] 1. 협력하는 객체들의 공동체 (1) | 2024.11.08 |