- ์ ์ฌ์ง์ ์ํ์ค ๋ค์ด์ด๊ทธ๋จ์ ์นดํ ํค์ค์คํฌ ์์คํ ์์ ์๋์ด ๋ฉ๋ด๋ฅผ ์ ํํ๊ณ ๊ฒฐ์ ํ๋ ๊ณผ์ ์ ์๋ํํ ์์คํ ์ ๋๋ค. ๊ฒฐ์ ์๋ฃ ํ ์ฃผ๋ฐฉ ๋ชจ๋ํฐ์ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ์ ๋ฌํ์ฌ ์ค๋น ์ํ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ์กํฐ(Actor) : ์์คํ ๊ณผ ์ํธ์์ฉํ๋ ์ธ๋ถ ์์๋ก ์๋์ด ํด๋น๋ฉ๋๋ค.
- ๊ฐ์ฒด(Object) : ์์คํ ๋ด๋ถ์ ์ปดํฌ๋ํธ๋ก, ํค์ค์คํฌ, ๊ฒฐ์ ์์คํ , ์ฃผ๋ฐฉ ๋ชจ๋ํฐ๊ฐ ๊ฐ์ฒด๋ก ํํ๋ฉ๋๋ค.
- ํ์ฑ๋ฐ์ค(Activation Box) : ๊ฐ์ฒด๊ฐ ํ์ฑ ์ํ์์ ์คํ ์ค์์ ๋ํ๋ด๋ ์ง์ฌ๊ฐํ ๋ฐ์ค์ ๋๋ค.
- ์๋ช ์ฃผ๊ธฐ(Lifeline) : ๊ฐ์ฒด์ ์กด์ฌ์ ์ํธ์์ฉ์ด ์๊ฐ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ์ด์ด์ง๋์ง๋ฅผ ๋ํ๋ด๋ ์์ง์ ์ ์ ์ผ๋ก ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ํํํ๋ฉฐ ์์์ ์๋๋ก ์๊ฐ์ด ํ๋ฆ ๋๋ค.
- ๋ฉ์์ง(Message) : ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ์ ์ํธ์์ฉ ํน์ ์์ฌ์ํต ํต์ ์ ์ ์ํ๋ ์์๋ก ์ฌ๊ธฐ์๋ ๋ฉ๋ด ์ ํ, ๊ฒฐ์ ์์ฒญ, ์ฃผ๋ฌธ ์ ๋ณด ์ ๋ฌ ๋ฑ์ด ์์ต๋๋ค.
- ๋ฉ๋ด ์ ํ ๋ฐ ์ฃผ๋ฌธ ์์ฑ : ์๋์ด ํค์ค์คํฌ์์ ๋ฉ๋ด๋ฅผ ์ ํํ๊ณ ์ฃผ๋ฌธ์ ์์ฑํฉ๋๋ค.
- ์ฃผ๋ฌธ ๋ด์ญ ํ์ธ ๋ฐ ๊ฒฐ์ ์์ฒญ : ํค์ค์คํฌ๊ฐ ์ฃผ๋ฌธ ๋ด์ญ์ ์๋์๊ฒ ๋ณด์ฌ์ฃผ๊ณ ๊ฒฐ์ ์์ฒญ์ ์งํํฉ๋๋ค.
- ๊ฒฐ์ ์งํ : ํค์ค์คํฌ๊ฐ ๊ฒฐ์ ๋ํ์ฌ์ ํต์ ํ์ฌ ๊ฒฐ์ ๋ฅผ ์๋ํฉ๋๋ค.
- ๊ฒฐ์ ์น์ธ ๊ฒฐ๊ณผ ์ ๋ฌ : ์ด๋ ๊ฒฐ์ ๋ํ์ฌ์ ํต์ ํ์ฌ ๊ฒฐ์ ๊ฐ ์ฑ๊ณตํ๋์ง ์คํจํ๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋๋ฉ๋๋ค. ์ด๋ ๊ฒฐ์ ๊ฐ ์ฑ๊ณตํ์ ๊ฒฝ์ฐ ํค์ค์คํฌ๋ ์ฃผ๋ฐฉ ๋ชจ๋ํฐ์ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๊ณ , ์๋์๊ฒ ์์์ฆ์ ์ถ๋ ฅํด์ค๋๋ค. ํ์ง๋ง ์คํจํ์ ๊ฒฝ์ฐ ํค์ค์คํฌ๋ ์๋์๊ฒ ๊ฒฐ์ ๊ฐ ์คํจํ๋ค๋ ์๋ฆผ์ ์ถ๋ ฅํด์ค๋๋ค.
- Menu Entity
- ๋ฉ๋ด ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ์ํฐํฐ๋ก ๋ฉ๋ด ์ด๋ฆ, ๊ฐ๊ฒฉ, ๊ธฐ๋ณธํค(Id)๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
- Order Entity
- ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ์ํฐํฐ๋ก ์ฌ๋ฌ ๋ฉ๋ด์ ํ๋์ ์ฃผ๋ฌธ ์ ๋ณด๊ฐ ์ ํ๋ ์ ์๊ธฐ ๋๋ฌธ์ ManyToOne์ ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์์ต๋๋ค.(ํ๋์ ๋ฉ๋ด๋ง ์ ํ ๊ฐ๋ฅํจ)
- ์ฃผ๋ฌธ ์๊ฐ, ์๋, ์ด ๊ฐ๊ฒฉ, ์ฃผ๋ฌธ์ํ๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
- ์ด๋ ์ฃผ๋ฌธ์ด ์์ฑ๋์์๋ ์ด๊ธฐ์๋ ์๋ฃ๋ฅผ ๋ง๋ค์ด์ผํ๊ธฐ ๋๋ฌธ์ ์ค๋น์ํ๋ก ๋ง๋ค๊ธฐ์ํ ์์ฑ์๋ฅผ ์์ฑํ์๋ค.
- Kitchen Entity
- ์ฃผ๋ฐฉ ๋ชจ๋ํฐ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ์ํฐํฐ๋ก ํ๋์ ์ฃผ๋ฌธ์๋ ์ฃผ๋ฐฉ ๋ชจ๋ํฐ์ ํ๋์ ์ฃผ๋ฌธ๋ง ๋งคํ๋ ์ ์์ด OneToOne ๊ด๊ณ๋ฅผ ๋งบ์ต๋๋ค. (ํ ์ฃผ๋ฌธ์ ํ๋์ ๋ชจ๋ํฐ์๋ง ์ถ๋ ฅ๊ฐ๋ฅ)
- ํ์ฌ ์ฃผ๋ฌธ์ํ์ ๋ํ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
- Order๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๊ธฐ์ ๋ฐ๋ก ์ฃผ๋ฌธ์์๊ฒ ์ ๊ณตํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ์ ์๋ฃ ์ํ๋ก ๋ง๋ค๊ธฐ ์ํ ์์ฑ์๋ฅผ ์์ฑํ์์ต๋๋ค.
- OrderStatus
- ์ฃผ๋ฌธ์ํ ์ ๋ณด์ ๊ฐ์ผ๋ก ๋๊ฐ์ ์ํ๋ง ํด๋น์ด ๊ฐ๋ฅํ๊ธฐ๋๋ฌธ์(Paid(๊ฒฐ์ ์๋ฃ), Completed(์ค๋น์๋ฃ)) ์ด๊ฑฐํ(Enum)์ผ๋ก ์ ์ธํ์์ต๋๋ค.
- KitchenStatus
- ์ฃผ๋ฐฉ์ํ ์ ๋ณด์ ๋ํ ๊ฐ์ผ๋ก ๋๊ฐ์ ์ํ๋ง ํด๋น์ด ๊ฐ๋ฅํ๊ธฐ๋๋ฌธ์(Waiting(์ค๋น์ค), Ready(์ค๋น์๋ฃ)) ์ด๊ฑฐํ(Enum)์ผ๋ก ์ ์ธํ์์ต๋๋ค.
- MenuService
- Menu ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๋ค ์กฐํํ๋ ๊ธฐ๋ฅ์ผ๋ก ๋ฉ๋ด ์ํฐํฐ์ ๊ธฐ๋ณธ ํค, ๋ฉ๋ด ์ด๋ฆ, ๋ฉ๋ด ๊ฐ๊ฒฉ ์ด 3๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
- OrderService
- ์ฌ์ฉ์๊ฐ ๊ฒฐ์ ๋ฅผ ์์ฒญํ์ ๋ ์ฑ๊ณต์ ์ผ๋ก ๊ฒฐ์ ๊ฐ ์๋ฃ๋ฌ์ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ์ ํํ ๋ฉ๋ด, ๊ฐ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์ดํฉ์ด ์ผ๋ง์ธ์ง ๊ณ์ฐํ Order ํ ์ด๋ธ์ ์ ์ฅํฉ๋๋ค.
- ์ด๋ ์ฃผ๋ฌธ์ด ์๋ฃ๋ ํ ๋ฐ๋ก ์ฃผ๋ฐฉ ๋ชจ๋ํฐ์ ์ถ๋ ฅํ๊ธฐ ์ํด์ Kitchen ํ ์ด๋ธ์ ์ ์ฅํ๊ฒ ํ์ต๋๋ค.
- KitchenService
- ์ฃผ๋ฐฉ์์ ์กฐ๋ฆฌ๋๋ ์๊ฐ์ ์ค์ ํ์ฌ ์ฃผ๋ฌธ์๋ฃํ 2๋ถ ๋ค์ ์ค๋น์๋ฃ๋ ์ํ๋ก ๋ง๋ค๊ธฐ ์ํด ์ค์ผ์ฅด๋ฌ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
- ์ด๋ ์ฃผ๋ฌธํ ์ด๋ธ๋ ์๋ฃ๋ ์ํ์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ด ๊ฐฑ์ ์ ํด์ฃผ์์ต๋๋ค.
- FindByAllMenu
- Menu ํ ์ด๋ธ์์ ๋ฐ๋ก ํ์ํ ๋ด์ฉ๋ง ๊ณจ๋ผ์ ์ถ๋ ฅํ๊ธฐ ์ํด์ DTO๋ฅผ ๋ง๋ค์์ต๋๋ค.
- OrderRequestDTO
- ๊ฒฐ์ ์์ฒญ์ ํ ๋ ๊ฒฐ์ ๊ณ ์ ๋ฒํธ, ์ฃผ๋ฌธ ๋ฒํธ, ๋ฉ๋ด ์ ๋ณด๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก DTO๋ฅผ ๋ง๋ค์์ต๋๋ค.
- MenuController
- MenuService ํด๋์ค์ findByAllMenu ๋ฉ์๋๋ฅผ ํธ์ถํ๋ api ์๋ํฌ์ธํธ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์์ต๋๋ค. /api/findByAllMenu ์๋ํฌ์ธํธ๋ก Get์์ฒญ์ ๋ณด๋ด๋ฉด ๋ก์ปฌ์ ์ ์ฅ๋์ด ์๋ Menu ํ ์ด๋ธ์ ๋ชจ๋ ์ ๋ณด๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
- OrderController
- OrderService ํด๋์ค์ createOrder ๋ฉ์๋๋ฅผ ํธ์ถํ๋ api ์๋ํฌ์ธํธ๋ก ์ฌ์ฉ์๊ฐ ๊ฒฐ์ ๋ฅผ ํ๊ณ ์ฑ๊ณตํ์ ๊ฒฝ์ฐ /api/paymentOrder ์๋ํฌ์ธํธ์ Post์์ฒญ์ ๋ณด๋ด Orderํ ์ด๋ธ๊ณผ Kitchen ํ ์ด๋ธ์ ์ฌ์ฉ์๊ฐ ์ ํํ ๋ฉ๋ด์ ์ ๋ณด๊ฐ ์ ์ฅ์ด๋ฉ๋๋ค.
- HomeController
-
๊ฒฐ์ ํ์ด์ง๋ฅผ ๋ง๋ค๊ธฐ์ํด์ localhost:8080 ๋ฃจํธ ๊ฒฝ๋ก์ index.html์ ๋ ๋๋งํ๊ธฐ์ํ ์ปจํธ๋กค๋ฌ์ ๋๋ค.
- MenuInitializer
- ์ด๊ธฐ์ ๋ฉ๋ด ๋ฐ์ดํฐ๋ค์ DB์ ๋ฃ์ด์ฃผ๊ธฐ ์ํ ํด๋์ค๋ก spring boot๋ฅผ ์คํํ ๋ ์ ํจ์ฑ๊ฒ์ฌ๋ฅผ ์ฒดํฌํ ํ ๋ฐ์ดํฐ๊ฐ ์์๊ฒฝ์ฐ ๋ฃ์ด์ค๋ค.
- git Repository ์ฃผ์๋ฅผ ๋ณต์ฌํ๋ค.
- ๋ฐ๋ก ๋น ๋๋ ํ ๋ฆฌ์ origin์ ์ถ๊ฐํ์ฌ pull์ ๋ฐ๋๋ค.
git init
git remote add origin https://github.com/KII1ua/Software-Engineering.git
git pull origin main
- application.yml ์์
- ๊ฒฝ๋ก demo/src/main/resources
spring:
datasource:
url: jdbc:mysql://localhost:3306/kiosk
username: {๋ก์ปฌ์ ์ค์น๋์ด ์๋ mysql username ์
๋ ฅ}
password: {mysql username์ ๋์ํ๋ password ์
๋ ฅ}
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
show_sql: true
format_sql: true
jdbc:
time_zone: Asia/Seoul
# database-platform:
- MySql์ ์ ์ํ์ฌ kiosk ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
create database kiosk;
- demo ํด๋๋ก ์ด๋ํ์ฌ ํด๋ฆฐ ๋น๋
./gradlew clean build
- ์ ์ฌ์ง์ด ๋์ค๋ฉด ๋น๋ ์๋ฃ
- build/libs ํด๋๋ก ์ด๋ํ์ฌ jar ํ์ผ ์คํ
java -jar demo-0.0.1-SNAPSHOT.jar
- ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด ์ดํ localhost:8080 ์ผ๋ก ์ ์ํ์ฌ ํ ์คํธ ๊ฒฐ์ ์งํ
-
์์ง๋ ํ๊ฐ
- MenuService ํด๋์ค๋ ๋ฉ๋ด ์ํฐํฐ ์กฐํ์๋ง ์ฑ ์์ ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ MenuService์ ๋ํด์๋ ์์ง๋๊ฐ ๋๋ค๊ณ ํ๊ฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
- ํ์ง๋ง OrderService KitchenService ํด๋์ค๋ ์๋ก๊ฐ ํ๋์ฉ ์ผ๋ถ๋ถ์ ์ญํ ์ ์ํํ๊ธฐ ๋๋ฌธ์ MenuService ํด๋์ค ๋งํผ์ ์์ง๋๊ฐ ๋๋ค๊ณ ํ๊ฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
-
๊ฒฐํฉ๋ ํ๊ฐ
- ๋ชจ๋ธ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํด์ ํ๋์ ํ์ผ๋ง ์ฌ์ฉํ์ง ์๊ณ ์ฌ๋ฌ ํ์ผ์ ๋๋ ์ ๊ฐ ๊ธฐ๋ฅ๋ค์ ๋ถ๋ฆฌํ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฒฐํฉ๋๋ ๋ฎ๋ค๊ณ ํ๊ฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
- ์์ง๋์ ๋ง์ฐฌ๊ฐ์ง๋ก Order ๊ฐ์ฒด์ Kitchen ๊ฐ์ฒด์ ์์กด์ฑ์ ์ด๋์ ๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ๋ถ๋ถ์ ์ ์ ํ ๊ฒฐํฉ๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.

















