Menu
Coddy logo textTech

복습 - 직원 급여

Coddy R 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 16번째.

challenge icon

챌린지

중급

세 개의 파일에 걸쳐 급여 시스템을 구현하세요. 일반 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 컴파일러