Repaso - Nómina del personal
Parte de la sección Programación orientada a objetos del Journey de R de Coddy. Lección 16 de 57.
Desafío
IntermedioConstruye una nómina en tres archivos. La función genérica pay() se proporciona en Employee.R.
Employee.R:new_employee(name, salary, ..., class = character());pay.employee()es el salario dividido por 12;format.employee()devuelveAda: 5000.00conpay()formateado con dos decimales; ymanager_cost(staff), el pago mensual total de todas las personas que heredan demanager.Manager.R:new_manager(name, salary, bonus)con el campo adicionalbonus;pay.manager()suma una doceava parte del bono al pago del empleado medianteNextMethod();format.manager()añade(manager)después del texto del empleado medianteNextMethod().Intern.R:new_intern(name, salary);pay.intern()es la mitad del pago del empleado, usandoNextMethod(). Los becarios conservan el formato del empleado.
El código proporcionado lee las líneas employee Bo 36000, manager Ada 60000 12000 o intern Cy 24000, muestra el formato de cada persona y después el total de los gerentes.
Tu código va en Employee.R, Manager.R e Intern.R. main.R contiene el código proporcionado de entrada/salida y no se puede editar.
Pruébalo tú mismo
source("Employee.R")
source("Manager.R")
source("Intern.R")
# Código de entrada/salida suministrado: déjalo tal 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 las lecciones de Programación orientada a objetos
1Fundamentos de S3
Trabajar con archivosListas con una claseFunciones constructorasMétodos de impresión y formatoValidadores y auxiliaresRepaso: temperaturas4Encapsulación en R
Cierres como objetosEntornos como objetosFunciones de accesoProtección del estadoRepaso: parquímetro2S3 Genéricos y métodos
Genéricos y UseMethodMétodos predeterminadosMétodos para genéricos baseFundamentos de NextMethodRepaso: áreas de figuras5Clases S4
Definición de clases S4Slots y accesoComprobaciones de validezMétodos showRepaso - Catálogo de productos8Clases de referencia
Definición de clases de referenciaMétodos y actualizaciones de camposSemántica de copiaHerencia y callSuperRepaso: cola de tareas11Proyecto: Gestión de biblioteca
Libros y miembrosPréstamo de libros3Herencia en S3
Vectores de claseOrden de búsqueda de métodosExtensión con NextMethodComprobación con inherits()Repaso - Nómina del personalPractica por tu cuenta: Compilador de R online