חניון
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Ruby של Coddy. שיעור 55 מתוך 57.
אתגר
קשהבנה חניון. 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 (התעריף כפול מספר השעות, לפחות שעה אחת), או 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
כל השיעורים ביחידה תכנות מונחה עצמים
3מתודות ומשתנים של מחלקה
מתודות של מחלקהמשתני מופע של מחלקהקבועיםמתודות ליצירת מופעיםסיכום – קודי קופוןתרגלו בעצמכם: קומפיילר Ruby אונליין