Riepilogo - Retribuzioni del personale
Fa parte della sezione Programmazione orientata agli oggetti del percorso R di Coddy. Lezione 16 di 57.
Sfida
MedioCrea 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()restituisceAda: 5000.00conpay()formattato con due decimali; emanager_cost(staff), la retribuzione mensile totale di tutti coloro che ereditano damanager.Manager.R:new_manager(name, salary, bonus)con il campo aggiuntivobonus;pay.manager()aggiunge un dodicesimo del bonus alla retribuzione del dipendente conNextMethod();format.manager()aggiunge(manager)dopo il testo del dipendente conNextMethod().Intern.R:new_intern(name, salary);pay.intern()è metà della retribuzione del dipendente, usandoNextMethod(). 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
1Nozioni di base su S3
Lavorare con i fileListe con una classeFunzioni costruttriciMetodi di stampa e formattazioneValidatori e funzioni di supportoRipasso - Temperature4Incapsulamento in R
Chiusure come oggettiAmbienti come oggettiFunzioni di accessoProteggere lo statoRiepilogo - Parcometro2Generics e metodi S3
Generics e UseMethodMetodi predefinitiMetodi per i generics di baseNozioni di base su NextMethodRiepilogo - Aree delle forme5Classi S4
Definire le classi S4Slot e accessoControlli di validitàMetodi showRiepilogo - Catalogo prodotti8Classi di riferimento
Definizione delle classi di riferimentoMetodi e aggiornamenti dei campiSemantica della copiaEreditarietà e callSuperRiepilogo - coda di attività11Progetto: Gestione della biblioteca
Libri e iscrittiPrestito dei libri3Ereditarietà S3
Vettori di classeOrdine di ricerca dei metodiEstendere con NextMethodVerificare con inherits()Riepilogo - Retribuzioni del personaleEsercitati da solo: Compilatore R online