Rückblick - Mitarbeiterrollen
Teil des Abschnitts Objektorientierte Programmierung der Lua-Journey von Coddy. Lektion 42 von 70.
Aufgabe
EinfachErstellen wir ein Bonusabrechnungssystem, das zeigt, wie verschiedene Mitarbeitertypen dieselbe Schnittstelle verwenden und dabei Boni unterschiedlich berechnen können!
Du erstellst eine kleine Mitarbeiterhierarchie über vier Dateien hinweg:
Employee.lua: Deine Basisklasse, die einen allgemeinen Mitarbeiter repräsentiert. Der Konstruktor:new(name, salary)soll sowohl den Namen des Mitarbeiters als auch sein Gehalt speichern. Füge eine:calculateBonus()-Methode hinzu, die 10 % des Gehalts zurückgibt (der Standardbonus für reguläre Mitarbeiter), sowie eine:getName()-Methode, um den Namen abzurufen.Manager.lua: Eine Kindklasse, die von Employee erbt. Manager arbeiten hart und werden dafür belohnt: Überschreibe:calculateBonus(), sodass 20 % ihres Gehalts statt der standardmäßigen 10 % zurückgegeben werden.Intern.lua: Eine weitere Kindklasse, die von Employee erbt. Praktikanten erhalten unabhängig von ihrem Gehalt einen festen Bonus von50: Überschreibe:calculateBonus(), sodass immer dieser Betrag zurückgegeben wird.main.lua: Führe alles zusammen! Lies drei Eingaben für die Namen der Mitarbeiter und drei Eingaben für ihre Gehälter ein. Erstelle einen Manager, einen Praktikanten und einen regulären Employee. Speichere alle drei in einer Tabelle, durchlaufe sie anschließend und gib den Namen jeder Person gefolgt von ihrem berechneten Bonus aus.
Du erhältst sechs Eingaben:
- Name des Managers
- Gehalt des Managers
- Name des Praktikanten
- Gehalt des Praktikanten
- Name des regulären Mitarbeiters
- Gehalt des regulären Mitarbeiters
Gib für jeden Mitarbeiter in deiner Sammlung (in der Reihenfolge: Manager, Praktikant, Employee) den Namen und den Bonus in diesem Format aus:
{name}: {bonus}Wenn die Eingaben beispielsweise Alice, 5000, Bob, 2000, Carol und 3000 lauten, sollte die Ausgabe wie folgt aussehen:
Alice: 1000
Bob: 50
Carol: 300Beachte, wie derselbe Aufruf :calculateBonus() je nach Mitarbeitertyp unterschiedliche Ergebnisse liefert: Das ist Polymorphismus in Aktion! Der Manager erhält 20 % von 5000, der Praktikant erhält pauschal 50 und der reguläre Employee erhält 10 % von 3000.
Probier es selbst
-- main.lua: Alles zusammenbringen
local Employee = require('Employee')
local Manager = require('Manager')
local Intern = require('Intern')
-- Eingaben lesen
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: Erstelle einen Manager, einen Intern und einen regulären Employee
-- TODO: Speichere alle drei in einer Tabelle (in der Reihenfolge: Manager, Intern, Employee)
-- TODO: Durchlaufe die Tabelle und gib den Namen und Bonus jeder Person aus
-- Format: {name}: {bonus}
Alle Lektionen in Objektorientierte Programmierung
1Das 'self'-Konzept
Tabellen mit FunktionenExplizites 'self'Die Doppelpunkt-SyntaxPunkt vs. DoppelpunktZusammenfassung – Beweglicher Punkt4Projekt: Digitale Bank
Projekt-SetupEinzahlungsmethode7Polymorphie & Überschreiben
Methoden überschreibenElternmethoden aufrufenDuck TypingGemeinsames InterfaceTyp prüfenRückblick - Mitarbeiterrollen10Projekt: Formen-Manager
Projekt-SetupRechteck-KlasseKreis-KlasseUmfang-MethodeFormen-SammlungGesamtflächeFormen filtern2Klassen-Prototyp-Muster
Das Prototyp-KonzeptVerknüpfung mit __indexDer :new()-KonstruktorAttribute initialisierenUnabhängige InstanzenZusammenfassung – Autofabrik5Operatorüberladung in OOP
Objekte addierenObjekte subtrahierenObjekte verkettenObjekte vergleichen (<, >)Rückblick – Wallet-Mathematik3Objektzustand und -verhalten
InstanzvariablenGetter-MethodenSetter-MethodenBerechnete EigenschaftenStrings formatierenGleichheitsprüfungenZusammenfassung – Studentennote6Grundlagen der Vererbung
Das Vererbungs-SetupMethoden vererbenDen Konstruktor erweiternChild-Methoden hinzufügenGemeinsam vs. EinzigartigZusammenfassung - Formen-Hierarchie9Komposition & Mixins
Has-A-BeziehungDelegationEinfache MixinsAnwendung mehrerer MixinsMixins vs. VererbungZusammenfassung – Roboter-Montage12Abschluss-Herausforderungen
Wiederholung - InventarsystemWiederholung - BenutzerverwaltungWiederholung - Score-TrackerFinaler OOP-CheckÜbe selbstständig: Online-Lua-Compiler