Menu
Coddy logo textTech

Rückblick - Mitarbeiterrollen

Teil des Abschnitts Objektorientierte Programmierung der Lua-Journey von Coddy. Lektion 42 von 70.

challenge icon

Aufgabe

Einfach

Erstellen 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 von 50: Ü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:

  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

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: 300

Beachte, 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

Übe selbstständig: Online-Lua-Compiler