Menu
Coddy logo textTech

Ripasso - Gestore utenti

Fa parte della sezione Programmazione orientata agli oggetti del percorso Lua di Coddy. Lezione 68 di 70.

challenge icon

Sfida

Facile

Costruiamo un sistema di gestione degli utenti: un'applicazione pratica che troveresti in molti programmi del mondo reale! Creerai due classi che collaborano: una rappresenta i singoli utenti e l'altra gestisce in modo efficiente una raccolta di utenti.

Organizzerai il codice in tre file:

  • User.lua: crea una classe User che rappresenta un singolo utente del sistema. Ogni utente ha un id e un name. Includi un metodo :getInfo() che restituisca una stringa nel formato "ID: {id}, Name: {name}".
  • UserManager.lua: crea una classe manager che gestisce una raccolta di utenti. Pensa a come memorizzare gli utenti per consentire ricerche efficienti: usare l'ID dell'utente come chiave della tabella rende trovare e rimuovere gli utenti molto più semplice che cercarli in una lista. Il manager deve avere:
    • :addUser(user): aggiunge un oggetto User alla raccolta
    • :removeUser(id): rimuove un utente usando il suo ID
    • :findUser(id): restituisce l'User con l'ID corrispondente, oppure nil se non viene trovato
    • :listUsers(): stampa le informazioni di tutti gli utenti, uno per riga
  • main.lua: metti insieme ogni elemento! Crea un UserManager, aggiungi alcuni utenti in base agli input ricevuti, esegui delle operazioni e mostra i risultati.

Riceverai cinque input:

  1. ID del primo utente (un numero)
  2. Nome del primo utente
  3. ID del secondo utente (un numero)
  4. Nome del secondo utente
  5. ID dell'utente da cercare (un numero)

Nel file principale:

  1. Crea un UserManager e aggiungi entrambi gli utenti
  2. Chiama :listUsers() per stampare tutti gli utenti
  3. Rimuovi il primo utente (usando il primo ID)
  4. Stampa "After removal:"
  5. Chiama di nuovo :listUsers()
  6. Cerca l'utente con l'ID del quinto input; se viene trovato, stampa le sue informazioni, altrimenti stampa "User not found"

Per esempio, se gli input sono 101, Alice, 102, Bob e 102, l'output dovrebbe essere:

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

Se gli input sono 201, Charlie, 202, Diana e 201, l'output dovrebbe essere:

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

Nota che nel secondo esempio, dopo aver rimosso l'utente 201 (Charlie), la ricerca di quell'ID restituisce "User not found" perché l'utente non è più nel sistema!

Provalo tu

-- main.lua: Metti tutto insieme

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

-- Leggi gli input
local id1 = tonumber(io.read())
local name1 = io.read()
local id2 = tonumber(io.read())
local name2 = io.read()
local searchId = tonumber(io.read())

-- TODO: Crea un'istanza di UserManager

-- TODO: Crea due oggetti User con i dati di input

-- TODO: Aggiungi entrambi gli utenti al manager

-- TODO: Chiama listUsers() per stampare tutti gli utenti

-- TODO: Rimuovi il primo utente (usando id1)

-- TODO: Stampa "After removal:"

-- TODO: Chiama di nuovo listUsers()

-- TODO: Cerca l'utente con searchId
-- Se lo trovi, stampa le sue informazioni; altrimenti, stampa "User not found"

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Lua online