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.
Défi
FacileConstruisons 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 de50, 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 :
- Nom du Manager
- Salaire du Manager
- Nom de l’Intern
- Salaire de l’Intern
- Nom de l’employé ordinaire
- 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: 300Remarquez 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
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 RectangleClasse CercleMéthode PérimètreCollection de formesAire totaleFiltrer les formes2Modè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 formesEntraînez-vous par vous-même : Compilateur Lua en ligne