복습 - 직원 급여
Coddy R 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 16번째.
챌린지
중급세 개의 파일에 걸쳐 급여 시스템을 구현하세요. 일반 pay()는 Employee.R에 제공되어 있습니다.
Employee.R:new_employee(name, salary, ..., class = character());pay.employee()는 급여를 12로 나눈 값입니다.format.employee()는pay()를 소수점 둘째 자리까지 표시하여Ada: 5000.00을 반환합니다. 또한manager를 상속하는 모든 사람의 월급 합계인manager_cost(staff)를 구현합니다.Manager.R: 추가 필드bonus를 사용하는new_manager(name, salary, bonus);pay.manager()는NextMethod()를 사용하여 직원 급여에 보너스의 12분의 1을 더합니다.format.manager()는NextMethod()를 사용하여 직원 텍스트 뒤에(manager)를 추가합니다.Intern.R:new_intern(name, salary);pay.intern()는NextMethod()를 사용하여 직원 급여의 절반을 계산합니다. 인턴은 직원 형식을 그대로 사용합니다.
제공된 코드는 employee Bo 36000, manager Ada 60000 12000 또는 intern Cy 24000 형식의 줄을 읽고, 각 사람의 형식을 출력한 다음 관리자의 총 급여를 출력합니다.
코드는 Employee.R, Manager.R 및 Intern.R에 작성합니다. main.R에는 제공된 입출력 코드가 있으며 수정할 수 없습니다.
직접 해보기
source("Employee.R")
source("Manager.R")
source("Intern.R")
# 제공된 입력/출력 코드: 있는 그대로 유지하세요
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 = "")
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 R 컴파일러