도메인 모델링에 대한 나의 방법 정의

60jong·2022년 11월 26일
0

Java

목록 보기
5/14

우아한테크코스 프리코스의 과제들을 다시 개발해보며 객체지향 설계 / 도메인 설계를 연습하고자 한다.

객체지향 / 도메인 모델링

객체지향이란 무엇인가... 요즘 객체지향의 사실과 오해라는 책을 읽고 있는데, 많은 도움이 된다. 그 책을 읽으면서 스스로 내린 정의는

객체지향이란, 객체들이 어떤 메시지를 주고 받으며 협력할 것인지 그 공동체를 구축하는 것이라고 생각한다.

이러한 객체지향을 기반으로 도메인을 주도로 개발하는 것이 DDD, Domain Driven Development라고 생각한다. DDD에 다가가는 시작으로 도메인을 모델링하는 것을 시작으로 개발을 연습하고자 한다.

도메인

Domain이란? 사용자들이 관심을 가지고 있는 특정 분야나 주제로, 소프트웨어는 도메인에 존재하는 문제들을 해결하기 위해 개발된다.

먼저 클래스 / 타입을 구분하자.

클래스 : 객체가 어떻게 구현되는지에 대한 구체적인 코드 (아메리카노, 카페라떼, 마끼아또는 각각 다른 클래스)
타입 : 객체의 인터페이스 (아메리카노, 카페라떼, 마끼아토는 커피라는 타입)

메시지를 정의한다.

객체지향이란 메시지를 통해 객체들의 협력관계를 구축하는 것이다. 이를 위해서 객체지향의 사실과 오해에서는

협력을 설계할 때는 객체보다는 메시지를 먼저 선택하고 그 후에 메시지를 수신하기에 적절한 객체를 선택해야 합니다.

라고 한다. 따라서 이 단계에서는 필요한 메시지들을 정의해서 나열한다.

타입 간의 관계를 통해 도메인을 모델링

결국 객체지향 -> 도메인 모델링으로 이어지며 메시지를 주고 받으면서 협력하는 객체의 공동체를 설계해야 한다. 이를 위해 클래스 / 타입을 구분한 것이었디.
따라서 다음으로는 메시지를 주고 받는 타입타입간의 관계를 설정함으로써 도메인을 모델링하는 것이다.

이 단계에서는

  • 어떤 타입이 도메인을 구성하는가
  • 타입들 사이에 어떤 관계가 존재하는지 파악함으로써 도메인을 이해

하는 것이 중요하다.

살아있는 설계

설계는 처음에 완성하면 좋지만, 중간에 추가되는 경우에는 언제든 수정하면서 설계한다.


숫자 야구 게임, 도메인 모델링

위 방법을 통해 우아한테크코스 프리코스 2주 차 과제인 숫자 야구 게임을 도메인 모델링 해보자.

1. 클래스 / 타입 정의

  • Game 타입 - BaseballGame 클래스
  • Balls 타입 - WinningBalls 클래스, UserBalls 클래스
  • User 타입 - Player 클래스
  • InputView 타입
  • OutputView 타입
  • Validation 타입

2. 메시지 정의

  • [] 숫자 야구 게임을 시작한다.
  • [] 중복되지 않는 정답 숫자 N개를 뽑는다.
  • [] 숫자 N개로 정답 객체를 만든다.
  • [] 플레이어로부터 숫자 N개를 입력 받는다.
  • [] 숫자 N개로 비교 객체를 만든다.
  • [] 정답숫자와 입력 받은 숫자를 통해 스트라이크를 계산한다.
  • [] 3스트라이크일 경우, 게임을 종료한다.
  • [] " 볼을 계산한다.
  • [] 'M볼N스트라이크' 형태로 문자열을 만든다.
  • [] 'M볼N스트라이크' 형태의 문자열을 출력한다.
profile
울릉도에 별장 짓고 싶다

0개의 댓글