Powtórzenie — lista płac pracowników
Część sekcji Programowanie obiektowe ścieżki R w Coddy. Lekcja 16 z 57.
Wyzwanie
ŚredniZbuduj system płacowy w trzech plikach. Ogólna funkcja pay() jest podana w Employee.R.
Employee.R:new_employee(name, salary, ..., class = character());pay.employee()zwraca pensję podzieloną przez 12;format.employee()zwracaAda: 5000.00, gdzie wynikpay()jest sformatowany do dwóch miejsc po przecinku; orazmanager_cost(staff)zwraca łączną miesięczną pensję wszystkich obiektów dziedziczących pomanager.Manager.R:new_manager(name, salary, bonus)z dodatkowym polembonus;pay.manager()dodaje jedną dwunastą premii do pensji pracownika za pomocąNextMethod();format.manager()dodaje(manager)po tekście pracownika za pomocąNextMethod().Intern.R:new_intern(name, salary);pay.intern()zwraca połowę pensji pracownika, używającNextMethod(). Stażyści zachowują format pracownika.
Dostarczony kod odczytuje wiersze employee Bo 36000, manager Ada 60000 12000 lub intern Cy 24000, wyświetla format każdej osoby, a następnie łączną pensję kierowników.
Twój kod umieść w plikach Employee.R, Manager.R i Intern.R. main.R zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.
Spróbuj swoich sił
source("Employee.R")
source("Manager.R")
source("Intern.R")
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
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 = "")
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy S3
Praca z plikamiListy z klasąFunkcje konstruktoraMetody print i formatWalidatory i funkcje pomocniczePowtórzenie — temperatury4Enkapsulacja w R
Domknięcia jako obiektyŚrodowiska jako obiektyFunkcje dostępoweOchrona stanuPodsumowanie – parkometr2Generics i metody S3
Generics i UseMethodMetody domyślneMetody dla podstawowych genericsPodstawy NextMethodPowtórzenie — pola figur5Klasy S4
Definiowanie klas S4Sloty i dostępSprawdzanie poprawnościMetody wyświetlaniaPodsumowanie – katalog produktów8Klasy referencyjne
Definiowanie klas referencyjnychMetody i aktualizacja pólSemantyka kopiowaniaDziedziczenie i callSuperPodsumowanie – kolejka zadań11Projekt: Zarządzanie biblioteką
Książki i czytelnicyWypożyczanie książek3Dziedziczenie S3
Wektory klasKolejność wyszukiwania metodRozszerzanie za pomocą NextMethodSprawdzanie za pomocą inherits()Powtórzenie — lista płac pracownikówPoćwicz samodzielnie: Kompilator R online