주차장
Coddy Ruby 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 55번째.
챌린지
어려움주차장을 만드세요. Vehicle은 plate를 저장하며, 그 하위 클래스는 size와 hourly_rate를 정의합니다. Motorbike는 크기 1(소형)이고 시간당 요금은 1이며, Car는 크기 2(중형)이고 요금은 3, Van은 크기 3(대형)이고 요금은 5입니다. 주차장의 상수 SIZES는 %w[small medium large]입니다. Garage.new(small, medium, large)는 크기별 주차 공간 수를 인수로 받습니다. park(vehicle)은 차량을 자체 크기의 빈 공간에 주차하고, 빈 공간이 없으면 다음으로 큰 크기의 공간에 주차하며, parked AB12 in medium 또는 full for AB12를 반환합니다. leave(plate, hours)는 공간을 비우고 AB12 paid 9(시간당 요금에 시간을 곱한 값이며, 최소 1시간)를 반환하거나 no vehicle AB12를 반환합니다. status는 free: small 1, medium 0, large 2를 반환합니다.
제공된 코드는 주차 공간을 small,medium,large 순서로 읽은 다음, park car AB12, leave AB12 3 또는 status 명령을 처리하고 각 응답을 출력합니다.
코드는 vehicle.rb, motorbike.rb, car.rb, van.rb 및 garage.rb에 작성합니다. main.rb에는 제공된 입력/출력 코드가 들어 있으며 편집할 수 없습니다.
직접 해보기
require_relative 'vehicle'
require_relative 'motorbike'
require_relative 'car'
require_relative 'van'
require_relative 'garage'
# 제공된 입력/출력 코드: 그대로 유지하세요
input = []
while (line = gets)
input << line.chomp
end
small, medium, large = input[0].split(",").map(&:to_i)
garage = Garage.new(small, medium, large)
kinds = { "bike" => Motorbike, "car" => Car, "van" => Van }
input.drop(1).each do |cmd|
parts = cmd.split
case parts[0]
when "park" then puts garage.park(kinds[parts[1]].new(parts[2]))
when "leave" then puts garage.leave(parts[1], parts[2].to_i)
else puts garage.status
end
end
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 Ruby 컴파일러