- π ν¨ν€μ§ ꡬ쑰
- πΊ νλ‘κ·Έλ¨ νλ‘μ° λ° κ΅¬ν κΈ°λ₯
- β ν μ€νΈ λͺ©λ‘
- π κ³ λ―Όνλ μμ
- β μ€κ³ μ μ£Όμ ν¬μΈνΈ
Package | Class | Description |
---|---|---|
βοΈΒ Β config | AppConfig | μ ν리μΌμ΄μ μ μ λ°μ μΈ μ€μ κ³Ό μμ‘΄μ± μ£Όμ μ κ΄λ¦¬νλ κ΅¬μ± ν΄λμ€ |
DtoMapperConfig | DTO λ³νμ μν λ§€νΌ μ€μ μ μ μνλ κ΅¬μ± ν΄λμ€ | |
ValidatorConfig | μ λ ₯ κ²μ¦ λ‘μ§μ μν μ ν¨μ± κ²μ¬κΈ° μ€μ μ μ 곡νλ κ΅¬μ± ν΄λμ€ | |
π’οΈΒ Β constants | LottoRank | λ‘λ λΉμ²¨ 쑰건, λΉμ²¨ κΈμ‘ λ±μ μμλ₯Ό 보κ΄νλ enum ν΄λμ€ |
LottoTicket | λ‘λ λ²νΈμ λ²μ, νλμ λ‘λ ν°μΌμ λ²νΈ κ°―μ λ± λ‘λ ν°μΌ νλμ μ 보λ₯Ό κ°μ§λ enum ν΄λμ€ | |
πΉΒ Β controller | LottoGameController | λ‘λ λ‘μ§μ λ©μΈμΌλ‘ λμνλ 컨νΈλ‘€λ¬ ν΄λμ€ |
π»Β Β domain | MatchResult | winningLottoμ λ‘λ ν μ₯μ λΉκ΅ν κ²°κ³Όλ₯Ό μ μ₯νλ ν΄λμ€ |
MatchResults | MatchResult κ°μ²΄ 리μ€νΈλ₯Ό κ°μ§λ μΌκΈ 컬λ μ | |
RankDecider | MatchResultλ₯Ό λ³΄κ³ λ±μλ₯Ό κ²°μ νλ κΈ°λ₯μ ν΄λμ€ | |
WinningLotto | λΉμ²¨ λ²νΈμ 보λμ€ λ²νΈ μ 보 λ° κ΄λ ¨ λ©μλκ° μλ ν΄λμ€ | |
DefaultLottoFactory | LottoFactoryμ ꡬν체 | |
Lotto | λ‘λ ν μ₯μ λ²νΈ μ 보λ₯Ό κ°μ§κ³ μλ ν΄λμ€ | |
LottoFactory | Lotto κ°μ²΄ μμ± Factory Interface | |
LottoNumbersGenerator | μμμ λ‘λ λ²νΈλ₯Ό μμ±νλ NumberGeneratorμ ꡬν체 | |
Lottos | Lotto κ°μ²΄ 리μ€νΈλ₯Ό κ°λ μΌκΈ 컬λ μ | |
NumberGenerator | μμμ μ«μλ₯Ό μμ±νλ κΈ°λ₯μ Interface | |
βοΈΒ Β dto | FinalResultsDto | λΌμ΄λ λ³ λͺ¨λ μλμ°¨μ μ΄λ¦ λ° μμΉ μ 보λ₯Ό 리ν΄νλ DTO λ μ½λ |
LottoDto | λ‘λ ν μ₯μ λ²νΈ μ 보λ₯Ό 리ν΄νλ DTO λ μ½λ | |
LottosDto | λ‘λλ€μ μ 보λ₯Ό 리ν΄νλ DTO λ μ½λ | |
ProfitDto | μμ΅κ³Ό μμ΅λ₯ μ 리ν΄νλ DTO λ μ½λ | |
RankResultsDto | λ±μ κ΄λ ¨ μ 보λ₯Ό 리ν΄νλ DTO λ μ½λ | |
π«Β Β exception | ErrorMessage | μμΈ λ°μ μ μ¬μ©λλ μλ¬ λ©μΈμ§ Enum ν΄λμ€ |
πΌΒ Β service | DtoMapper | DTOμ Mapper λ΄λΉ Interface |
LottoDtoMapper | LottoDto μμ± Mapper ν΄λμ | |
LottosDtoMapper | LottosDto μμ± Mapper ν΄λμ€ | |
LottoPurchaseService | λ°νν λ‘λμ λΉμ²¨λ²νΈλ₯Ό λΉκ΅νμ¬ κ²°κ³Όκ° μ°μΆνλ Interface | |
LottoPurchaseServiceImpl | LottoPurchaseServiceμ ꡬν체 | |
LottoResultService | μ λ ₯κ°μ λ§μΆ° λ‘λλ₯Ό λ°ννλ κΈ°λ₯μ μλΉμ€ Interface | |
LottoResultServiceImpl | LottoResultServiceμ ꡬν체 | |
πΒ Β utils | constants | κ²μ¦, νμ± κ³Όμ μμ μ¬μ©λλ μμ λ³΄κ΄ enum ν΄λμ€ |
BonusNumberValidator | μ λ ₯λ 보λμ€ λ²νΈμ μ ν¨μ± κ²μ¦μ λ΄λΉνλ ν΄λμ€ | |
ComparisonValidator | μ λ ₯κ°μ λ€λ₯Έ κ°κ³Ό λΉκ΅νμ¬ μ ν¨μ±μ κ²μ¦νλ Interface | |
InputValidator | μ λ ₯κ°μ κ²μ¦νλ validator ν΄λμ€λ€μ Interface | |
LottoNumberValidator | μ«μκ° λ‘λ λ²νΈλ‘ μ ν¨ν μ§ κ²μ¦νλ ν΄λμ€ | |
PositiveIntValidator | μ λ ₯κ°μ μμ μ μ μ¬λΆ κ²μ¦ ν΄λμ€ | |
PurchaseAmountValidator | μ λ ₯ν ꡬ맀 κΈμ‘μ μ ν¨μ± κ²μ¦ ν΄λμ€ | |
WinningNumbersValidator | μ λ ₯ν λΉμ²¨ λ²νΈλ€μ μ ν¨μ± κ²μ¦ ν΄λμ€ | |
Parser | κ°μ’ νμ± ν΄λμ€μ Interface | |
StringToIntListParser | String -> Integer List λ‘μ λ³ν λ΄λΉ ν΄λμ€ | |
StringToIntParser | String ->Int λ‘μ λ³ν λ΄λΉ ν΄λμ€ | |
π¬Β Β view | InputMessages | μ¬μ©μ μ λ ₯ κ΄λ ¨ μλ΄ λ©μΈμ§μ§λ₯Ό μ μ₯νλ enum ν΄λμ€ |
NumberOutputFormat | μΆλ ₯μ μ«μ ν¬λ§· μ 보λ₯Ό μ μ₯νλ enum ν΄λμ€ | |
OutputMessages | μΆλ ₯ λ©μΈμ§λ₯Ό μ μ₯νλ enumν΄λμ€ | |
ConsoleInputView | μ¬μ©μμκ² μ λ ₯μ λ°λ κΈ°λ₯μ λ΄λΉνλ ν΄λμ€ | |
InputView | Input ν΄λμ€ Interface | |
ConsoleOutputView | μ¬μ©μμκ² μλ΅μ μΆλ ₯νλ ν΄λμ€ | |
OutputView | Output ν΄λμ€ Interface |
-
β
ConsoleInputView
ꡬμ κΈμ‘ κ΄λ ¨ μλ΄ λ¬Έκ΅¬λ₯Ό μΆλ ₯νλ€. -
β
ConsoleInputView
λ‘λ ꡬμ κΈμ‘μ μ λ ₯λ°λλ€.- βοΈ
PurchaseAmountValidator
μ ν¨νμ§ μμ κ°μ΄ λ€μ΄μ€λ©΄ μμΈμ²λ¦¬ νλ€.- βοΈ μΈνμ΄ λΉμ΄μλ κ²½μ° μμΈμ²λ¦¬ νλ€.
- βοΈμ«μκ° μλ κ²½μ° μμΈμ²λ¦¬ νλ€.
- κ³΅λ°±μ΄ ν¬ν¨λμ΄ μλ κ²½μ° λν λμΌνλ€.
- βοΈ μ«μμ΄μ§λ§ μ μκ° μλλ©΄ μμΈ μ²λ¦¬ νλ€.
- βοΈ μ μμ΄μ§λ§ μμκ° μλλ©΄ μμΈμ²λ¦¬ νλ€.
- βοΈ μ μμ΄μ§λ§ 1000μμΌλ‘ λλμ΄ λ¨μ΄μ§μ§ μλ κ²½μ° μμΈμ²λ¦¬ νλ€.
- βοΈ 100000μ λμ΄κ°λ κ°μ μ
λ ₯λ°μΌλ©΄ μμΈμ²λ¦¬ νλ€.
- νν λ² μ κ°μΈμ λ‘λ ꡬ맀λ 10λ§μμ΄ μ΅λμ΄κΈ°μ μ΄λ κ² κΈ°μ€μ μ‘μλ€.
- βοΈ
LottoGameController
μμΈκ° λ°μν κ²½μ°, μλ¬λ©μΈμ§ μΆλ ₯ ν λ€μ μ λ ₯ λ°λλ€.
- βοΈ
- β
LottoPurchaseServiceImpl
λ‘λλ₯Ό λ°ννλ€.- βοΈ
DefaultLottoFactory
λ‘λ ꡬμ κΈμ‘ 1000μ λΉ 1 κ°μ λ‘λλ₯Ό λ°ννλ€. - βοΈ
LottoNumbersGenerator
1 κ°μ λ‘λλ₯Ό λ°μν λλ μ€λ³΅λμ§ μλ 6κ°μ μ«μλ₯Ό λ½λλ€.- βοΈ μ΄λ μ«μλ λ°λμ 1 μ΄μ 45 μ΄νμ μ μμ¬μΌ νλ€.
- βοΈ
-
β
LottoGameController
λ°νκ΄λ ¨ μ 보λ₯ΌLottosDTO
λ₯Ό ν΅ν΄ viewμκ² μ λ¬νλ€. -
β
ConsoleOutputView
λ°νν λ‘λ μλμ μΆλ ₯νλ€. -
β
ConsoleOutputView
λ°νν λ‘λλ€μ λ²νΈλ₯Ό μΆλ ₯νλ€- βοΈ μ΄λ λ‘λ λ²νΈλ μ€λ¦μ°¨μμΌλ‘ μ λ ¬νμ¬ λ³΄μ¬μ€λ€.
- β
ConsoleInputView
λΉμ²¨ λ²νΈ μ λ ₯ μλ΄λ¬Έμ μΆλ ₯νλ€ - β
ConsoleInputView
λΉμ²¨ λ²νΈλ₯Ό μ λ ₯ λ°λλ€. λ²νΈλ μΌν(,)λ₯Ό κΈ°μ€μΌλ‘ ꡬλΆνλ€.-
βοΈ
WinningNumbersValidator
μ¬μ©μκ° μλͺ»λ κ°μ μ λ ₯ν κ²½μ° μμΈμ²λ¦¬ νλ€.- βοΈ μ λ ₯κ°μ΄ λΉμ΄μλ κ²½μ° μμΈμ²λ¦¬ νλ€.
- βοΈ μΌνλ₯Ό κΈ°μ€μΌλ‘ λΆλ¦¬λ κ°κ°μ μμκ° μ«μκ° μλ κ²½μ° μμΈμ²λ¦¬ νλ€.
- βοΈ μΌνλ‘ κ΅¬λΆλ μ«μμ κ°―μκ° 6κ°κ° μλκ²½μ° μμΈμ²λ¦¬ νλ€.
- βοΈ κ°κ°μ μ«μκ° 1μ΄μ 45μ΄νμ μ μκ° μλ κ²½μ° μμΈμ²λ¦¬ νλ€.
-
βοΈ
LottoGameController
μμΈκ° λ°μν κ²½μ°, μλ¬λ©μΈμ§ μΆλ ₯ ν λ€μ μ λ ₯ λ°λλ€.
-
-
β
ConsoleInputView
보λμ€ λ²νΈ μ λ ₯ μλ΄λ¬Έμ μΆλ ₯νλ€ -
β
ConsoleInputView
보λμ€ λ²νΈλ₯Ό μ λ ₯λ°λλ€- βοΈ
BonusNumberValidator
μ΄λλ λΉμ²¨ λ²νΈ ν κ° μ«μμ νλ μμΈμ²λ¦¬λ₯Ό λμΌνκ² μ§ννλ€.- βοΈ μ λ ₯κ°μ΄ λΉμ΄μλ κ²½μ° μμΈμ²λ¦¬ νλ€.
- βοΈ μ λ ₯κ°μ΄ μ«μκ° μλ κ²½μ° μμΈμ²λ¦¬ νλ€.
- βοΈ μ«μκ° 1μ΄μ 45μ΄νμ μ μκ° μλ κ²½μ° μμΈμ²λ¦¬ νλ€.
- βοΈ
LottoGameController
μμΈκ° λ°μν κ²½μ°, μλ¬λ©μΈμ§ μΆλ ₯ ν λ€μ μ λ ₯ λ°λλ€.
- βοΈ
- β
LottoResultService
λ΄λΆ λ‘μ§μ ν΅ν΄ λΉμ²¨ κ²°κ³Όλ₯Ό νμΈνλ€- βοΈ
LottoResultService
κ°κ°μ λ‘λμ λνμ¬ μλ λ‘μ§μ μ§ννλ€.- βοΈ
WinningLotto
λΉμ²¨ λ²νΈμ λͺκ°λ μΌμΉνλ μ§, 보λμ€ λ³Όμ μΌμΉνλ μ§ νμΈνλ€. - βοΈ
RankDecider
νμΈ κ²°κ³Όμ λ°λΌ λͺ λ±μΈμ§ κ²°μ νλ€. - βοΈ
MatchResults
κ²°κ³Όλ₯Ό μ μ₯νλ€.
- βοΈ
- βοΈ
- β
LottoResultService
μμ΅λ₯ μ κ³μ°νλ€- βοΈ
LottoResultService
μμμ ꡬν μ 체 κ²°κ³Όλ₯Ό ν΅ν΄ μΌλ§λ₯Ό μ»μλ μ§ κ³μ°νλ€. - βοΈ
LottoResultService
μ΄μμ΅μ ꡬ맀κΈμ‘μΌλ‘ λλλ€.
- βοΈ
- β
LottoResultService
κ²°κ³Όλ₯ΌFinalResultsDto
λ‘ λ³ννλ€ - β
LottoGameContorller
κ²°κ³Όλ₯ΌFinalResultsDto
λ‘ λ³ννλ€
- β
ConsoleOutputView
λΉμ²¨ λ΄μμ μΆλ ₯νλ€.- βοΈ
ConsoleOutputView
5λ±λΆν° ν μ€ μ© "xκ° μΌμΉ (x,xxx,xxxμ) - xκ°" κΌ΄λ‘ μΆλ ₯νλ€.- βοΈ μ΄λ μ«μλ μΈκ° λ§λ€ μΌν(,)λ₯Ό λ£λλ€.
- βοΈ
ConsoleOutputView
2λ±μ κ²½μ° μ νν μ€κ°μ ', 보λμ€ λ³Ό μΌμΉ'κ° μΆκ° λλ€.
- βοΈ
- β
ConsoleOutputView
μμ΅λ₯ μ μΆλ ₯νλ€.- βοΈ
ConsoleOutputView
μ΄μ μ κ³μ°ν΄ λμλ μμ΅λ₯ μ "μ΄ μμ΅λ₯ μ xx.x%μ λλ€."ννλ‘ μΆλ ₯νλ€.
- βοΈ
viewμμ μ λ ₯κ°μ λ°μ. controllerλ₯Ό ν΅ν΄ modelλ‘ λκ²¨μ Έμ μ²λ¦¬κ° μ΄λ£¨μ΄μ§λ ꡬ쑰μμ, κ³Όμ° μ΄λμμ μ λ ₯κ°μ λν κ²μ¦μ ν΄μΌνλμ λν΄μ λ§μ κ³ λ―Όμ νμμ΅λλ€.
κ·Έ κ²°κ³Ό viewμλ μ΅μνμ λ‘μ§μ΄ μ‘΄μ¬νκ³ , 컨νΈλ‘€λ¬λ μ 체 λ‘λ λ‘μ§μ κ±°λν νλ¦μ λ€λ£¨λ κ²μ΄ μ³μ ꡬ쑰λΌκ³ μκ°νμ΅λλ€. κ·Έ κ²°κ³Ό μλΉμ€ λ μ΄μ΄μμ μ ν¨μ± κ²μ¦μ μ§ννμμ΅λλ€.
λλ©μΈ λ΄μ λ‘μ§μ΄ μ€νλκΈ°μ μ μλΉμ€μμ μΌμ°¨μ μΌλ‘ μ
λ ₯κ°μ λν κ²μ¦μ λλ΄κ³ , μ£Όμν ν΄λμ€μΈ Lotto
μ κ²½μ°μλ μμ± μ ν λ² λ μ
λ ₯κ°μ λν κ²μ¦μ νλ λ°©μμ μ±ννμ΅λλ€.
μ΄μ λν΄μ μ λ² μ£ΌλΆν° λ§μ κ³ λ―Όμ΄ μμμ΅λλ€. μΌλ¨μ μΆλ ₯μ΄λκΉ Output? μλλ©΄ κ·Έλλ μ λ ₯κ³Ό κ΄λ ¨λ μμμ΄λκΉ Input? μ΄μ λν΄μ λ§μ μ¬λλ€κ³Ό μ΄μΌκΈ°νκ³ , μ½λ리뷰λ₯Ό νλ©° μ€μ€λ‘ κΈ°μ€μ μΈμλ΄€μ΅λλ€.
μ κ²°λ‘μ Inputμ΄μμ΅λλ€. InputViewμ OutputViewκ° μλ Readerμ Printerμλ€λ©΄ μ¬ννκ² λ¬΄μΈκ° κ°μ μΈλΆλ‘λΆν° μ½μ΄ μ€λ κ²μ Readerμ, μ΄λ€ κ²μ΄λ μΆλ ₯νλ κ²μ Printerμ μμΉμμΌ°μ κ²μ λλ€.
νμ§λ§ μ§κΈ μ κ° λλ κ²μ Inputviewμ OutputViewμ λλ€. κ²°κ΅ "μ λ ₯μ κ΄λ ¨λ" μ¬νμ InputViewμ λ΄κ²¨ μκ³ , μ΄ Inputμ μν΄μ 무μΈκ° μΌμ’ μ κ²°κ³Όκ°μΌλ‘ μΆλ ₯λλ νλμ λν΄μ "OutputView"μ λ΄κ²¨μλ κ²μ΄ λ§λ€κ³ μκ°νμ¬ μ§κΈκ³Ό κ°μ κ΅¬μ‘°λ‘ κ²°μ νμμ΅λλ€.
λλ€λ₯Έ λ§μ κ³ λ―Όμ΄ μλ λΆλΆμ λλ€. μ΄ νλ‘κ·Έλ¨μμ λ§μ λΆλΆμμ μμκ° νμ©λκ³ μμ΅λλ€. μ΄λ€ μμλμ λ°λΌμ νλμ νμΌμμλ§ νμ©λλ κ²λ μκ³ , νλμ ν¨ν€μ§μμ νμ©λλ κ²λ μμμΌλ©°, μ μμμ μ¬μ©λλ κ²λ μμμ΅λλ€. μ΄λ€μ νλμ κ±°λν νμΌμμ κ΄λ¦¬ν μ§, μλλ©΄ κ°λ³μ νμΌμμ κ΄λ¦¬ν μ§ κ³ λ―Όνμ΅λλ€.
μ κ²°λ‘ μ κ°λ³μ νμΌμ λλ€. κ²°κ΅ μμλ₯Ό ν κ³³μμ κ΄λ¦¬νλ κ²½μ°, ν° μ₯μ μ΄ ν κ³³μμ κ΄λ¦¬νκΈ° μ½λ€λ κ²μ λλ€.
κ·Έλ°λ° μ΄λ² νλ‘κ·Έλ¨μ κ²½μ°, μμκ° String , int, DecimalFormat λ±λ± λ€μν μλ£νμΌλ‘ μ‘΄μ¬νλ©°, κ·Έλ₯ μμ μμ²΄κ° λ§μ΅λλ€.
μ΄λ¬ν κ²½μ° μ€νλ € ν κ³³μμ κ΄λ¦¬νλ κ²μ΄ ν·κ°λ¦¬κ² ν κ²μ΄λΌκ³ νλ¨νμ¬ μ¬μ©μ² λ³λ‘ μμλ₯Ό λλμ΄μ μμΉμμΌ°μ΅λλ€.
μ΄κ²μ΄ μ€νλ € μμΉμ λ°λΌ μ΄λμμ μ°μ΄λ μ§κ° λͺ λ£ν΄μ§κΈ° λλ¬Έμ μ’μ κ² κ°μ΅λλ€.
μ΄λ μμ§λ κ³ λ―ΌμΈ λΆλΆμ λλ€. μ λ μ΄λ² νλ‘κ·Έλ¨μμ 컨νΈλ‘€λ¬λ₯Ό ν΅ν΄ μλΉμ€ λ μ΄μ΄λ‘ λμ΄κ°λ λ°μ΄ν°λ μ ν¨μ± κ²μ¦μ μ§νν ν κ·Έλλ‘ μ λ¬νμκ³ , μλΉμ€ λ μ΄μ΄μμ νΉμ λ‘μ§μ κ²°κ³Όλ¬Όλ‘ λμ€λ λ°μ΄ν°λ DTOλ₯Ό νμ©νμ¬ μ»¨νΈλ‘€λ¬ λ μ΄μ΄λ‘ λ΄λ³΄λμ΅λλ€.
νμ§λ§ μ΄κ² μ λ§ μ΅μ μ λ°©λ²μΈμ§μ λν΄ μμ§ λΆνμ€ ν©λλ€. View λ μ΄μ΄μ 컨νΈλ‘€λ¬ λ μ΄μ΄ μ¬μ΄μμλ DTOλ₯Ό μμ μ¬μ©νμ§ μλ μ§ λ±, μ¬λ¬κ°μ§ λΆλΆμμ DTOκ΄ν λ Όμμ΄ μκΈ°κΈ°μ μ΄λ₯Ό μ’ λ κ³ λ―Όν΄λ΄μΌκ² μ΅λλ€.
- λ·°, μλΉμ€, μ νΈ, λλ©μΈ, 컨νΈλ‘€λ¬ λ±μ μν μ λͺ νν λΆλ¦¬νμμ΅λλ€
- AppConfig, Factory ν΄λμ€ λ±μ μ΄μ©ν΄μ μ€μ€λ‘ μμ‘΄μ±μ μμ±νλ κ²μ΄ μλ μμ‘΄μ±μ μ£Όμ λ°λλ‘ νμμ΅λλ€.
- μΈν°νμ΄μ€λ₯Ό μ κ·Ή νμ©νμ¬ μμ λͺ¨λμ νμ λͺ¨λμ μ’ μλμ§ μλλ‘ νμμ΅λλ€.
- μ κ·Ήμ μΌλ‘ enumμ μ¬μ©νκ³ , ν¬λ§·μ μ΄μ©ν¨μΌλ‘μ¨ νλμ½λ©μ μ΅μν μμΌ°μ΅λλ€
- μ§κΈ νμν κΈ°λ₯λ§ λ£κ³ , λΆνμνκ² λ€μν λ‘μ§μ λ£κ±°λ μμ§ μΌμ΄λμ§ μμ λΆλΆμ λν μ½λ©μ μ κ±°νκ³ μ΅μννμ¬ μ½λλ₯Ό κ°λ΅ννμμ΅λλ€.
- λ¨μνκ² κ΅¬νν μμλλ‘ μ½λλ₯Ό μ λ κ²μ΄ μλ, μ½λλ₯Ό μ½λ μ μ₯μμ μλλ₯Ό νμ ν μ μλλ‘ λ°°μΉμμΌ°μ΅λλ€.
- If-elseλ₯Ό μ¬μ©νκΈ° 보λ€λ If-return If-return νΉμ μ€νΈλ¦Όμ μ΄μ©ν μ½λλ₯Ό μ§μ Else μ¬μ©μ μ§μνμμ΅λλ€.
- λ©μλ λ§λ€ λ± ν μ€λ‘ μ μ μ μλ κΈ°λ₯λ§μ νμ¬νμ¬ λ©μλ νλμ ν¬κΈ°λ₯Ό μ΅μννμμ΅λλ€.