Informações da Conta
Parte da seção Object Oriented Programming do Journey de Lua da Coddy — lição 23 de 70.
Desafio
FácilSeu 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âmetroidque identifica cada conta - Adicione um metamétodo
__tostringque retorna uma string formatada mostrando as informações da conta
- Modifique o construtor
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 = BALANCEOnde ID é o ID da conta e BALANCE é o saldo atual.
Você receberá quatro entradas:
- ID da primeira conta
- Valor do depósito da primeira conta
- ID da segunda conta
- 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 = 750Cada 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
1O Conceito 'Self'
Tabelas com Funções'self' ExplícitoA Sintaxe de Dois-pontosPonto vs Dois-pontosRecapitulação - Movendo o Ponto4Projeto: Banco Digital
Configuração do ProjetoMétodo de Depósito7Polimorfismo e Sobrescrita
Sobrescrita de MétodosChamando Métodos da Classe PaiDuck TypingInterface ComumVerificando o TipoRecapitulação - Papéis de Funcionários10Projeto: Gerenciador de Formas
Configuração do ProjetoClasse Retângulo2Padrão de Protótipo de Classe
O Conceito de ProtótipoVinculando com __indexO Construtor :new()Inicializando AtributosInstâncias IndependentesRecapitulação - Fábrica de Carros5Sobrecarga de Operadores em POO
Somando ObjetosSubtraindo ObjetosConcatenando ObjetosComparando Objetos (<, >)Recapitulação - Matemática de Carteira8Encapsulamento
Convenções de NomenclaturaClosures para PrivacidadeAcesso via ClosuresTabelas Somente LeituraLógica de ValidaçãoRecapitulação - Cofre Seguro11Padrões de Projeto (Lite)
Funções FactoryTabela SingletonPadrão IteratorObserver (Listener)Recapitulação - Logger Factory3Estado e Comportamento do Objeto
Variáveis de InstânciaMétodos GetterMétodos SetterPropriedades CalculadasFormatação de StringsVerificações de IgualdadeRecapitulação - Nota do Aluno6Fundamentos de Herança
Configurando a HerançaHerdando MétodosEstendendo o ConstrutorAdicionando Métodos FilhosCompartilhado vs ÚnicoRecapitulação - Hierarquia de Formas