Menu
Coddy logo textTech

Obter Saldo

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

challenge icon

Desafio

Fácil

Seu 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:

  1. Valor do depósito inicial
  2. Valor do primeiro saque
  3. Valor do segundo depósito
  4. Valor do segundo saque
  5. Valor do terceiro saque

No seu arquivo principal, crie uma conta e realize estas operações em ordem:

  1. Deposite o valor inicial e, em seguida, imprima o saldo usando :getBalance()
  2. Saque o primeiro valor e, em seguida, imprima o saldo
  3. Deposite o segundo valor e, em seguida, imprima o saldo
  4. Saque o segundo valor e, em seguida, imprima o saldo
  5. 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
70

A 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