Menu
Coddy logo textTech

Wiederholung - Benutzerverwaltung

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

challenge icon

Aufgabe

Einfach

Lass uns ein Benutzerverwaltungssystem entwickeln: eine praktische Anwendung, die du in vielen Programmen aus der Praxis finden würdest! Du wirst zwei Klassen erstellen, die zusammenarbeiten: eine, die einzelne Benutzer repräsentiert, und eine weitere, die eine Sammlung dieser Benutzer effizient verwaltet.

Du wirst deinen Code auf drei Dateien aufteilen:

  • User.lua: Erstelle eine User-Klasse, die einen einzelnen Benutzer im System repräsentiert. Jeder Benutzer hat eine id und einen name. Füge eine :getInfo()-Methode hinzu, die einen String im Format "ID: {id}, Name: {name}" zurückgibt.
  • UserManager.lua: Erstelle eine Manager-Klasse, die eine Sammlung von Benutzern verwaltet. Überlege, wie du Benutzer für eine effiziente Suche speichern kannst: Die ID des Benutzers als Tabellenschlüssel zu verwenden, macht das Finden und Entfernen von Benutzern deutlich einfacher, als sie in einer Liste zu suchen. Dein Manager benötigt:
    • :addUser(user): fügt der Sammlung ein User-Objekt hinzu
    • :removeUser(id): entfernt einen Benutzer anhand seiner ID
    • :findUser(id): gibt den User mit der passenden ID zurück oder nil, wenn keiner gefunden wurde
    • :listUsers(): gibt die Informationen zu allen Benutzern aus, einen pro Zeile
  • main.lua: Führe alles zusammen! Erstelle einen UserManager, füge einige Benutzer auf Grundlage der erhaltenen Eingaben hinzu, führe Operationen aus und zeige die Ergebnisse an.

Du erhältst fünf Eingaben:

  1. ID des ersten Benutzers (eine Zahl)
  2. Name des ersten Benutzers
  3. ID des zweiten Benutzers (eine Zahl)
  4. Name des zweiten Benutzers
  5. ID eines Benutzers, nach dem gesucht werden soll (eine Zahl)

In deiner Hauptdatei:

  1. Erstelle einen UserManager und füge beide Benutzer hinzu
  2. Rufe :listUsers() auf, um alle Benutzer auszugeben
  3. Entferne den ersten Benutzer (unter Verwendung der ersten ID)
  4. Gib "After removal:" aus
  5. Rufe :listUsers() erneut auf
  6. Suche nach dem Benutzer mit der ID aus der fünften Eingabe; wenn er gefunden wird, gib seine Informationen aus, andernfalls gib "User not found" aus

Wenn die Eingaben beispielsweise 101, Alice, 102, Bob und 102 lauten, sollte die Ausgabe folgendermaßen aussehen:

ID: 101, Name: Alice
ID: 102, Name: Bob
After removal:
ID: 102, Name: Bob
ID: 102, Name: Bob

Wenn die Eingaben 201, Charlie, 202, Diana und 201 lauten, sollte die Ausgabe folgendermaßen aussehen:

ID: 201, Name: Charlie
ID: 202, Name: Diana
After removal:
ID: 202, Name: Diana
User not found

Beachte im zweiten Beispiel: Nachdem der Benutzer 201 (Charlie) entfernt wurde, gibt die Suche nach dieser ID "User not found" zurück, da er sich nicht mehr im System befindet!

Probier es selbst

-- main.lua: Alles zusammenbringen

local User = require('User')
local UserManager = require('UserManager')

-- Eingaben lesen
local id1 = tonumber(io.read())
local name1 = io.read()
local id2 = tonumber(io.read())
local name2 = io.read()
local searchId = tonumber(io.read())

-- TODO: Erstelle eine UserManager-Instanz

-- TODO: Erstelle zwei User-Objekte mit den Eingabedaten

-- TODO: Füge beide Benutzer zum Manager hinzu

-- TODO: Rufe listUsers() auf, um alle Benutzer auszugeben

-- TODO: Entferne den ersten Benutzer (mit id1)

-- TODO: Print "After removal:"

-- TODO: Rufe listUsers() erneut auf

-- TODO: Suche nach dem Benutzer mit searchId
-- If found, print their info; if not found, print "User not found"

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Lua-Compiler