Ôn tập, tính lương nhân viê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 16 trên 57.
Thử thách
Trung bìnhTạo chương trình tính lương bằng ba tệp. Hàm tổng quát pay() đã có trong Employee.R.
Employee.R:new_employee(name, salary, ..., class = character());pay.employee()là tiền lương chia cho 12;format.employee()trả vềAda: 5000.00vớipay()được định dạng thành hai chữ số thập phân; vàmanager_cost(staff), tổng tiền lương hằng tháng của mọi người kế thừa từmanager.Manager.R:new_manager(name, salary, bonus)với trường bổ sungbonus;pay.manager()cộng một phần mười hai tiền thưởng vào tiền lương của nhân viên bằngNextMethod();format.manager()thêm(manager)sau phần văn bản của nhân viên bằngNextMethod().Intern.R:new_intern(name, salary);pay.intern()bằng một nửa tiền lương của nhân viên, sử dụngNextMethod(). Thực tập sinh giữ nguyên định dạng của nhân viên.
Code được cung cấp đọc các dòng employee Bo 36000, manager Ada 60000 12000 hoặc intern Cy 24000, in định dạng của từng người, rồi in tổng tiền lương của các quản lý.
Code của bạn nằm trong Employee.R, Manager.R và Intern.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("Employee.R")
source("Manager.R")
source("Intern.R")
# Đoạn code đầu vào/đầu ra đã cho: giữ nguyên
input <- suppressWarnings(readLines(file("stdin")))
staff <- list()
for (line in input) {
p <- strsplit(line, " ")[[1]]
staff[[length(staff) + 1]] <- switch(p[1],
employee = new_employee(p[2], as.numeric(p[3])),
manager = new_manager(p[2], as.numeric(p[3]), as.numeric(p[4])),
intern = new_intern(p[2], as.numeric(p[3])))
}
for (x in staff) cat(format(x), "\n", sep = "")
cat(sprintf("managers cost %.2f per month", manager_cost(staff)), "\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ẩm3S3 Tính kế thừa
Vector lớpThứ tự tra cứu phương thứcMở rộng với NextMethodKiểm tra với inherits()Ôn tập, tính lương nhân viênTự luyện tập: Trình biên dịch R online