Skip to content

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:

  1. Crea un’Interfaccia astratta AccountDatabase che includa due metodi puramente virtuali: double get_amount(long id) e void set_amount(long id, double amount). Assicurati che abbia il distruttore di default virtuale!
  2. Crea una classe concreta InMemoryAccountDatabase che derivi dall’interfaccia. Per semplicità simuliamo il recupero dell’ammontare restituendo sempre 100.0 nel getter, e nel setter stampiamo fittiziamente “Imposto nuovo saldo su conto X”.
  3. Aggiorna la Bank affinché 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.