Lịch sự kiện
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 56 trên 57.
Thử thách
KhóXây dựng bộ lập lịch sự kiện trong hai tệp.
Event.R: lớp S3eventvới các trườngtitle,day,start,end(giờ). Viếtnew_event();validate_event(), hàm này dừng và báoday must be from 1 to 31hoặchours must be within 0 to 24 and start before end; hàm hỗ trợevent(title, day, start, end), chuyển các đối số dạng văn bản thành số;format.event(), hàm này trả vềday 3 09-11 standup; vàoverlaps(a, b), trả vềTRUEkhi hai sự kiện diễn ra cùng ngày và mỗi sự kiện bắt đầu trước khi sự kiện kia kết thúc.Scheduler.R:make_scheduler()giữ các sự kiện ở phạm vi riêng tư và trả vềadd(e), hàm này phản hồiduplicatenếu có cùng tiêu đề trong cùng ngày,conflicts with reviewnếu sự kiện trùng với một sự kiện đã có, hoặcadded;agenda(), trả về danh sách các sự kiện đã định dạng, được sắp xếp theo ngày, giờ bắt đầu và tiêu đề; vàbusiest_day(), trả vềbusiest: day 3 (4 hours)dựa trên tổng số giờ (nếu hòa, chọn ngày sớm hơn), hoặcno events.
Dùng call. = FALSE. Code được cung cấp đọc các dòng theo định dạng title,day,start,end, in phản hồi cho từng dòng, sau đó in lịch trình và ngày bận nhất.
Đặt code của bạn trong Event.R và Scheduler.R. main.R chứa code đầu vào/đầu ra được cung cấp và bạn không thể chỉnh sửa tệp này.
Tự làm thử
source("Event.R")
source("Scheduler.R")
# Đoạn code đầu vào/đầu ra đã cung cấp: giữ nguyên
input <- suppressWarnings(readLines(file("stdin")))
s <- make_scheduler()
for (line in input) {
p <- strsplit(line, ",")[[1]]
reply <- tryCatch(s$add(event(p[1], p[2], p[3], p[4])), error = function(e) paste("invalid:", conditionMessage(e)))
cat(p[1], ": ", reply, "\n", sep = "")
}
cat("agenda:\n")
for (l in s$agenda()) cat(" ", l, "\n", sep = "")
cat(s$busiest_day(), "\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