Bãi đỗ xe
Thuộc phần Lập trình hướng đối tượng trong hành trình R của Coddy. Bài học 55 trên 57.
Thử thách
KhóXây dựng một gara đỗ xe. Vehicle.R khai báo lớp S4 ảo Vehicle (slot plate), các hàm tổng quát size_rank(v) và rate(v), cùng các tên SIZES: small, medium, large tương ứng với hạng 1, 2 và 3.
- Trong
Motorbike.R,Car.RvàVan.R, các lớp đã được khai báo. Hãy thêm phương thức cho chúng: xe máy có hạng 1 và trả 1 mỗi giờ, ô tô có hạng 2 và trả 3 mỗi giờ, xe van có hạng 3 và trả 5 mỗi giờ. - Trong
Garage.R, hãy hoàn thiện lớp tham chiếuGarage. Trườngfreelưu số chỗ trống theo từng hạng, cònparkedlà danh sách theo biển số.park(v)dùng một chỗ trống thuộc hạng của xe hoặc, nếu không còn chỗ trống, dùng chỗ ở hạng lớn hơn tiếp theo, rồi trả lờiparked AB12 in medium,full for AB12hoặcAB12 is already parked.leave(plate, hours)giải phóng chỗ và trả lờiAB12 paid 9(mức phí nhân với số giờ, tối thiểu 1 giờ) hoặcno vehicle AB12.status()trả lờifree: small 1, medium 0, large 2; parked: 1.
Code được cung cấp đọc số chỗ trống theo thứ tự small,medium,large, sau đó nhận các lệnh park car AB12 (bike, car hoặc van), leave AB12 3 hoặc status, rồi in ra từng câu trả lời.
Code của bạn nằm trong Vehicle.R, Motorbike.R, Car.R, Van.R và Garage.R. main.R chứa code đầu vào/đầu ra được cung cấp và không thể chỉnh sửa.
Tự làm thử
source("Vehicle.R")
source("Motorbike.R")
source("Car.R")
source("Van.R")
source("Garage.R")
# Đoạn code đầu vào/đầu ra có sẵn: giữ nguyên
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 = "")
}
Tất cả bài học trong Lập trình hướng đối tượng
1Kiến thức cơ bản về S3
Làm việc với tệpDanh sách với một lớpHàm khởi tạoPhương thức in ra và định dạngTrình xác thực và hàm hỗ trợÔn tập: nhiệt độ4Tính đóng gói trong R
Closure dưới dạng đối tượngMôi trường dưới dạng đối tượngHàm truy cậpBảo vệ trạng tháiÔn tập: đồng hồ tính phí đỗ xe2S3, hàm generic và phương thức
Hàm generic và UseMethodPhương thức mặc địnhPhương thức cho hàm generic cơ sởCơ bản về NextMethodÔn tập: diện tích hình5Các lớp S4
Định nghĩa lớp S4Slot và quyền truy cậpKiểm tra tính hợp lệPhương thức showÔn tập: Danh mục sản phẩmTự luyện tập: Trình biên dịch R online