Menu
Coddy logo textTech

Revisão - Gerenciador de Usuários

Parte da seção Programação Orientada a Objetos do Journey de Lua da Coddy. Lição 68 de 70.

challenge icon

Desafio

Fácil

Vamos criar um sistema de gerenciamento de usuários: uma aplicação prática que você encontraria em muitos programas do mundo real! Você criará duas classes que trabalham juntas: uma representando usuários individuais e outra que gerencia uma coleção deles de forma eficiente.

Você organizará seu código em três arquivos:

  • User.lua: crie uma classe User que represente um único usuário no sistema. Cada usuário tem um id e um name. Inclua um método :getInfo() que retorne uma string no formato "ID: {id}, Name: {name}".
  • UserManager.lua: crie uma classe gerenciadora que lide com uma coleção de usuários. Pense em como armazenar os usuários para uma busca eficiente: usar o ID do usuário como chave de uma tabela torna a localização e a remoção de usuários muito mais simples do que procurar em uma lista. Seu gerenciador precisa de:
    • :addUser(user): adiciona um objeto User à coleção
    • :removeUser(id): remove um usuário pelo ID
    • :findUser(id): retorna o User com o ID correspondente ou nil se não for encontrado
    • :listUsers(): imprime as informações de todos os usuários, uma por linha
  • main.lua: reúna tudo! Crie um UserManager, adicione alguns usuários com base nas entradas recebidas, execute operações e exiba os resultados.

Você receberá cinco entradas:

  1. ID do primeiro usuário (um número)
  2. Nome do primeiro usuário
  3. ID do segundo usuário (um número)
  4. Nome do segundo usuário
  5. ID de um usuário a ser pesquisado (um número)

No seu arquivo principal:

  1. Crie um UserManager e adicione os dois usuários
  2. Chame :listUsers() para imprimir todos os usuários
  3. Remova o primeiro usuário (usando o primeiro ID)
  4. Imprima "After removal:"
  5. Chame :listUsers() novamente
  6. Pesquise o usuário com o quinto ID de entrada; se for encontrado, imprima suas informações; se não for encontrado, imprima "User not found"

Por exemplo, se as entradas forem 101, Alice, 102, Bob e 102, a saída deverá ser:

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

Se as entradas forem 201, Charlie, 202, Diana e 201, a saída deverá ser:

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

Observe que, no segundo exemplo, após remover o usuário 201 (Charlie), pesquisar por esse ID retorna "Usuário não encontrado", pois ele não está mais no sistema!

Experimente você mesmo

-- main.lua: Junte tudo

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

-- Leia as entradas
local id1 = tonumber(io.read())
local name1 = io.read()
local id2 = tonumber(io.read())
local name2 = io.read()
local searchId = tonumber(io.read())

-- TODO: Crie uma instância de UserManager

-- TODO: Crie dois objetos User com os dados de entrada

-- TODO: Adicione ambos os usuários ao manager

-- TODO: Chame listUsers() para imprimir todos os usuários

-- TODO: Remova o primeiro usuário (usando id1)

-- TODO: Print "After removal:"

-- TODO: Chame listUsers() novamente

-- TODO: Busque o usuário com searchId
-- If found, print their info; if not found, print "User not found"

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de Lua online