Menu
CoddyTech

Ô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.

challenge icon

Thử thách

Trung bình

Tạ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.00 với pay() đượ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ổ sung bonus; 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ằng NextMethod(); format.manager() thêm (manager) sau phần văn bản của nhân viên bằng NextMethod().
  • 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ụng NextMethod(). 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

Tự luyện tập: Trình biên dịch R online