مرآب السيارات
جزء من قسم البرمجة كائنية التوجه في رحلة 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.
يقرأ الكود الم provided الأماكن الشاغرة بالترتيب 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 على كود الإدخال/الإخراج الم provided ولا يمكن تعديله.
جرّب بنفسك
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
التعامل مع الملفاتالقوائم باستخدام فئةدوال المُنشئأساليب الطباعة والتنسيقأدوات التحقق والمساعدةمراجعة - درجات الحرارة2S3 الدوال العامة والطرق
الدوال العامة وUseMethodالطرق الافتراضيةطرق الدوال العامة الأساسيةأساسيات NextMethodمراجعة - مساحات الأشكالتدرّب بنفسك: مترجم R عبر الإنترنت