2025/09 3

[Next Step 사전과제] 도메인 설계(3) - 클래스 다이어그램

이전 글(https://nkdev.tistory.com/193)에서 설계한 도메인 구조를 클래스 다이어그램으로 만들어보자! 그리고 뼈대만 코드로 구현해보았다.예전에는 하염없이 인텔리제이를 보다가... 목적도 없이 3 tier architecture부터 만들어나갔는데 😓OOP 설계를 하니까 사용자 요구사항에 대한 로직을 바로 구현할 수 있어서 좋다.package movie.domain;import java.time.Duration;public class Movie { private String title; private Duration runningTime; private long basePrice; public Movie(String title, Duration runningTim..

프로젝트 2025.09.18

[Next Step 사전과제] 도메인 설계(2) - 도메인 규칙 정의

다음 요구사항을 보고 도메인 구조를 설계해보자! [Use Case]상영되다에매하다좌석을 선택하다 [State]영화 : 영화 제목상영 : 상영 시간, 상영 길이, 운영 시간, 운영 시간이 겹치는지 확인예매 : 예매 금액, 여러 영화 한 번에 예매, 결제 수단에 따른 추가 할인(신용카드 5%, 현금 2%), 추가 혜택(무비데이 10%, 시간조건 2,000원)사용자 : 보유 포인트, 영화와 상영 시간을 고른 뒤 좌석 선택,좌석 : 행(알파벳), 열(숫자), 등급(s석, a석, b석), 예약여부 요구사항을 보고 핵심 유스케이스를 3개 선정하고, 각 객체가 가져야 할 상태와 수행할 도메인 규칙을 정의해봤다.그러나 이런 방식을 사용하면 데이터 중심 설계로 갈 위험이 있다. 영화는 영화 제목이라는 정보만 가진 '데이..

프로젝트 2025.09.18

[Next Step 사전과제] 도메인 설계(1) - 행동과 책임

책임 주도 설계(RDD, Responsibility-Driven Design)의 핵심은 ‘행동’을 먼저 정하고, 그 행동을 수행할 책임을 누가 질 것인가? 이다.그렇다면 해당 요구사항에서 행동이 뭔지 정의하고 나서 그 행동을 하는 객체를 선정해보자. '상영한다' -> 영화'예매한다' -> 손님'좌석을 선택한다' -> 손님 처음에 책임과 그 책임을 수행할 객체를 선정했던 방식이다.'~~한다'라는 행동을 모두 책임으로 선정하고, 그 책임을 수행할 객체를 할당했다. 이렇게 자연어로 된 '~~한다'라는 '행동'을 발견했다고 얘네를 곧바로 객체가 수행할 책임'으로 정의하면 안 된다.행동은 단지 '시스템이 사용자에게 제공해야할 기능(use case)'를 드러내는 것이고, 책임은 '어떤 객체가 그 행동을 통해 보장해..

프로젝트 2025.09.18