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์ฅ์ ์นด๋๋ง ์ถ๋ ฅํ๋ค. -[ ] ๋๋ฌ์ ํ๋ ์ด์ด์ ์ต์ข ์นํจ๋ฅผ ์ถ๋ ฅํ๋ค.