Menu
Coddy logo textTech

Powtórka — menedżer użytkowników

Część sekcji Programowanie obiektowe ścieżki Lua w Coddy. Lekcja 68 z 70.

challenge icon

Wyzwanie

Łatwy

Zbudujmy system zarządzania użytkownikami: praktyczną aplikację, którą można znaleźć w wielu programach używanych na co dzień! Utworzysz dwie współpracujące ze sobą klasy: jedną reprezentującą poszczególnych użytkowników, a drugą efektywnie zarządzającą ich kolekcją.

Rozmieścisz swój kod w trzech plikach:

  • User.lua: Utwórz klasę User reprezentującą pojedynczego użytkownika w systemie. Każdy użytkownik ma id i name. Dodaj metodę :getInfo(), która zwraca ciąg znaków w formacie "ID: {id}, Name: {name}".
  • UserManager.lua: Zbuduj klasę menedżera, która obsługuje kolekcję użytkowników. Zastanów się, jak przechowywać użytkowników, aby wyszukiwanie było efektywne: użycie ID użytkownika jako klucza w tablicy znacznie ułatwia znajdowanie i usuwanie użytkowników w porównaniu z przeszukiwaniem listy. Twój menedżer potrzebuje:
    • :addUser(user): dodaje obiekt User do kolekcji
    • :removeUser(id): usuwa użytkownika na podstawie jego ID
    • :findUser(id): zwraca obiekt User o pasującym ID albo nil, jeśli nie zostanie znaleziony
    • :listUsers(): wypisuje informacje o wszystkich użytkownikach, po jednym w wierszu
  • main.lua: Połącz wszystko w całość! Utwórz obiekt UserManager, dodaj użytkowników na podstawie otrzymanych danych wejściowych, wykonaj operacje i wyświetl wyniki.

Otrzymasz pięć danych wejściowych:

  1. ID pierwszego użytkownika (liczba)
  2. Imię pierwszego użytkownika
  3. ID drugiego użytkownika (liczba)
  4. Imię drugiego użytkownika
  5. ID użytkownika, którego należy wyszukać (liczba)

W głównym pliku:

  1. Utwórz obiekt UserManager i dodaj obu użytkowników
  2. Wywołaj :listUsers(), aby wypisać wszystkich użytkowników
  3. Usuń pierwszego użytkownika (używając pierwszego ID)
  4. Wypisz "After removal:"
  5. Ponownie wywołaj :listUsers()
  6. Wyszukaj użytkownika o ID z piątego wejścia; jeśli zostanie znaleziony, wypisz jego informacje, a jeśli nie, wypisz "User not found"

Na przykład, jeśli danymi wejściowymi są 101, Alice, 102, Bob i 102, wynikiem powinno być:

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

Jeśli danymi wejściowymi są 201, Charlie, 202, Diana i 201, wynikiem powinno być:

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

Zauważ, że w drugim przykładzie, po usunięciu użytkownika 201 (Charlie), wyszukanie tego ID zwraca "User not found", ponieważ użytkownika nie ma już w systemie!

Spróbuj swoich sił

-- main.lua: Połącz wszystko w całość

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

-- Odczytaj dane wejściowe
local id1 = tonumber(io.read())
local name1 = io.read()
local id2 = tonumber(io.read())
local name2 = io.read()
local searchId = tonumber(io.read())

-- TODO: Utwórz instancję UserManager

-- TODO: Utwórz dwa obiekty User na podstawie danych wejściowych

-- TODO: Dodaj obu użytkowników do menedżera

-- TODO: Wywołaj listUsers(), aby wyświetlić wszystkich użytkowników

-- TODO: Usuń pierwszego użytkownika (używając id1)

-- TODO: Wyświetl "After removal:"

-- TODO: Ponownie wywołaj listUsers()

-- TODO: Wyszukaj użytkownika o identyfikatorze searchId
-- Jeśli użytkownik zostanie znaleziony, wyświetl jego dane; w przeciwnym razie wyświetl "User not found"

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Lua online