Récapitulatif - Rôles des employés
Fait partie de la section Object Oriented Programming du Journey Lua de Coddy — leçon 42 sur 70.
Défi
FacileConstruisons un système de bonus de paie qui démontre comment différents types d'employés peuvent partager la même interface tout en calculant les bonus 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 retourne 10 % du salaire (le bonus par défaut pour les employés réguliers), et 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 — surchargez:calculateBonus()pour retourner 20 % de leur salaire au lieu des 10 % par défaut.Intern.lua: Une autre classe enfant héritant de Employee. Les stagiaires reçoivent un bonus fixe de50quel que soit leur salaire — surchargez:calculateBonus()pour toujours retourner ce montant.main.lua: Rassemblez tout ! Lisez trois entrées pour les noms des employés et trois entrées pour leurs salaires. Créez un Manager, un Intern, et un Employee régulier. Stockez les trois dans une table, puis bouclez dessus et affichez le nom de chaque personne suivi de son bonus calculé.
Vous recevrez six entrées :
- Le nom du Manager
- Le salaire du Manager
- Le nom de l'Intern
- Le salaire de l'Intern
- Le nom de l'employé régulier
- Le salaire de l'employé régulier
Pour chaque employé de votre collection (dans l'ordre : Manager, Intern, Employee), affichez son nom et son bonus 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: 300Remarquez comment le même appel à :calculateBonus() produit des résultats différents selon le type de chaque employé — c'est le polymorphisme à l'œuvre ! Le Manager obtient 20 % de 5000, l'Intern obtient un montant fixe de 50, et l'Employee régulier obtient 10 % de 3000.
Essayez vous-même
-- main.lua : Rassembler tous les éléments
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 régulier
-- TODO : Stocker les trois dans un tableau (dans l'ordre : Manager, Intern, Employee)
-- TODO : Parcourir le tableau et afficher le nom et le bonus de chaque personne
-- Format : {name}: {bonus}
Toutes les leçons de Object Oriented Programming
1Le concept de « self »
Tables avec fonctions« self » expliciteLa syntaxe avec deux-pointsPoint vs deux-pointsRécapitulatif - Point mobile4Projet : Banque numérique
Configuration du projetMéthode de dépôt7Polymorphisme et Redéfinition
Redéfinition de méthodesAppeler des méthodes parentesDuck TypingInterface communeVérification du typeRécapitulatif - Rôles des employés10Projet : Gestionnaire de formes
Configuration du projetClasse Rectangle2Modèle de prototype de classe
Le concept de prototypeLiaison avec __indexLe constructeur :new()Initialisation des attributsInstances indépendantesRécapitulatif - Usine de voitures5Surcharge d'opérateurs en POO
Additionner des objetsSoustraire des objetsConcaténer des objetsComparer des objets (<, >)Récapitulatif - Calculs de portefeuille8Encapsulation
Conventions de nommageClosures pour la confidentialitéAccès via les ClosuresTables en lecture seuleLogique de validationRécapitulatif - Coffre-fort sécurisé11Patrons de conception (Lite)
Fonctions FactoryTable SingletonPatron IteratorObserver (Écouteur)Récapitulatif - Logger Factory3État et comportement des objets
Variables d'instanceMéthodes GetterMéthodes SetterPropriétés calculéesFormatage de chaînesVérifications d'égalitéRécapitulatif - Note de l'étudiant6Bases de l'héritage
Mise en place de l'héritageHériter des méthodesÉtendre le constructeurAjouter des méthodes enfantsPartagé vs UniqueRécapitulatif - Hiérarchie des formes