Ôn tập: hàng đợi tác vụ
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 41 trên 57.
Thử thách
Trung bìnhXây dựng hàng đợi tác vụ từ hai lớp tham chiếu. Cả hai định nghĩa đều được bao bọc trong suppressMessages().
TasktrongTask.R: các trườngtitle,priority(kiểu số) vàdone(kiểu logic);initializeđặtdonethànhFALSEkhi giá trị này không được cung cấp;label()trả về[x] fix (3)cho tác vụ đã hoàn thành hoặc[ ] fix (3).TaskQueuetrongTaskQueue.R: trườngtasks(mộtlist);add(title, priority)thêm mộtTaskmới vào cuối danh sách và trả vềinvisible(.self);next_task()trả về tiêu đề của tác vụ đang mở có mức ưu tiên cao nhất (nếu bằng nhau thì chọn tác vụ được thêm sớm nhất), hoặcnothing;complete(title)đánh dấu tác vụ đang mở đầu tiên có tiêu đề đó là đã hoàn thành và trả vềTRUE, hoặcFALSE;report()trả về nhãn của từng tác vụ theo thứ tự được thêm vào, sau đó làopen: 2.
Code được cung cấp đọc add fix 3, next và done fix, sau đó thêm hai tác vụ trong một lời gọi nối chuỗi rồi in báo cáo.
Code của bạn nằm trong Task.R và TaskQueue.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("Task.R")
source("TaskQueue.R")
# Đoạn code đầu vào/đầu ra đã được cung cấp: giữ nguyên đoạn này
input <- suppressWarnings(readLines(file("stdin")))
q <- TaskQueue$new()
for (line in input) {
p <- strsplit(line, " ")[[1]]
if (p[1] == "add") {
q$add(p[2], as.numeric(p[3]))
} else if (p[1] == "next") {
cat("next: ", q$next_task(), "\n", sep = "")
} else if (p[1] == "done") {
cat(if (q$complete(p[2])) "completed " else "no open task ", p[2], "\n", sep = "")
}
}
q$add("late", 1)$add("later", 1)
writeLines(q$report())
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ẩm8Lớp tham chiếu
Định nghĩa lớp tham chiếuPhương thức và cập nhật trườngNgữ nghĩa sao chépKế thừa và callSuperÔn tập: hàng đợi tác vụTự luyện tập: Trình biên dịch R online