기능 구현 목록
Model : 데이터 관리
ConstantDataStorage
1~45까지의 수를 포함하는 데이터 저장
당첨 번호의 개수 6 저장
보너스 번호의 개수 1 저장
LottoTicketsStorage
발행된 로또티켓들을 저장
WinNumbersStorage
당첨 번호 저장
BonusNumberStorage
보너스 번호 저장
NumberOfCorrespondedNumberStorage
일치한 번호의 개수 저장
View : Printout, input 관리
MoneyReceiver
금액 입력받음
WinNumberReceiver
당첨번호 입력받음
BonusNumberReceiver
보너스번호 입력받음
ConstantMents
각종 진행중 출력 양식을 상수화한 클래스 구현.
IssuedLottoPrinter
발행한 로또들을 출력.
ResultPrinter
WinResultManager로부터 받은 값을 출력.
Controller : 알고리즘 관리
논리 구현
Casher
1000원 단위로 떨어지는 티켓수 발행.
남은 금액은 예외처리 후 반환.(예외처리후 프로그램을 종료해야 하는지 알아보자.)
TicketMachine
구입한 금액만큼의 티켓을 랜덤넘버로 발행
WinResultManager
일치하는 번호의 갯수 enum으로 반환
EarningRateCalculator
수익률 계산.
예외 처리 (To User : IllegalArgumentException / To pgrogrammer :
)
예외 상황시 반드시 앞에 [ERROR] 출력(로그 활용)후 에러 문구 같이 출력.
validateLottoNumberRange
로또 번호의 숫자 범위 1~45 체크
[ERROR] 로또 번호는 1부터 45 사이의 숫자여야 합니다.
validateDuplicatedNumber
숫자 중복 여부 체크(로또 발행시, 당첨 번호 입력시, 보너스 번호 입력시)
[ERROR] 로또 번호는 중복되지 않아야 합니다.
validateNumberSize
숫자 자릿수 체크(6 or 1(보너스))
Case ‘6’ : [ERROR] 로또 번호는 총 6개여야 합니다.
Case ‘1’ : [ERROR] 보너스 번호는 1개여야 합니다.
validateWinnerNumber
당첨자가 5명인지 체크
[ERROR]
당첨자는 총 5명이어야 합니다.
validateIssuedTicketNumber
티켓이 구입한 금액의 1000원 단위에 맞게 나왔는지 체크
[ERROR]
티켓의 갯수가 구입하고자 하는 수량과 다릅니다.
validateMoneyUnit_1000
1000원으로 나눠떨어지는지 확인후 잔돈이 생기는지 체크
[ERROR]
받은 금액에 잔돈이 발생했습니다.
validateUserInputIsMoney
유저가 입력한 값이 숫자인지 확인
[ERRPR] 입력값이 올바르지 않습니다. 숫자를 넣어주세요.
사용자가 잘못된 값을 입력할 경우 IllegalArgumentException을 발생시키고, 에러 메시지는 예외 발생시 로그를 남기는 방식으로 나타낸다. 메시지 출력후 프로그램은 종료된다.