728x90
알고리즘과 절차적인/객체지향 설계
절차적인 설계: 알고리즘의 각 단계를 단일 클래스 안에 실행 순서대로 배치

객체지향 설계: 알고리즘의 각 단계를 책임 관점에서 여러 객체로 분배

도메인 모델
- 도메인 안에 존재하는 중요한 개념과 관계를 모아서 이해하기 쉽게 추상화시킨 것을 도메인 모델이라고 한다.
- 여기서 추상화는 우리의 필요에 맞는 부분만 취하고 필요 없는 부분은 생략해서 단순화시킨 것을 의미한다.
- 도메인 모델 안에 포함된 개념과 관계는 객체지향 설계에서 책임을 할당받을 객체의 이름과 관계에 대한 중요한 힌트를 제공한다.
- 책임을 할당할 후보 객체를 찾을 떄 가장 먼저 참고할 수 있는 재료가 도메인 모델이 된다.
- 이유? 표현적 차이(도메인에 대한 개념적 모델과 소프트웨어 구현 사이의 거리)를 줄이기 때문
- 표현적 차이를 줄인다면, 변경하기 쉽고 유연한 설계를 얻을 수 있다.(도메인의 개념과 기본 구조는 비즈니스가 바뀌지 않는 이상 그대로 유지가 되기 때문이다)
- 은유는 책임을 수행하는데 적합한 객체를 도메인 개념과 연결시켜준다.
- 도메인의 개념을 은유해서 객체와 클래스의 이름을 지으면 책임을 구현한 코드를 찾기가 수월해진다.(수정할 코드도 찾기 쉬워진다)
명사의 가치
- 객체지향은 명사를 중심으로 동사들을 명사 안으로 모은다.
- 명사를 이용해서 동사를 묶고 나면, 동사의 위치를 찾기 위해 명사를 이용할 수 있다. 그리고 이 명사를 객체의 이름으로 동사를 객체의 책임으로 대응시키고 나면, 요구사항이 변경될 때 어떤 책임을 수정해야 하고 이 책임이 수정될 때 어떤 클래스를 수정해야 하는지를 쉽게 찾을 수 있게 된다.
GRASP

- 일반적인 책임 할당을 위한 소프트웨어 패턴을 의미한다.
- 9가지 패턴이 포함이 되어있다.
- Creator(생성자)
- Indirection(간접화)
- Information Expert(정보 전문가)
- Polymporphism(다형성)
- Low Coupling(낮은 결합도)
- Protected Variations(변경 보호)
- High Cohesion(높은 응집도)
- Pure Fabrication(순수한 가공물)
- Controller(컨트롤러)
CRC 카드: 책임과 협력을 표현하기 위한 객체지향 설계 도구, 객체 하나를 의미한다고 생각하면 된다,
CRC 카드는 실제로 수행하는 동적인 객체를 나타내는 것을 기억해야 한다.(클래스 X)
728x90
'오브젝트' 카테고리의 다른 글
| Ch04. 책임 할당하기 - 설계 트레이드오프(창조자와 낮은 결합도) (0) | 2024.10.05 |
|---|---|
| Ch04. 책임 할당하기 - 정보와 책임 할당(정보 전문가) (0) | 2024.10.05 |
| Ch03. 객체지향 기본 원칙 - 책임 주도 설계 (0) | 2024.10.01 |
| Ch03. 객체지향 기본 원칙 - 객체지향 설계 원칙 (0) | 2024.10.01 |
| Ch02. 절차적인 설계 개선하기 - 절차에서 객체로 (0) | 2024.09.29 |