Rückblick – Mitarbeiterabrechnung
Teil des Abschnitts Objektorientierte Programmierung der R-Journey von Coddy. Lektion 16 von 57.
Aufgabe
MittelErstelle eine Gehaltsabrechnung über drei Dateien. Die generische pay()-Funktion ist in Employee.R vorgegeben.
Employee.R:new_employee(name, salary, ..., class = character());pay.employee()ist das durch 12 geteilte Gehalt;format.employee()gibtAda: 5000.00zurück, wobeipay()mit zwei Dezimalstellen formatiert wird; undmanager_cost(staff), die gesamten monatlichen Gehaltszahlungen aller Personen, die vonmanagererben.Manager.R:new_manager(name, salary, bonus)mit dem zusätzlichen Feldbonus;pay.manager()addiert mitNextMethod()ein Zwölftel des Bonus zum Gehalt des Mitarbeiters;format.manager()fügt mitNextMethod()nach dem Mitarbeitertext(manager)hinzu.Intern.R:new_intern(name, salary);pay.intern()ist die Hälfte des Mitarbeitergehalts und verwendetNextMethod(). Praktikanten behalten das Mitarbeiterformat bei.
Der bereitgestellte Code liest die Zeilen employee Bo 36000, manager Ada 60000 12000 oder intern Cy 24000, gibt das Format jeder Person und anschließend die Gesamtsumme der Manager aus.
Dein Code gehört in Employee.R, Manager.R und Intern.R. main.R enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.
Probier es selbst
source("Employee.R")
source("Manager.R")
source("Intern.R")
# Gelieferter Input/Output-Code: belasse ihn wie er ist
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 = "")
Alle Lektionen in Objektorientierte Programmierung
1S3-Grundlagen
Arbeiten mit DateienListen mit einer KlasseKonstruktorfunktionenPrint- und Format-MethodenValidatoren und HilfsfunktionenRückblick – Temperaturen4Kapselung in R
Closures als ObjekteUmgebungen als ObjekteZugriffsfunktionenZustand schützenRückblick – Parkuhr2S3-Generics und Methoden
Generics und UseMethodStandardmethodenMethoden für Basis-GenericsGrundlagen von NextMethodWiederholung – Flächeninhalte von Formen5S4-Klassen
S4-Klassen definierenSlots und ZugriffGültigkeitsprüfungenShow-MethodenRückblick – Produktkatalog8Referenzklassen
Referenzklassen definierenMethoden und FeldänderungenKopiersemantikVererbung und callSuperZusammenfassung – Aufgabenwarteschlange11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihen3S3-Vererbung
KlassenvektorenReihenfolge der MethodensucheErweitern mit NextMethodPrüfen mit inherits()Rückblick – MitarbeiterabrechnungÜbe selbstständig: Online-R-Compiler