Menu
Coddy logo textTech

Obter Saldo

Parte da seção Programação Orientada a Objetos 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 processar saques com a verificação adequada de fundos. Agora vamos adicionar um método getter para recuperar o saldo e, em seguida, juntar tudo em um cenário bancário realista.

Você continuará desenvolvendo 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: fornecer acesso controlado aos dados internos em vez de acessar o campo diretamente. Mantenha todas as funcionalidades existentes (construtor e 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

Em seu arquivo principal, crie uma conta e execute estas operações na ordem:

  1. Deposite o valor inicial e, em seguida, imprima o saldo usando :getBalance()
  2. Faça o primeiro saque e, em seguida, imprima o saldo
  3. Deposite o segundo valor e, em seguida, imprima o saldo
  4. Faça o segundo saque e, em seguida, imprima o saldo
  5. Tente fazer 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 deverá ser:

200
150
250
70
Insufficient funds
70

A conta começa com 200, diminui para 150 após o primeiro saque, aumenta 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 Programação Orientada a Objetos

Pratique por conta própria: Compilador de Lua online