Skip to content

Commit

Permalink
feat: 요구사항 controller 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
Aimbe committed Dec 20, 2024
1 parent 1f4ddda commit 361771b
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 12 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
🚀 3단계 - 로또(2등)
## 구현 기능 목록

- [x] 2등을 위해 추가 번호를 하나 더 추첨한다.
- [x] 당첨 통계에 2등을 추가한다.
- [x] 현재 로또 생성기는 자동 생성 기능만 제공한다. 사용자가 수동으로 추첨 번호를 입력할 수 있도록 해야 한다
- [x] 입력한 금액, 자동 생성 숫자, 수동 생성 번호를 입력하도록 해야 한다.
11 changes: 8 additions & 3 deletions src/main/kotlin/lotto/controller/LottoController.kt
Original file line number Diff line number Diff line change
@@ -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))
Expand Down
11 changes: 7 additions & 4 deletions src/main/kotlin/lotto/service/LottoService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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<Lotto> = emptyList(),
): Lottos {
return purchaseManager.purchase(price, manualLottos)
}

fun checkWinning(
Expand Down
10 changes: 7 additions & 3 deletions src/main/kotlin/lotto/view/ResultView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit 361771b

Please sign in to comment.