Menu
Coddy logo textTech

Test finale della banca

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

challenge icon

Sfida

Facile

Congratulazioni per aver creato un sistema completo di banca digitale! La tua classe Account ora gestisce depositi, prelievi, controlli del saldo, identificazione dei conti e trasferimenti tra conti. Mettiamo tutto alla prova con uno scenario bancario realistico con più conti.

In questa sfida finale, simulerai una piccola banca con tre clienti che effettuano varie transazioni. Questo verificherà che tutti i tuoi metodi funzionino correttamente insieme e che i conti mantengano davvero uno stato indipendente.

I tuoi due file:

  • Account.lua: la tua classe Account completa, con tutte le funzionalità che hai sviluppato durante questo progetto (costruttore con ID, deposito, prelievo, getBalance, __tostring e trasferimento).
  • main.lua: uno script di simulazione che crea più conti ed esegue una serie di transazioni tra di essi.

Riceverai sei input:

  1. ID del conto 1
  2. ID del conto 2
  3. ID del conto 3
  4. Deposito iniziale per il conto 1
  5. Deposito iniziale per il conto 2
  6. Deposito iniziale per il conto 3

Nel tuo file principale, simula la seguente giornata bancaria:

  1. Crea tre conti con gli ID forniti
  2. Deposita gli importi iniziali nei rispettivi conti
  3. Il conto 1 trasferisce 100 al conto 2
  4. Il conto 2 trasferisce 150 al conto 3
  5. Il conto 3 trasferisce 50 al conto 1
  6. Il conto 1 tenta di trasferire 1000 al conto 3 (l'operazione dovrebbe fallire)
  7. Stampa tutti e tre i conti nell'ordine indicato (conto 1, poi 2, poi 3)

Ad esempio, se gli input sono A001, A002, A003, 500, 300 e 200, l'output dovrebbe essere:

Insufficient funds
Account [A001]: Balance = 450
Account [A002]: Balance = 250
Account [A003]: Balance = 300

Ripercorriamo i passaggi: il conto 1 parte da 500, trasferisce 100 al conto 2 (ora ha 400), poi riceve 50 dal conto 3 (ora ha 450). Il conto 2 parte da 300, riceve 100 (ora ha 400) e trasferisce 150 al conto 3 (ora ha 250). Il conto 3 parte da 200, riceve 150 (ora ha 350) e trasferisce 50 al conto 1 (ora ha 300). Il trasferimento finale di 1000 non va a buon fine perché il conto 1 ha solo 450.

Provalo tu

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

-- Leggi i sei valori di input
local id1 = io.read()
local id2 = io.read()
local id3 = io.read()
local initialDeposit1 = tonumber(io.read())
local initialDeposit2 = tonumber(io.read())
local initialDeposit3 = tonumber(io.read())

-- Crea tre account con ID
-- TODO: crea account1, account2, account3 usando Account:new()

-- Deposita gli importi iniziali nei rispettivi account
-- TODO: deposita initialDeposit1 in account1, initialDeposit2 in account2, initialDeposit3 in account3

-- Account 1 trasferisce 100 ad Account 2
-- TODO: account1:transfer(account2, 100)

-- Account 2 trasferisce 150 ad Account 3
-- TODO: account2:transfer(account3, 150)

-- Account 3 trasferisce 50 ad Account 1
-- TODO: account3:transfer(account1, 50)

-- Account 1 tenta di trasferire 1000 a Account 3 (l'operazione dovrebbe fallire)
-- TODO: account1:transfer(account3, 1000)

-- Stampa tutti e tre gli account in ordine
-- TODO: print account1, account2, account3

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Lua online