From 361771bbae144288085f86e61c76e4275db3e620 Mon Sep 17 00:00:00 2001 From: Aimbe Date: Fri, 20 Dec 2024 19:26:56 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=9A=94=EA=B5=AC=EC=82=AC=ED=95=AD=20?= =?UTF-8?q?controller=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- src/main/kotlin/lotto/controller/LottoController.kt | 11 ++++++++--- src/main/kotlin/lotto/service/LottoService.kt | 11 +++++++---- src/main/kotlin/lotto/view/ResultView.kt | 10 +++++++--- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index e591a7678..0331793eb 100644 --- a/README.md +++ b/README.md @@ -3,5 +3,5 @@ πŸš€ 3단계 - 둜또(2λ“±) ## κ΅¬ν˜„ κΈ°λŠ₯ λͺ©λ‘ -- [x] 2등을 μœ„ν•΄ μΆ”κ°€ 번호λ₯Ό ν•˜λ‚˜ 더 μΆ”μ²¨ν•œλ‹€. -- [x] 당첨 톡계에 2등을 μΆ”κ°€ν•œλ‹€. +- [x] ν˜„μž¬ 둜또 μƒμ„±κΈ°λŠ” μžλ™ 생성 κΈ°λŠ₯만 μ œκ³΅ν•œλ‹€. μ‚¬μš©μžκ°€ μˆ˜λ™μœΌλ‘œ 좔첨 번호λ₯Ό μž…λ ₯ν•  수 μžˆλ„λ‘ ν•΄μ•Ό ν•œλ‹€ +- [x] μž…λ ₯ν•œ κΈˆμ•‘, μžλ™ 생성 숫자, μˆ˜λ™ 생성 번호λ₯Ό μž…λ ₯ν•˜λ„λ‘ ν•΄μ•Ό ν•œλ‹€. diff --git a/src/main/kotlin/lotto/controller/LottoController.kt b/src/main/kotlin/lotto/controller/LottoController.kt index b36203a67..6eeb290ed 100644 --- a/src/main/kotlin/lotto/controller/LottoController.kt +++ b/src/main/kotlin/lotto/controller/LottoController.kt @@ -1,18 +1,23 @@ package lotto.controller import lotto.domain.LottoPrice +import lotto.domain.LottoPurchaseManager import lotto.service.LottoService import lotto.view.InputView import lotto.view.ResultView fun main() { val purchaseAmount = InputView().readPurchaseAmount() - val lottos = LottoService().purchase(LottoPrice(purchaseAmount)) - ResultView().printPurchaseResult(lottos) + + val manualCount = InputView().readManualLottoCount() + val manualLottos = InputView().readManualLottoNumbers(manualCount) + + val lottos = LottoService(LottoPurchaseManager()).purchase(LottoPrice(purchaseAmount), manualLottos) + ResultView().printPurchaseResult(manualCount, lottos) val winningNumbers = InputView().readWinningNumbers() val bonusBall = InputView().readBonusBall(winningNumbers) - val winningResult = LottoService().checkWinning(lottos, winningNumbers, bonusBall) + val winningResult = LottoService(LottoPurchaseManager()).checkWinning(lottos, winningNumbers, bonusBall) ResultView().printWinningStatistics(winningResult) ResultView().printProfitRate(winningResult.calculateProfitRate(purchaseAmount)) diff --git a/src/main/kotlin/lotto/service/LottoService.kt b/src/main/kotlin/lotto/service/LottoService.kt index 741cb4a65..a3cc442b2 100644 --- a/src/main/kotlin/lotto/service/LottoService.kt +++ b/src/main/kotlin/lotto/service/LottoService.kt @@ -2,15 +2,18 @@ package lotto.service import Lottos import lotto.domain.Lotto -import lotto.domain.LottoFactory import lotto.domain.LottoNumber import lotto.domain.LottoPrice +import lotto.domain.LottoPurchaseManager import lotto.domain.WinningLotto import lotto.domain.WinningResult -class LottoService { - fun purchase(price: LottoPrice): Lottos { - return LottoFactory.create(price) +class LottoService(private val purchaseManager: LottoPurchaseManager) { + fun purchase( + price: LottoPrice, + manualLottos: List = emptyList(), + ): Lottos { + return purchaseManager.purchase(price, manualLottos) } fun checkWinning( diff --git a/src/main/kotlin/lotto/view/ResultView.kt b/src/main/kotlin/lotto/view/ResultView.kt index cedfd2279..aa57d2ad8 100644 --- a/src/main/kotlin/lotto/view/ResultView.kt +++ b/src/main/kotlin/lotto/view/ResultView.kt @@ -5,9 +5,13 @@ import lotto.domain.Rank import lotto.domain.WinningResult class ResultView { - fun printPurchaseResult(lottos: Lottos) { - println("${lottos.size}개λ₯Ό κ΅¬λ§€ν–ˆμŠ΅λ‹ˆλ‹€.") - lottos.lottos.forEach { println(it) } + fun printPurchaseResult( + manualCount: Int, + lottos: Lottos, + ) { + val autoCount = lottos.size - manualCount + println("\nμˆ˜λ™μœΌλ‘œ ${manualCount}μž₯, μžλ™μœΌλ‘œ ${autoCount}μž₯을 κ΅¬λ§€ν–ˆμŠ΅λ‹ˆλ‹€.") + lottos.lottos.forEach { println(it.numbers.map { num -> num.number }) } } fun printWinningStatistics(winningResult: WinningResult) {