Menu
Coddy logo textTech

Revisão - Folha de pagamento da equipe

Parte da seção Programação Orientada a Objetos do Journey de R da Coddy. Lição 16 de 57.

challenge icon

Desafio

Médio

Crie uma folha de pagamento usando três arquivos. A função genérica pay() é fornecida em Employee.R.

  • Employee.R: new_employee(name, salary, ..., class = character()); pay.employee() é o salário dividido por 12; format.employee() retorna Ada: 5000.00 com pay() formatado para duas casas decimais; e manager_cost(staff), o pagamento mensal total de todas as pessoas que herdam de manager.
  • Manager.R: new_manager(name, salary, bonus) com o campo extra bonus; pay.manager() adiciona um doze avos do bônus ao pagamento do funcionário com NextMethod(); format.manager() adiciona (manager) após o texto do funcionário com NextMethod().
  • Intern.R: new_intern(name, salary); pay.intern() corresponde à metade do pagamento do funcionário, usando NextMethod(). Estagiários mantêm o formato do funcionário.

O código fornecido lê as linhas employee Bo 36000, manager Ada 60000 12000 ou intern Cy 24000, imprime o formato de cada pessoa e, em seguida, o total dos gerentes.

Seu código deve ficar em Employee.R, Manager.R e Intern.R. main.R contém o código fornecido de entrada/saída e não pode ser editado.

Experimente você mesmo

source("Employee.R")
source("Manager.R")
source("Intern.R")

# Código de entrada/saída fornecido: mantenha-o como está
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 = "")

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de R online