Esercizi Pratici: Polimorfismo a Runtime
Adesso tocca a te mettersi nei panni dell’ingegnere del software alle prese col codice della Banca. Abbiamo risolto il problema del Logging, ma manca la cosa più importante: il sistema contabile (Database) da cui sottrarre o aggiungere il saldo ai vari conti.
Seguendo le linee guida del libro, applicherai il polimorfismo a questo nuovo requisito.
Obiettivi:
- Crea un’Interfaccia astratta
AccountDatabaseche includa due metodi puramente virtuali:double get_amount(long id)evoid set_amount(long id, double amount). Assicurati che abbia il distruttore di default virtuale! - Crea una classe concreta
InMemoryAccountDatabaseche derivi dall’interfaccia. Per semplicità simuliamo il recupero dell’ammontare restituendo sempre100.0nel getter, e nel setter stampiamo fittiziamente “Imposto nuovo saldo su conto X”. - Aggiorna la
Bankaffinché riceva come dipendenza un riferimento all’interfaccia (Constructor Injection). Non vogliamo permettere lo swap a runtime del database per evitare problemi, quindi usa una referenza (AccountDatabase& db) che deve essere inizializzata nel costruttore tramite Initializer List.