Menu
Coddy logo textTech

Récapitulatif - Paie du personnel

Fait partie de la section Programmation orientée objet du Journey R de Coddy. Leçon 16 sur 57.

challenge icon

Défi

Moyen

Construisez une gestion de paie sur trois fichiers. La fonction générique pay() est fournie dans Employee.R.

  • Employee.R : new_employee(name, salary, ..., class = character()) ; pay.employee() correspond au salaire divisé par 12 ; format.employee() renvoie Ada: 5000.00 avec pay() formaté avec deux décimales ; et manager_cost(staff), la paie mensuelle totale de toutes les personnes qui héritent de manager.
  • Manager.R : new_manager(name, salary, bonus) avec le champ supplémentaire bonus ; pay.manager() ajoute un douzième de la prime à la paie de l’employé avec NextMethod() ; format.manager() ajoute (manager) après le texte de l’employé avec NextMethod().
  • Intern.R : new_intern(name, salary) ; pay.intern() correspond à la moitié de la paie de l’employé, en utilisant NextMethod(). Les stagiaires conservent le format de l’employé.

Le code fourni lit les lignes employee Bo 36000, manager Ada 60000 12000 ou intern Cy 24000, affiche le format de chaque personne, puis le total des managers.

Votre code doit être placé dans Employee.R, Manager.R et Intern.R. main.R contient le code d’entrée/sortie fourni et ne peut pas être modifié.

Essayez vous-même

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

# Code d'entrée/sortie fourni : le garder tel quel
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 = "")

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Compilateur R en ligne