Menu
Coddy logo textTech

Metodo di prelievo

Fa parte della sezione Programmazione orientata agli oggetti del percorso Lua di Coddy. Lezione 21 di 70.

challenge icon

Sfida

Facile

La tua banca digitale sta crescendo! Ora i conti possono ricevere depositi, ma una vera banca deve anche permettere ai clienti di prelevare denaro. Aggiungiamo un metodo :withdraw(amount), con un importante controllo di sicurezza.

A differenza dei depositi, i prelievi possono non andare a buon fine. Se un cliente cerca di prelevare più denaro di quanto ne abbia, la banca non dovrebbe consentirlo. Il tuo metodo withdraw deve controllare che ci siano fondi sufficienti prima di detrarre l’importo.

Continuerai a lavorare con i tuoi due file:

  • Account.lua: aggiungi un metodo :withdraw(amount) alla classe Account esistente. Se il conto ha un saldo sufficiente, sottrai l’importo e restituisci true. Se i fondi non sono sufficienti, stampa Insufficient funds e restituisci false senza modificare il saldo.
  • main.lua: crea un conto, effettua un deposito per aggiungere fondi e poi prova a eseguire diversi prelievi per osservare sia le transazioni riuscite sia quelle non riuscite.

Riceverai quattro valori in input:

  1. Importo del deposito iniziale
  2. Importo del primo prelievo
  3. Importo del secondo prelievo
  4. Importo del terzo prelievo

Nel tuo file principale, crea un conto, deposita l’importo iniziale e poi prova a eseguire ogni prelievo nell’ordine indicato. Dopo ogni tentativo di prelievo, stampa il saldo corrente su una nuova riga. Ricorda che anche i prelievi non riusciti stamperanno Insufficient funds prima che tu stampi il saldo.

Ad esempio, se i valori in input sono 100, 30, 50 e 40, l’output dovrebbe essere:

70
20
Insufficient funds
20

Dopo il deposito, il conto parte da 100. Il primo prelievo di 30 riesce (saldo: 70), il secondo prelievo di 50 riesce (saldo: 20), ma il terzo prelievo di 40 non riesce perché rimangono solo 20, quindi il saldo resta 20.

Provalo tu

-- Carica il modulo Account
local Account = require('Account')

-- Leggi i quattro input
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())

-- Crea un solo conto
local account = Account:new()

-- Deposita l'importo iniziale
account:deposit(initialDeposit)

-- Tenta il primo prelievo e stampa il saldo
-- TODO: chiama account:withdraw(withdrawal1) qui
print(account.balance)

-- Tenta il secondo prelievo e stampa il saldo
-- TODO: chiama account:withdraw(withdrawal2) qui
print(account.balance)

-- Tenta il terzo prelievo e stampa il saldo
-- TODO: chiama account:withdraw(withdrawal3) qui
print(account.balance)

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Lua online