Menu
Coddy logo textTech

Rückblick - Mitarbeiterrollen

Teil des Abschnitts Object Oriented Programming der Lua-Journey von Coddy — Lektion 42 von 70.

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein Lohnabrechnungs-Bonussystem erstellen, das zeigt, wie verschiedene Mitarbeitertypen dieselbe Schnittstelle nutzen können, während sie Boni unterschiedlich berechnen!

Sie werden eine kleine Mitarbeiterhierarchie über vier Dateien hinweg erstellen:

  • Employee.lua: Ihre Basisklasse, die einen allgemeinen Mitarbeiter repräsentiert. Der Konstruktor :new(name, salary) sollte sowohl den Namen des Mitarbeiters als auch sein Gehalt speichern. Fügen Sie eine Methode :calculateBonus() hinzu, die 10 % des Gehalts zurückgibt (der Standardbonus für reguläre Mitarbeiter), sowie eine Methode :getName(), um den Namen abzurufen.
  • Manager.lua: Eine Kindklasse, die von Employee erbt. Manager arbeiten hart und werden belohnt – überschreiben Sie :calculateBonus(), um 20 % ihres Gehalts anstelle der standardmäßigen 10 % zurückzugeben.
  • Intern.lua: Eine weitere Kindklasse, die von Employee erbt. Praktikanten erhalten einen festen Bonus von 50, unabhängig von ihrem Gehalt – überschreiben Sie :calculateBonus(), um immer diesen Betrag zurückzugeben.
  • main.lua: Bringen Sie alles zusammen! Lesen Sie drei Eingaben für Mitarbeiternamen und drei Eingaben für deren Gehälter ein. Erstellen Sie einen Manager, einen Intern und einen regulären Employee. Speichern Sie alle drei in einer Tabelle, durchlaufen Sie diese dann in einer Schleife und geben Sie den Namen jeder Person gefolgt von ihrem berechneten Bonus aus.

Sie erhalten sechs Eingaben:

  1. Name des Managers
  2. Gehalt des Managers
  3. Name des Praktikanten
  4. Gehalt des Praktikanten
  5. Name des regulären Mitarbeiters
  6. Gehalt des regulären Mitarbeiters

Geben Sie für jeden Mitarbeiter in Ihrer Sammlung (in der Reihenfolge: Manager, Intern, Employee) den Namen und den Bonus in diesem Format aus:

{name}: {bonus}

Wenn die Eingaben beispielsweise Alice, 5000, Bob, 2000, Carol und 3000 sind, sollte die Ausgabe wie folgt aussehen:

Alice: 1000
Bob: 50
Carol: 300

Beachten Sie, wie derselbe Aufruf von :calculateBonus() je nach Typ des Mitarbeiters unterschiedliche Ergebnisse liefert – das ist Polymorphie in Aktion! Der Manager erhält 20 % von 5000, der Praktikant erhält pauschal 50 und der reguläre Mitarbeiter erhält 10 % von 3000.

Probier es selbst

-- main.lua: Alles zusammenführen

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 den Bonus jeder Person aus
-- Format: {name}: {bonus}

Alle Lektionen in Object Oriented Programming