Menu
Coddy logo textTech

Informações da Conta

Parte da seção Object Oriented Programming do Journey de Lua da Coddy — lição 23 de 70.

challenge icon

Desafio

Fácil

Seu Banco Digital está se tornando mais profissional! Agora vamos fazer com que suas contas se exibam de forma elegante quando impressas. Ao adicionar um metamétodo __tostring, você pode controlar exatamente como uma conta aparece — mostrando tanto o ID da conta quanto o saldo atual em um formato limpo e legível.

Você continuará construindo sobre seus arquivos existentes:

  • Account.lua: Estenda sua classe Account com dois novos recursos:
    • Modifique o construtor :new() para aceitar um parâmetro id que identifica cada conta
    • Adicione um metamétodo __tostring que retorna uma string formatada mostrando as informações da conta
    Mantenha toda a sua funcionalidade existente (métodos deposit, withdraw e getBalance).
  • main.lua: Crie contas com IDs e demonstre como elas se exibem quando impressas.

O método __tostring deve retornar uma string neste formato exato:

Account [ID]: Balance = BALANCE

Onde ID é o ID da conta e BALANCE é o saldo atual.

Você receberá quatro entradas:

  1. ID da primeira conta
  2. Valor do depósito da primeira conta
  3. ID da segunda conta
  4. Valor do depósito da segunda conta

No seu arquivo principal, crie duas contas com os IDs fornecidos, deposite os respectivos valores em cada uma e, em seguida, imprima cada conta diretamente usando print(). O metamétodo __tostring será chamado automaticamente quando você imprimir o objeto da conta.

Por exemplo, se as entradas forem 1001, 500, 1002 e 750, a saída deve ser:

Account [1001]: Balance = 500
Account [1002]: Balance = 750

Cada conta agora tem uma identidade única e pode se descrever claramente — uma experiência bancária muito mais profissional!

Experimente você mesmo

-- Requer o módulo Account
local Account = require('Account')

-- Lê as quatro entradas
local id1 = io.read()
local deposit1 = tonumber(io.read())
local id2 = io.read()
local deposit2 = tonumber(io.read())

-- Cria duas contas com IDs
local account1 = Account:new(id1)
local account2 = Account:new(id2)

-- Deposita os respectivos valores
account1:deposit(deposit1)
account2:deposit(deposit2)

-- Imprime cada conta (usa __tostring)
print(account1)
print(account2)

Todas as lições de Object Oriented Programming