Obter Saldo
Parte da seção Object Oriented Programming do Journey de Lua da Coddy — lição 22 de 70.
Desafio
FácilSeu Banco Digital está realmente tomando forma! As contas podem receber depósitos e lidar com saques com a devida verificação de fundos. Agora, vamos adicionar um método getter para recuperar o saldo e, em seguida, colocar tudo junto em um cenário bancário realista.
Você continuará construindo sobre seus arquivos existentes:
Account.lua: Adicione um método:getBalance()que retorna o saldo atual. Isso segue o padrão getter que você aprendeu anteriormente — fornecendo acesso controlado aos dados internos em vez de acessar o campo diretamente. Mantenha toda a sua funcionalidade existente (construtor, métodos de depósito e saque).main.lua: Crie uma conta e execute uma sequência de operações bancárias para demonstrar como depósitos, saques e verificações de saldo funcionam juntos em um cenário real.
Você receberá cinco entradas:
- Valor do depósito inicial
- Valor do primeiro saque
- Valor do segundo depósito
- Valor do segundo saque
- Valor do terceiro saque
No seu arquivo principal, crie uma conta e realize estas operações em ordem:
- Deposite o valor inicial e, em seguida, imprima o saldo usando
:getBalance() - Saque o primeiro valor e, em seguida, imprima o saldo
- Deposite o segundo valor e, em seguida, imprima o saldo
- Saque o segundo valor e, em seguida, imprima o saldo
- Tente o terceiro saque e, em seguida, imprima o saldo
Lembre-se de que saques malsucedidos imprimirão Insufficient funds antes de você imprimir o saldo.
Por exemplo, se as entradas forem 200, 50, 100, 180 e 100, a saída deve ser:
200
150
250
70
Insufficient funds
70A conta começa em 200, cai para 150 após o primeiro saque, sobe para 250 após outro depósito, cai para 70 após o saque de 180 e permanece em 70 quando o saque final de 100 falha devido a fundos insuficientes.
Experimente você mesmo
-- Requer o módulo Account
local Account = require('Account')
-- Lê as cinco entradas
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local deposit2 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())
-- Cria uma única conta
local account = Account:new()
-- Deposita o valor inicial e imprime o saldo usando :getBalance()
account:deposit(initialDeposit)
print(account:getBalance())
-- Tenta o primeiro saque e imprime o saldo
account:withdraw(withdrawal1)
print(account:getBalance())
-- Deposita o segundo valor e imprime o saldo
account:deposit(deposit2)
print(account:getBalance())
-- Tenta o segundo saque e imprime o saldo
account:withdraw(withdrawal2)
print(account:getBalance())
-- Tenta o terceiro saque e imprime o saldo
account:withdraw(withdrawal3)
print(account:getBalance())
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