Skip to content

Latest commit

 

History

History
70 lines (57 loc) · 3.28 KB

File metadata and controls

70 lines (57 loc) · 3.28 KB

연료 주입

기능 요구사항

우리 회사는 렌터카를 운영하고 있다. 현재 보유하고 있는 차량은 Sonata 2대, Avante 1대, K5 2대로 총 5대의 차량을 보유하고 있다. 고객이 인터넷으로부터 예약할 때 여행할 목적지의 대략적인 이동거리를 입력 받는다. 이 이동거리를 활용해 차량 별로 필요한 연료를 주입한다. 차량 별로 주입해야 할 연료량을 확인할 수 있는 보고서를 생성해야 한다. 각 차량별 연비는 다음과 같다.

  • Sonata : 10km/리터
  • Avante : 15km/리터
  • K5 : 13km/리터

기능 목록

  • 회사를 생성한다. - RentCompany
    • 자동차를 생성한다. - RentCompany.addCar
      • 종류 : Sonata, Avante, k5
      • 개수 : Sonata 2대, Avante 1대, K5 2대
      • 주입해야할 연료량을 계산한다. - Car.getChargeQuantity()
    • 차량 별로 주입해야할 보고서를 생성한다. - RentCompany.generateReport()

블랙잭

기능 요구사항

블랙잭 게임을 변형한 프로그램을 구현한다. 블랙잭 게임은 딜러와 플레이어 중 카드의 합이 21 또는 21에 가장 가까운 숫자를 가지는 쪽이 이기는 게임이다.

카드의 숫자 계산은 카드 숫자를 기본으로 하며, 예외로 Ace는 1 또는 11로 계산할 수 있으며, King, Queen, Jack은 각각 10으로 계산한다. 게임을 시작하면 플레이어는 두 장의 카드를 지급 받으며, 두 장의 카드 숫자를 합쳐 21을 초과하지 않으면서 21에 가깝게 만들면 이긴다. 21을 넘지 않을 경우 원한다면 얼마든지 카드를 계속 뽑을 수 있다. 딜러는 처음에 받은 2장의 합계가 16이하이면 반드시 1장의 카드를 추가로 받아야 하고, 17점 이상이면 추가로 받을 수 없다. 게임을 완료한 후 각 플레이어별로 승패를 출력한다.

  • 딜러, 플레이어 (공통) - Participant

    • 이름
    • 보유 카드
    • 승, 패 기록
    • 첫번째 2장의 카드를 뽑음
    • 이후 1장씩 카드를 뽑음
    • 점수를 계산
    • 보유하고 있는 카드 정보 반환
  • 딜러 - Dealer

    • 딜러는 카드 점수가 16 이하이면 카드를 1장 더 받음
  • 플레이어 - Player

    • 플레이어는 카드를 1장 더 받을지 안받을지 입력을 받아서 카드를 받음
  • 카드 - Card

    • 종류 : ♦︎다이아, ♥하트, ♠스페이드, ♣클로버
    • 숫자 : 1 ~ 9, A (= 1, 11), K (= 10), Q (= 10), J (= 10)
    • 에이스 카드일 경우, 점수가 15 미만이면 에이스카드점수는 11점이 되고, 16이상이면 점수가 1점이 됨
    • 카드 정보를 반환
  • 덱 - Deck

    • 카드 52장을 생성하고 관리
    • 생성시 미리 덱을 섞어서 반환
    • 카드를 여러장 뽑음
    • 카드를 한장 뽑음
  • 사용자가 가지고 있는 카드 묶음 - ParticipantsCards

    • 가지고 있는 카드를 추가
    • 카드의 점수를 계산
    • 가지고 있는 카드의 정보를 반환
  • 게임 - GameController

    • 게임 진행
  • 입력 - InputView

    • 게임 참여자 입력 (쉼표로 구분)
    • 카드를 더 받을지 입력 (y/n)
    • 빈 입력을 허용하지 않음
  • 출력 - PrintView

    • 뽑은 카드 결과 출력
    • 게임 결과 출력
    • 최종 승패 출력