Menu
Coddy logo textTech

Riepilogo - Retribuzioni del personale

Fa parte della sezione Programmazione orientata agli oggetti del percorso R di Coddy. Lezione 16 di 57.

challenge icon

Sfida

Medio

Crea un sistema di gestione delle buste paga in tre file. Il generico pay() è fornito in Employee.R.

  • Employee.R: new_employee(name, salary, ..., class = character()); pay.employee() è lo stipendio diviso per 12; format.employee() restituisce Ada: 5000.00 con pay() formattato con due decimali; e manager_cost(staff), la retribuzione mensile totale di tutti coloro che ereditano da manager.
  • Manager.R: new_manager(name, salary, bonus) con il campo aggiuntivo bonus; pay.manager() aggiunge un dodicesimo del bonus alla retribuzione del dipendente con NextMethod(); format.manager() aggiunge (manager) dopo il testo del dipendente con NextMethod().
  • Intern.R: new_intern(name, salary); pay.intern() è metà della retribuzione del dipendente, usando NextMethod(). Gli stagisti mantengono il formato del dipendente.

Il codice fornito legge righe come employee Bo 36000, manager Ada 60000 12000 o intern Cy 24000, stampa il formato di ogni persona e poi il totale dei manager.

Il tuo codice va inserito in Employee.R, Manager.R e Intern.R. main.R contiene il codice di input/output fornito e non può essere modificato.

Provalo tu

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

# Codice di input/output fornito: lascialo così com'è
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 = "")

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore R online