- 기능과 구조의 통합 (feat. 책임-주도 설계)2023년 02월 23일
- starryeye
- 작성자
- 2023.02.23.:50
지금껏 책을 읽으면서 생각하고 알게된 지식들이 여기서 완전해진다.
책.. 197 페이지이다.
이 부분은 포스팅을 보지말고 다시 읽는 것을 추천한다..
(그림도 너무 좋다..)
객체지향 패러다임은 모든 것이 객체라는 사상에서 출발한다.
프로그래머는 시스템을 사용자로부터 전송된 메세지를 수행하기 위해
책임을 수행하는 거대한 자율적인 객체로 본다.
시스템은 사용자와 만나는 경계에서 사용자의 목표를 만족시키기 위해
사용자와의 협력에 참여하는 커다란 객체다.
사용자에게 시스템이 수행하기로 약속한 기능은 결국 시스템의 책임으로 볼 수 있다.
시스템이라는 객체 안에는 더 작은 규모의 객체가 포함될 수 있다.
이제 시스템이 수행해야 하는 커다란 규모의 책임은
시스템 안에 살아가는 더 작은 크기의 객체들의 협력을 통해 구현될 수 있다.
책임-주도 설계는 이 지점부터 적용된다.
협력의 출발을 장식하는 첫 번째 메세지는 시스템의 기능을 시스템의 책임으로 바꾼 후 얻어진 것이다.
시스템에 할당된 커다란 책임은
이제 시스템 안의 작은 규모의 객체들이 수행해야 하는 더 작은 규모의 책임으로 세분화 된다.
그렇다면.. 어떤 객체를 선택할 것인가..
이 시점에 도메인 모델이 무대에 등장한다.
우리는 도메인 모델에 포함된 개념을 은유하는 소프트웨어 객체를 선택해야한다.
(책의 그림을 꼭 보자..)
선택 후,
협력을 완성하는 데 필요한 메세지를 식별하면서 객체들에게 책임을 할당해 나간다.
객체의 이름은 도메인 모델에 포함된 개념으로부터 차용하고,
책임은 도메인 모델에 정의한 개념의 정의에 부합하도록 할당한다.
예를 들어, 이자를 계산하는 책임을 가진 객체는 이자율이 될 것이며,
이자는 이자율에 의해 생성될 것이다.
왜.. 이자를 계산하는 책임을 이자율 객체에 할당하는가..
책임 할당의 기본 원칙은 책임을 수행하는 데 필요한 정보를 가진 객체에게
그 책임을 할당하는 것이기 때문이다.
이렇게 한다면..
관련된 상태와 행동을 함께 캡슐화하는 자율적인 객체가 만들어진다.
정리
유스케이스는
사용자에게 제공할 기능을 시스템의 책임으로 보게 함으로써
객체 간의 안정적인 구조에 책임을 분배할 수 있는 출발점을 제공한다.
도메인 모델은
기능을 수용하기 위해 은유할 수 있는 안정적인 구조를 제공한다.
책임-주도 설계는
유스케이스로부터 첫 번째 메세지와 사용자가 달성하려는 목표를,
도메인 모델로부터 기능을 수용할 수 있는 안정적인 구조를 제공받아
실제로 동작하는 객체들의 협력 공동체를 창조한다.
책임-주도 설계 방법은
시스템의 기능을 역할과 책임을 수행하는 객체들의 협력 관계로 바라보게 함으로써
두 가지 기본 재료인 유스케이스와 도메인 모델을 통합한다.
책의 예제를 꼭 보자
(P190, P193, P198, P200 ~)
"객체지향의 사실과 오해" 책에서 발췌
'OOP' 카테고리의 다른 글
도메인 모델 (0) 2023.02.23 기능과 구조 설계 (0) 2023.02.23 책임의 자율성이 협력의 품질을 결정 (0) 2023.02.21 책임, 메세지 그리고 인터페이스 (0) 2023.02.13 다음글이전글이전 글이 없습니다.댓글