본문 바로가기
스터디

[객체지향의 사실과 오해] 6장 객체지도, 7장 함께 모으기

by eunoo 2023. 7. 7.

6장 객체 지도

 

기능 설계 vs 구조 설계

설계 시 두 가지 측면의 설계가 필요하다.

기능 설계는 유스케이스 모델링을 사용하며, 유스케이스란 사용자와 시스템 간에 이뤄지는 상호작용의 흐름을 텍스트로 표현한 것이다. 기능은 책임을 수행하는 시스템의 행위로 표현한다.

구조 설계는 도메인 모델링을 사용하며, 도메인이란 프로그램을 사용하는 대상 분야를 의미한다.

구조는 도메인에 관해 생각하는 개념들과 개념들간의 관계로 표현한다.

 

기능과 구조의 통합

책임-주도 설계 방법은 시스템의 기능을 역할과 책임을 수행하는 객체들의 협력 관계로 바라보고, 유스케이스와 도메인 모델을 통합한다.

우선 사용자의 관점에서 시스템의 기능을 명시하고(유스케이스), 사용자와 설계자가 공유하는 안정적인 구조(도메인 모델)를 만들어야 한다.

 

7장 함께 모으기

  • 개념 관점 : 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현, 도메인의 규칙과 제약을 최대한 유사하게 반영
  • 명세 관점 : 소프트웨어 안에서 객체들의 책임에 초점. 즉, 객체의 인터페이스를 바라본다.
  • 구현 관점 : 코드 작성, 책임을 어떻게 수행할 것인지 초점을 맞추고, 인터페이스를 구현한다.
커피 전문점
  1. 커피 전문점을 구성하는 요소들에 대해 생각해보고 그들의 관계를 나타내본다. 손님, 바리스타, 커피, 메뉴판 객체가 필요하다.
  2. 협력을 시작할 때 어떤 메시지가 필요한지 생각하고, 그 메시지를 처리하기에 적합한 객체를 선택한다.
  3. 객체들의 메시지와 객체들의 협력 관계에 대해 생각해본 후 객체의 메시지를 인터페이스로 정리한다.
  4. 코드로 직접 구현한다.

    - 이 과정에서 중요한 것은 빠르게 협력을 구상하고, 빨리 코드를 작성하여 설계에 이상이 없는지 확인하는 것이다.

 

코드는 위의 세 가지 관점을 모두 제공해야 한다. 코드를 읽으면서 세 가지 관점을 쉽게 찾지 못한 다면 세 가지 관점이 명확하게 드러날 수 있게 코드를 개선하라.

마지막으로 인터페이스와 구현을 분리하라. 명세 관점과 구현 관점을 분리하는 것은 매우 중요하다.

댓글