חניון
חלק מהיחידה תכנות מונחה עצמים במסלול ה-R של Coddy. שיעור 55 מתוך 57.
אתגר
קשהבנו חניון. Vehicle.R מגדיר את מחלקת S4 הווירטואלית Vehicle (משבצת plate), את הגנריקות size_rank(v) ו-rate(v) ואת השמות SIZES: small, medium, large עבור הדרגות 1, 2 ו-3.
- בקבצים
Motorbike.R,Car.Rו-Van.Rהמחלקות מוגדרות; הוסיפו את המתודות שלהן: לאופנוע דרגה 1 ותשלום של 1 לשעה, למכונית דרגה 2 ותשלום של 3 לשעה, ולוואן דרגה 3 ותשלום של 5 לשעה. - בקובץ
Garage.Rהשלימו את מחלקת הייחוסGarage. השדהfreeמכיל את מספר המקומות הפנויים בכל דרגה, ו-parkedהיא רשימה לפי מספר הרישוי.park(v)תופסת מקום פנוי בדרגה של הרכב, או, אם אין מקום פנוי, בדרגה הבאה הגדולה יותר, ומחזירהparked AB12 in medium,full for AB12אוAB12 is already parked.leave(plate, hours)מפנה את המקום ומחזירהAB12 paid 9(התעריף כפול מספר השעות, לפחות שעה אחת) אוno vehicle AB12.status()מחזירהfree: small 1, medium 0, large 2; parked: 1.
הקוד שסופק קורא את מספר המקומות הפנויים בפורמט small,medium,large, ואז פקודות park car AB12 (bike, car או van), leave AB12 3 או status, ומדפיס כל תשובה.
הקוד שלכם ייכתב בקבצים Vehicle.R, Motorbike.R, Car.R, Van.R ו-Garage.R. הקובץ main.R מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.
נסו בעצמכם
source("Vehicle.R")
source("Motorbike.R")
source("Car.R")
source("Van.R")
source("Garage.R")
# קוד הקלט/פלט שסופק: יש להשאיר אותו כפי שהוא
input <- suppressWarnings(readLines(file("stdin")))
garage <- Garage$new(free = as.numeric(strsplit(input[1], ",")[[1]]))
for (line in input[-1]) {
p <- strsplit(line, " ")[[1]]
reply <- switch(p[1],
park = garage$park(switch(p[2],
bike = new("Motorbike", plate = p[3]),
car = new("Car", plate = p[3]),
van = new("Van", plate = p[3]))),
leave = garage$leave(p[2], as.numeric(p[3])),
status = garage$status())
cat(reply, "\n", sep = "")
}
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות S3
עבודה עם קבציםרשימות עם מחלקהפונקציות בנאימתודות print ו-formatמאמתים ופונקציות עזרחזרה – טמפרטורותתרגלו בעצמכם: קומפיילר R אונליין