Ottieni il saldo
Fa parte della sezione Programmazione orientata agli oggetti del percorso Lua di Coddy. Lezione 22 di 70.
Sfida
FacileLa tua Banca Digitale sta prendendo davvero forma! Gli account possono ricevere depositi ed effettuare prelievi con un corretto controllo dei fondi. Ora aggiungiamo un metodo getter per recuperare il saldo e poi mettiamo insieme tutto in uno scenario bancario realistico.
Continuerai a lavorare sui file che hai già creato:
Account.lua: aggiungi un metodo:getBalance()che restituisce il saldo attuale. Segue il modello getter che hai imparato in precedenza: fornisce un accesso controllato ai dati interni, invece di accedere direttamente al campo. Mantieni tutte le funzionalità esistenti (costruttore e metodi di deposito e prelievo).main.lua: crea un account ed esegui una sequenza di operazioni bancarie per mostrare come depositi, prelievi e controlli del saldo funzionano insieme in uno scenario reale.
Riceverai cinque input:
- Importo del deposito iniziale
- Importo del primo prelievo
- Importo del secondo deposito
- Importo del secondo prelievo
- Importo del terzo prelievo
Nel file main, crea un account ed esegui queste operazioni nell'ordine indicato:
- Deposita l'importo iniziale, poi stampa il saldo usando
:getBalance() - Preleva il primo importo, poi stampa il saldo
- Deposita il secondo importo, poi stampa il saldo
- Preleva il secondo importo, poi stampa il saldo
- Prova a effettuare il terzo prelievo, poi stampa il saldo
Ricorda che i prelievi non riusciti stamperanno Insufficient funds prima che tu stampi il saldo.
Per esempio, se gli input sono 200, 50, 100, 180 e 100, l'output dovrebbe essere:
200
150
250
70
Insufficient funds
70Il saldo dell'account parte da 200, scende a 150 dopo il primo prelievo, sale a 250 dopo un altro deposito, scende a 70 dopo il prelievo di 180 e rimane a 70 quando l'ultimo prelievo di 100 non riesce per insufficienza di fondi.
Provalo tu
-- Carica il modulo Account
local Account = require('Account')
-- Leggi i cinque input
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())
-- Crea un solo conto
local account = Account:new()
-- Deposita l'importo iniziale e stampa il saldo usando :getBalance()
account:deposit(initialDeposit)
print(account:getBalance())
-- Tenta il primo prelievo e stampa il saldo
account:withdraw(withdrawal1)
print(account:getBalance())
-- Deposita il secondo importo e stampa il saldo
account:deposit(deposit2)
print(account:getBalance())
-- Tenta il secondo prelievo e stampa il saldo
account:withdraw(withdrawal2)
print(account:getBalance())
-- Tenta il terzo prelievo e stampa il saldo
account:withdraw(withdrawal3)
print(account:getBalance())
Tutte le lezioni di Programmazione orientata agli oggetti
1Il concetto di «self»
Tabelle con funzioni«self» esplicitoLa sintassi dei due puntiPunto o due puntiRiepilogo - Spostare il punto4Progetto: Banca digitale
Configurazione del progettoMetodo di deposito2Schema del prototipo di classe
Il concetto di prototipoCollegare con __indexIl costruttore :new()Inizializzare gli attributiIstanze indipendentiRiepilogo - Fabbrica di auto5Sovraccarico degli operatori nella OOP
Sommare oggettiSottrarre oggettiConcatenare oggettiConfrontare oggetti (<, >)Ripasso - Calcoli con il portafoglio8Incapsulamento
Convenzioni di denominazioneClosure per la privacyAccesso tramite closureTabelle di sola letturaLogica di convalidaRiepilogo - Cassaforte sicura11Modelli di progettazione (base)
Funzioni factoryTabella singletonPattern IteratorObserver (listener)Riepilogo - Factory per logger3Stato e comportamento degli oggetti
Variabili di istanzaMetodi getterMetodi setterProprietà calcolateFormattazione delle stringheControlli di uguaglianzaRiepilogo - Voto dello studente6Fondamenti dell'ereditarietà
Configurare l'ereditarietàEreditare i metodiEstendere il costruttoreAggiungere metodi alla classe figliaCondiviso vs specificoRiepilogo - Gerarchia delle formeEsercitati da solo: Compilatore Lua online