Menu
Coddy logo textTech

Rückblick – Mitarbeiterabrechnung

Teil des Abschnitts Objektorientierte Programmierung der R-Journey von Coddy. Lektion 16 von 57.

challenge icon

Aufgabe

Mittel

Erstelle 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() gibt Ada: 5000.00 zurück, wobei pay() mit zwei Dezimalstellen formatiert wird; und manager_cost(staff), die gesamten monatlichen Gehaltszahlungen aller Personen, die von manager erben.
  • Manager.R: new_manager(name, salary, bonus) mit dem zusätzlichen Feld bonus; pay.manager() addiert mit NextMethod() ein Zwölftel des Bonus zum Gehalt des Mitarbeiters; format.manager() fügt mit NextMethod() nach dem Mitarbeitertext (manager) hinzu.
  • Intern.R: new_intern(name, salary); pay.intern() ist die Hälfte des Mitarbeitergehalts und verwendet NextMethod(). 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

Übe selbstständig: Online-R-Compiler