728x90
06 / 객체지도
1. 기능 설계 vs 구조 설계
- 기능 설계: 사용자를 위해 무엇을 할 수 있는가에 초점 (행위, 책임)
- 구조 설계: 제품의 형태가 어떠해야 하는가에 초점 (개념, 관계)
- 두 가지는 함께 조화를 이루어야 하며,
→ 좋은 기능 + 빠르고 안정적인 확장성을 동시에 달성해야 한다.
2. 두 가지 재료
안정적인 재료: 구조
- 사용자/이해관계자의 관점을 반영한 도메인 모델이 핵심.
- 도메인: 사용자가 프로그램을 사용하는 대상 분야 (예: 게임, 은행, 병원 진료).
- 도메인 모델: 도메인 개념과 관계를 추상화한 사용자 관점의 구조적 모델.
- 소프트웨어 객체는 도메인 객체를 은유해야 한다.
불안정한 재료: 기능
- 사용자의 목표를 충족하기 위해 필요한 시스템의 행위.
- 유스케이스: 사용자와 시스템 간의 상호작용 흐름을 이야기 형식으로 정리.
- 기능은 자주 바뀌므로 구조보다 불안정하다.
- 유스케이스는 도메인/객체를 자동으로 만들지 않음 → 단지 힌트와 영감 제공.
3. 기능과 구조의 통합
- 책임-주도 설계(RDD)
- 요구사항 식별
- 도메인 모델 생성
- 클래스에 메서드 추가
- 객체 간 메시지 전송 정의
- 원칙:
- 안정적인 도메인 모델을 기반으로 시스템 기능을 구현한다.
- 기능(책임)을 구조(도메인 모델)에 담아내어 변경 파급효과를 줄인다.
- 도메인 모델과 코드를 최대한 밀접하게 연결해야 한다.
4. 도메인 모델과 유스케이스
- 도메인 모델:
- 이해관계자가 도메인을 바라보는 멘탈 모델.
- 중요한 개념과 관계를 추상화하여 구조화.
- 핵심은 사용자 관점 반영.
- 유스케이스:
- 사용자의 목표를 중심으로 상호작용과 흐름을 정리.
- 기능적 요구사항을 스토리 형태로 표현.
5. 설계의 기본 능력
- 불안정한 기능을 안정적인 구조에 담아내는 것.
- 이렇게 하면 변경에 대한 파급효과 최소화 가능.
- 훌륭한 객체지향 설계자는 이를 통해 유연하고 견고한 시스템을 만든다.
예시 인사이트
- 도메인 개념: 정기 예금, 계좌, 이자율
- 객체는 상태와 행위를 스스로 관리하는 자율적 존재.
- "이자는 이자율에 의해 생성된다 → 이자를 계산하는 책임은 이자율 객체에게 있다."
→ 책임을 올바르게 분배한 좋은 예시
다형성: 객체 타입이 달라지면 메서드 동작이 달라짐 → SimpleInterest vs CompoundInterest.
전략 패턴: 객체는 그대로 두고 내부의 알고리즘(전략) 객체를 갈아끼움 → InterestRate 안에서 SimpleInterestStrategy ↔ CompoundInterestStrategy 교체.
차이점 = 무엇을 바꿔서 동작을 다르게 하느냐
다형성 → 클래스 자체
전략 패턴 → 행위(알고리즘) 객체
한 줄 정리:
객체지향 설계는 “변하기 쉬운 기능”을 “안정적인 도메인 구조” 위에 책임으로 배치해, 사용자 관점을 반영하면서도 유연하고 확장 가능한 시스템을 만드는 과정이다.
728x90
반응형
'IT서적 > 객체지향의사실과오해' 카테고리의 다른 글
| [객체지향의 사실과 오해 | 조영호]07장: 함께 모으기 (0) | 2025.11.14 |
|---|---|
| [객체지향의 사실과 오해 | 조영호]05장: 책임과 메시지 (0) | 2025.11.14 |
| [객체지향의 사실과 오해 | 조영호]04장: 역할, 책임, 협력 (0) | 2025.11.14 |
| [객체지향의 사실과 오해 | 조영호]03장: 타입과 추상화 (0) | 2025.11.14 |
| [객체지향의 사실과 오해 | 조영호]02장: 이상한 나라의 객체 (0) | 2025.11.14 |