Finale del progetto: ciclo principale
Fa parte della sezione Programmazione orientata agli oggetti del percorso C di Coddy. Lezione 27 di 61.
Sfida
FacileCongratulazioni: hai creato una libreria Bank Account completa! Ora è il momento di cambiare ruolo. Invece di essere il creatore della libreria, diventerai l’utente della libreria. Il tuo compito è scrivere un programma principale che metta alla prova il tuo modulo Account.
Immagina un cliente che entra in banca e svolge una serie di operazioni. Creerai un conto, effettuerai depositi e prelievi, controllerai il saldo durante il processo e infine chiuderai il conto una volta terminato.
Lavorerai con tre file:
account.h: il tuo file header completo, con il tipo opacoAccounte tutti i prototipi delle funzioni:create_account,destroy_account,deposit,withdraweget_balance.account.c: la tua implementazione completa, con la struct nascosta che contieneidebalance, oltre a tutte le implementazioni delle funzioni che hai realizzato nel corso di questo progetto.main.c: qui potrai dare il meglio! Scrivi un programma che mostri l’intero ciclo di vita di un conto bancario attraverso una sequenza realistica di operazioni.
Riceverai cinque input: l’ID del conto (un intero), un primo deposito, un prelievo, un secondo deposito e un tentativo di scoperto (un prelievo che dovrebbe fallire a causa di fondi insufficienti).
Il tuo programma principale dovrebbe raccontare la storia di questo conto:
- Crea il conto e annuncialo
- Mostra il saldo iniziale
- Effettua il primo deposito e mostra il nuovo saldo
- Preleva dei fondi e mostra il saldo aggiornato
- Effettua un altro deposito e mostra il saldo
- Prova a effettuare un prelievo superiore al saldo. L’operazione dovrebbe fallire
- Mostra il saldo finale (invariato dopo il prelievo non riuscito)
- Chiudi il conto
Stampa l’output in questo formato:
Account 2001 created
Balance: 0.00
Deposited 1000.00
Balance: 1000.00
Withdrew 250.00
Balance: 750.00
Deposited 500.00
Balance: 1250.00
Withdrawal failed: insufficient funds
Balance: 1250.00
Account 2001 closedDove 2001 è l’ID del conto e gli importi corrispondono ai tuoi input. Formatta tutti i valori monetari con due cifre decimali usando %.2f. Il messaggio di prelievo non riuscito dovrebbe essere stampato quando withdraw restituisce 0.
Questa lezione conclusiva dimostra tutto ciò che hai imparato sull’incapsulamento. Il tuo programma principale interagisce con Account esclusivamente tramite la sua interfaccia pubblica, senza mai accedere direttamente ai dati interni nascosti.
Provalo tu
#include <stdio.h>
#include "account.h"
int main() {
// TODO: Leggi account_id, deposit1, withdraw_amount, deposit2 e overdraft dall'input
// TODO: Crea il conto e stampa "Account <id> created"
// TODO: Stampa il saldo iniziale
// TODO: Effettua il primo deposito, stampa "Deposited <amount>" e il nuovo saldo
// TODO: Preleva i fondi, stampa "Withdrew <amount>" e il saldo aggiornato
// TODO: Effettua il secondo deposito, stampa "Deposited <amount>" e il nuovo saldo
// TODO: Tenta il prelievo con scoperto; se non riesce, stampa "Withdrawal failed: insufficient funds"
// TODO: Stampa il saldo finale
// TODO: Stampa "Account <id> closed" e distruggi il conto
return 0;
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Basi di programmazione modulare
File di intestazioneGuardie di inclusioneFile sorgenteFunzioni staticheRipasso: calcolatrice modulare4Incapsulamento
Il concetto di puntatori opachiDefinire struct opacheGetter e setterLa convalida nei setterRiepilogo: scatola segreta2Oggetti e metodi
Le struct come oggettiIl puntatore 'Self'Correttezza constPuntatore o valoreMetodi di supportoRiepilogo: gestore di punti5Progetto: Conto bancario semplice
Configurazione del progettoImplementazione del conto8Polimorfismo
Puntatori a funzione nelle structSimulare i metodiIl concetto di interfacciaImplementare le interfacceIterazione polimorficaRiepilogo: Greeter11Pattern di progettazione in C
Pattern SingletonPattern FactoryPattern IteratorRiepilogo: Factory di Logger3Ciclo di vita degli oggetti
Pattern del costruttorePattern del distruttoreInizializzazione sullo stackCopia profondaRiepilogo: wrapper di stringhe6Ereditarietà tramite composizione
Incorporamento delle structLa regola del primo membroAccesso ai membri della classe baseUpcastingRiepilogo: gerarchia di forme9Progetto: Disegnatore di forme
Panoramica del progettoImplementazione del cerchioImplementazione del rettangoloUtilizzo polimorficoContenitore di formeEsercitati da solo: Compilatore C online