- Java Style Guide: 우아한테크코스의 자바 스타일 가이드
- TDD를 적극 도입한다.
- 비즈니스 로직에서 null을 허용하지 않는다.
- 교대는 10분마다 진행한다.
- 12시 1분은 12시가 아니다.
- 싸우지 않는다.
-
LottoPurchaseMoney
: 로또 구입 금액과 관련된 책임을 가진 객체이다. 로또 구입 금액을 활용하여 로또 티켓의 갯수를 계산할 수 있다.- 구입 금액을 기반으로 티켓 갯수를 반환한다.
- 구입 금액이 1000원 미만인 경우 예외를 던진다.
- 거스름돈이 생긴 경우 가능한 티켓 갯수만 반환한다.
- 구입금액이 음수인 경우 예외를 던진다.
- 수동 입력 개수가 총 금액에 의한 총 개수보다 클 수 없다.
-
LottoTicket
: 6자리의 로또 번호 관리의 책임을 가진 객체이다.- 로또 티켓 생성 시점에 로또 번호 생성을 위한 전략을 활용한다.
- Getter로 꺼내오는 리스트를 변경할 경우 예외를 던진다.
- LottoTicket을 기반으로 당첨 번호가 존재하는지 유무를 반환한다.
- 로또 번호가 6개인지 검증한다.
- 로또 번호 중복을 검증한다.
-
LottoNumberGenerator
: 로또 번호를 생성 전략을 가진 인터페이스이다. -
AutoLottoNumberGenerator
: 6자리 로또 번호를 자동으로 생성해주는 책임을 가진 객체이다.- 1 ~ 45 자리의 랜덤한 수를 6개 생성한다.
- 생성된 숫자는 6자리임을 보장한다.
- 생성된 숫자는 1 ~ 45의 범위를 가진다.
- Collection.shuffle() 메소드를 활용한다.
- Collection.sort() 메소드를 활용해 정렬하여 생성해준다.
-
LottoTickets
: 로또 생성 갯수와 생성 전략을 받아 로또 티켓 리스트를 관리하는 일급 컬렉션이다.- 로또 생성 갯수와 생성 전략을 받아 로또 티켓 리스트를 생성한다.
- 로또 티켓의 갯수를 반환한다.
-
LottoMachine
: 로또 티켓을 자동 발급하기 위한 책임을 가지고 있다. 위 도메인 객체들과 협력을 이뤄 자동 발급을 진행한다.- 구입 금액을 기반으로 로또 티켓을 자동 발급한다.
-
WinningNumber
: 당첨 번호 한자리의 책임을 가지고 있다. 해당 당첨 번호는 보너스볼의 여부를 포함하고 있다.- 해당 당첨 번호가 보너스볼인지 여부를 확인한다.
-
WinningNumbers
: 당첨 번호 리스트를 가진 일급 컬렉션이다.- 당첨 번호 개수 만큼 당첨 번호를 생성한다.
- LottoTicket 을 기반으로 당첨 정보를 반환한다.
- 중복되는 숫자가 있는지 검증한다.
-
Rank
: 당첨 정보를 명시하는 열거형이다.- 보너스 볼을 포함하여 5개를 맞춘 경우 2등이어야한다.
- 보너스 볼을 포함하지 않고 5개를 맞춘 경우 3등이어야한다.
- 보너스볼 포함하여 6개 맞춘 경우 1등이어야 한다.
- 보너스볼 미포함하여 6개 맞춘 경우 1등이어야 한다.
- 2개 맞춘 경우 NOTTING 이다.
-
LottoResult
: 로또 수익률 계산의 책임을 가지는 객체이다.- 구입 금액이 주어지면 수익률을 계산하여 반환한다.