본문 바로가기

공부/개발 독서

함께 모으기 - 객체지향의 사실과 오해

반응형

책임 주도 설계를 하는 방법

:구조와 기능을 기반으로 설계를 진행한다.

 

기능은 세부 사항이 바뀌기 쉽지만,

구조는 쉽게 변하지 않는다

 

따라서 설계를 한다면 구조를 기반으로 하는 것이 안정적이지만,

책임 주도 설계에서는 구조와 기능 둘 다 필요하다!

 

- 구조 기반으로 설계: 도메인 모델

- 기능 기반으로 설계: 유스케이스

 

도메인 모델

- 도메인: 프로그램을 사용하는 분야(게임, 금융 등..)

- 도메인 모델: 도메인에 대한 지식을 개념과 개념간의 관계로 단순화 한 것

 

객체지향에서는 현실 객체와 소프트웨어 객체의 의미적 거리가 적기 떄문에, 

도메인 모델은 객체 지향과 궁합이 좋다!

 

- 도메인을 이해하면 코드를 이해하기 쉬워진다

- 나중에 기능이 변경되면 수정도 쉽다

- 사용자의 관점을 반영하며, 사용자들이 도메인을 구성하는 개념과 관계를 이해하고 있다

- 본질적인 것들은 잘 바뀌지 않는다

 

유스케이스

- 사용자가 목표를 달성하기 위해 시스템과 상호작용하는 흐름을 정리한 플로우

- 실행 시나리오

- 사용자가 시스템을 사용하는 과정을 글로 설명한 것

 

다시 책임 주도 설계를 하는 방법

1. 시스템은 사용자의 목표를 만족시키는 큰 객체로 본다

2. 유스케이스를 보며 사용자가 원하는 기능을 살펴본다

3. 도메인 모델을 기반으로 기능을 객체와 책임으로 나눈다

4. 도메인 모델을 기반으로 구현할 메시지를 식별하고 속성과 메서드를 구현한다

 

객체지향 설계의 3가지 관점

1. 개념 관점: 도메인 안에 존재하는 개념과 개념 사이의 관계

2. 명세 관점: 객체의 인터페이스

3. 구현 관점: 실제 작업을 수행하는 코드

 

-> 이 3가지 관점이 '순서대로' 해야하는 것으로 보일 수 있지만, 모든 설계 과정에서 이 3가지를 동시에 봐야 한다

 

정리

도메인 모델을 따르고

인터페이스와 구현을 분리하라

 

추상화 기법

도메인의 복잡성을 단순화

직관적인 모델을 만드는데 사용할 수 있는 인지 수단

 

분류 - 인스턴스화

일반화 - 특수화

집합 - 분해

 

 

 

 

반응형