Menu
Coddy logo textTech

Riepilogo - Ruoli dei dipendenti

Fa parte della sezione Programmazione orientata agli oggetti del percorso Lua di Coddy. Lezione 42 di 70.

challenge icon

Sfida

Facile

Costruiamo un sistema di bonus per le buste paga che mostri come diversi tipi di dipendenti possano condividere la stessa interfaccia pur calcolando i bonus in modo diverso!

Creerai una piccola gerarchia di dipendenti distribuita in quattro file:

  • Employee.lua: la tua classe base che rappresenta un dipendente generico. Il costruttore :new(name, salary) deve memorizzare sia il nome del dipendente sia il suo stipendio. Includi un metodo :calculateBonus() che restituisce il 10% dello stipendio (il bonus predefinito per i dipendenti regolari) e un metodo :getName() per recuperare il nome.
  • Manager.lua: una classe figlia che eredita da Employee. I manager lavorano sodo e vengono premiati: sovrascrivi :calculateBonus() affinché restituisca il 20% del loro stipendio invece del 10% predefinito.
  • Intern.lua: un'altra classe figlia che eredita da Employee. Gli stagisti ricevono un bonus fisso di 50 indipendentemente dal loro stipendio: sovrascrivi :calculateBonus() affinché restituisca sempre questo importo.
  • main.lua: metti insieme il tutto! Leggi tre input per i nomi dei dipendenti e tre input per i loro stipendi. Crea un Manager, un Intern e un Employee regolare. Memorizzali tutti e tre in una tabella, poi scorri la tabella e stampa il nome di ciascuno seguito dal bonus calcolato.

Riceverai sei input:

  1. Nome del Manager
  2. Stipendio del Manager
  3. Nome dell'Intern
  4. Stipendio dell'Intern
  5. Nome del dipendente regolare
  6. Stipendio del dipendente regolare

Per ciascun dipendente della tua raccolta (nell'ordine: Manager, Intern, Employee), stampa il nome e il bonus in questo formato:

{name}: {bonus}

Per esempio, se gli input sono Alice, 5000, Bob, 2000, Carol e 3000, l'output dovrebbe essere:

Alice: 1000
Bob: 50
Carol: 300

Nota come la stessa chiamata a :calculateBonus() produca risultati diversi in base al tipo di ciascun dipendente: questa è la polimorfia in azione! Il Manager riceve il 20% di 5000, l'Intern riceve un importo fisso di 50 e l'Employee regolare riceve il 10% di 3000.

Provalo tu

-- main.lua: Metti tutto insieme

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

-- Leggi gli input
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: Crea un Manager, un Intern e un Employee normale

-- TODO: Memorizza tutti e tre in una tabella (nell'ordine: Manager, Intern, Employee)

-- TODO: Scorri la tabella e stampa il nome e il bonus di ciascuna persona
-- Formato: {name}: {bonus}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Lua online