MotorVehicle (Interface)
- 리터당 이동 거리를 반환 getDistancePerLiter
- 여행할 거리를 반환 getTripDistance
- 차종 이름을 반환 getName
Car (abstract class) (implements MotorVehicle)
- 거리에 따른 연료량을 계산 후 반환 getChargeQuantity
- 멤버변수 distance
Sonata, Avante, K5 (extends Car)
- 생성자로 distance 받기
- private static final 로 연비를 가짐. (10km/리터, 15, 13)
RentCompany
- 차 List를 가짐.
- private 생성자
- static create()을 통해 객체 생성
- addCar(Car) 를 통해 차 List에 저장
- generateReport 를 통해 report String 반환
[Card : Denomination, Shape]
- enum으로 1~10,J,Q,K를 구현한다.
- enum으로 하트,스페이드,다이아몬드,클로버를 구현한다.
- value와 shape를 합쳐 한 장의 카드를 생성한다.
[Person]
- 모든 사람들은 카드 목록을 갖고 있다.
- 카드 1장을 인자로 전달 받아 카드 목록에 추가한다.
[Player extends Person]
- 플레이어는 추가적으로 이름을 갖고 있다.
- 생성 시에 플레이어 이름만 인자로 전달 받아서 자기의 이름을 초기화한다.
- 전달 받은 1장의 카드를 자신의 카드 목록에 추가한다. (Person 기능)
[Dealer extends Person] 딜러가 카드를 섞어서 뽑는 역할. CardDeck으로 분리.
- 생성 시에 CardDeck을 초기화한다.
- 인자로 전달 받은 1장의 카드를 자신의 카드 목록에 추가한다. (Person 기능)
- 전달 인자로 받은 장수만큼 카드를 반환한다.
[CardDeck]
- 전체 카드를 만들어서 리스트로 반환한다. (static)
- 인스턴스 생성 시, 만들어진 52장의 카드로 멤버변수를 초기화한다.
- shuffle한 뒤 전달인자로 받은 수만큼 카드를 뽑아서 반환한다. (제거하면서 반환한다.)
[GameApplication]
-
GameSetup의 Dealer와 List를 입력받고, 생성된 setup 내용을 ResultView에게 넘긴다.
-
카드의 합이 21 이하인지 카드를 추가로 뽑을 것인지 질문한다.
-
딜러에게 필요한 장수만큼 카드를 요구한다.
-
반환 받은 카드를 통해 딜러와 플레이어들을 초기화한다.
[InputView]
-[x] 플레이어 이름을 입력받아서 쉼표 기준으로 분리한 List을 반환한다. -[x] 플레이어에게 카드를 추가로 받을 것인지 입력받는다.
[ResultView]
-[x] 딜러와 플레이어 List<>를 전달 받아 이름과 카드 목록을 출력한다. -[x] 처음 시작 때 딜러는 1장의 카드만 출력한다. -[ ] 딜러와 플레이어의 최종 승패를 출력한다.