Informazioni sul conto
Fa parte della sezione Programmazione orientata agli oggetti del percorso Lua di Coddy. Lezione 23 di 70.
Sfida
FacileLa tua Banca Digitale sta diventando sempre più professionale! Ora facciamo in modo che i tuoi conti vengano visualizzati in modo ordinato quando li stampi. Aggiungendo un metametodo __tostring, puoi controllare esattamente come appare un conto: mostrando sia l’ID del conto sia il saldo attuale in un formato chiaro e leggibile.
Continuerai a lavorare sui file esistenti:
Account.lua: estendi la classe Account con due nuove funzionalità:- Modifica il costruttore
:new()in modo che accetti un parametroidche identifica ogni conto - Aggiungi un metametodo
__tostringche restituisca una stringa formattata con le informazioni del conto
- Modifica il costruttore
main.lua: crea conti con ID e mostra come vengono visualizzati quando li stampi.
Il metodo __tostring dovrebbe restituire una stringa in questo formato esatto:
Account [ID]: Balance = BALANCEDove ID è l’ID del conto e BALANCE è il saldo attuale.
Riceverai quattro input:
- ID del primo conto
- Importo del deposito del primo conto
- ID del secondo conto
- Importo del deposito del secondo conto
Nel file principale, crea due conti con gli ID indicati, deposita i rispettivi importi su ciascuno, quindi stampa direttamente ogni conto usando print(). Il metametodo __tostring verrà chiamato automaticamente quando stamperai l’oggetto conto.
Per esempio, se gli input sono 1001, 500, 1002 e 750, l’output dovrebbe essere:
Account [1001]: Balance = 500
Account [1002]: Balance = 750Ora ogni conto ha un’identità univoca e può descriversi chiaramente: un’esperienza bancaria molto più professionale!
Provalo tu
-- Carica il modulo Account
local Account = require('Account')
-- Leggi i quattro input
local id1 = io.read()
local deposit1 = tonumber(io.read())
local id2 = io.read()
local deposit2 = tonumber(io.read())
-- Crea due conti con ID
local account1 = Account:new(id1)
local account2 = Account:new(id2)
-- Deposita i rispettivi importi
account1:deposit(deposit1)
account2:deposit(deposit2)
-- Stampa ogni conto (usa __tostring)
print(account1)
print(account2)
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