Menu
Coddy logo textTech

Récapitulatif - Rôles des employés

Fait partie de la section Programmation orientée objet du Journey Lua de Coddy. Leçon 42 sur 70.

challenge icon

Défi

Facile

Construisons un système de primes salariales qui montre comment différents types d’employés peuvent partager la même interface tout en calculant leurs primes différemment !

Vous allez créer une petite hiérarchie d’employés répartie sur quatre fichiers :

  • Employee.lua : votre classe de base représentant un employé générique. Le constructeur :new(name, salary) doit stocker à la fois le nom de l’employé et son salaire. Incluez une méthode :calculateBonus() qui renvoie 10 % du salaire (la prime par défaut pour les employés ordinaires), ainsi qu’une méthode :getName() pour récupérer le nom.
  • Manager.lua : une classe enfant qui hérite de Employee. Les managers travaillent dur et sont récompensés : redéfinissez :calculateBonus() pour renvoyer 20 % de leur salaire au lieu des 10 % par défaut.
  • Intern.lua : une autre classe enfant qui hérite de Employee. Les stagiaires reçoivent une prime fixe de 50, quel que soit leur salaire : redéfinissez :calculateBonus() pour toujours renvoyer ce montant.
  • main.lua : rassemblez tout ! Lisez trois entrées correspondant aux noms des employés et trois entrées correspondant à leurs salaires. Créez un Manager, un Intern et un Employee ordinaire. Stockez-les tous les trois dans une table, puis parcourez-la afin d’afficher le nom de chaque personne suivi de sa prime calculée.

Vous recevrez six entrées :

  1. Nom du Manager
  2. Salaire du Manager
  3. Nom de l’Intern
  4. Salaire de l’Intern
  5. Nom de l’employé ordinaire
  6. Salaire de l’employé ordinaire

Pour chaque employé de votre collection (dans l’ordre : Manager, Intern, Employee), affichez son nom et sa prime dans ce format :

{name}: {bonus}

Par exemple, si les entrées sont Alice, 5000, Bob, 2000, Carol et 3000, la sortie devrait être :

Alice: 1000
Bob: 50
Carol: 300

Remarquez que le même appel :calculateBonus() produit des résultats différents selon le type de chaque employé : c’est le polymorphisme en action ! Le Manager reçoit 20 % de 5000, l’Intern reçoit un montant fixe de 50 et l’Employee ordinaire reçoit 10 % de 3000.

Essayez vous-même

-- main.lua : Rassembler le tout

local Employee = require('Employee')
local Manager = require('Manager')
local Intern = require('Intern')

-- Lire les entrées
local managerName = io.read()
local managerSalary = tonumber(io.read())
local internName = io.read()
local internSalary = tonumber(io.read())
local employeeName = io.read()
local employeeSalary = tonumber(io.read())

-- TODO: Créer un Manager, un Intern et un Employee ordinaire

-- TODO: Stocker les trois dans une table (dans l'ordre : Manager, Intern, Employee)

-- TODO: Parcourir la table et afficher le nom et le bonus de chaque personne
-- Format : {name}: {bonus}

Toutes les leçons de Programmation orientée objet

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