_

Always be tactful

Programming/Insights

[Java] MVC 패턴: 로또 애플리케이션 만들기 2편

funczun 2025. 2. 20. 02:20

 

이번에 만드는 로또 애플리케이션은 다음 기능을 포함한다.

 

1. 로또 게임 구매

    ㄴ 사용자로부터 금액을 입력받는다.

    ㄴ 입력받은 금액이 유효한지 검증한다.

    ㄴ 제공할 로또 게임 수를 계산하고 자동으로 출력한다.

 

2. 로또 게임 비교

    ㄴ 사용자로부터 당첨번호를 입력받는다.

    ㄴ 당첨번호가 유효한지 검증한다.

    ㄴ 앞서 자동으로 생성한 로또 게임들과 당첨번호를 비교한다.

 

3. 당첨 결과 확인

    ㄴ 당첨 결과를 출력한다.

    ㄴ 수익률을 계산하여 출력한다.


자가점검

 

InputView는 사용자입력만을 담당한다. 입력받은 값이 유효한 금액으로 처리될 수 있는지는 controller에서 판단한다. 예외가 발생하면 다시 InputView로부터 입력을 받는다.

 

입력값이 숫자로 파싱 되는가에 대한 검증은 재사용빈도가 높으므로, utils 패키지에 ValidateParse 클래스를 추가하여 진행한다. controller는 해당 utils 패키지를 적극 활용한다.

 

사용자로부터 당첨번호를 입력받은 경우, 이에 대한 검증은 controller가 아닌, model에서 처리한다. 이미 Lotto 클래스에 관련 검증 메서드가 포함되어 있기 때문이다. 예외가 발생하면 다시 InputView로부터 입력을 받는다.

 

당첨번호 비교와 수익률 계산은 service 패키지에 LottoService 클래스에서 진행된다. 이후 controller로 반환하며, controller는 OuputView를 통해 최종 결과를 출력한다.


프로젝트 구조
LottoApp/
│
├── src/
│   └── lotto/
│       ├── controller/
│       │   └── LottoGameController.java
│       │
│       ├── enums/
│       │   ├── message/
│       │   │   └── LottoExceptionMessage.java
│       │   │   └── LottoResultMessage.java
│       │   │   └── LottoViewMessage.java
│       │   └── LottoGameSet.java
│       │   └── LottoPrize.java
│       │
│       ├── model/
│       │   ├── Lotto.java
│       │   └── ResultLotto.java
│       │
│       ├── service/
│       │   └── LottoService.java
│       │
│       ├── utils/
│       │   └── ValidateParse.java
│       │
│       ├── view/
│       │   └── InputView.java
│       │   └── OutputView.java
│       │
│       └── Application.java
│
└── build.gradle