Informações da Conta
Parte da seção Programação Orientada a Objetos do Journey de Lua da Coddy. Lição 23 de 70.
Desafio
FácilSeu Banco Digital está ficando mais profissional! Agora vamos fazer com que suas contas sejam exibidas de forma agradável quando impressas. Ao adicionar um método metamórfico __tostring, você pode controlar exatamente como uma conta aparece: mostrando tanto um ID da conta quanto o saldo atual em um formato limpo e legível.
Você continuará desenvolvendo com base nos seus arquivos existentes:
Account.lua: Estenda sua classe Account com dois novos recursos:- Modifique o construtor
:new()para aceitar um parâmetroidque identifique cada conta - Adicione um método metamórfico
__tostringque retorne uma string formatada mostrando as informações da conta
- Modifique o construtor
main.lua: Crie contas com IDs e demonstre como elas são exibidas quando impressas.
O método __tostring deve retornar uma string exatamente neste formato:
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
Em 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 método metamórfico __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 deverá ser:
Account [1001]: Balance = 500
Account [1002]: Balance = 750Agora cada conta tem uma identidade única e pode descrever a si mesma 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 Programação Orientada a Objetos
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ânguloClasse CírculoMétodo PerímetroColeção de FormasÁrea TotalFiltrar Formas2Padrã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 FormasPratique por conta própria: Compilador de Lua online