Logica di deposito
Fa parte della sezione Programmazione orientata agli oggetti del percorso C di Coddy. Lezione 24 di 61.
Sfida
FacileÈ il momento di aggiungere la prima vera operazione bancaria al tuo modulo Account: la possibilità di depositare fondi! Una funzione di deposito deve essere intelligente: dovrebbe accettare solo importi positivi, proteggendo il tuo conto da transazioni non valide.
Partendo dal tuo progetto Bank Account esistente, estenderai il modulo con la funzionalità di deposito. La tua funzione di deposito deve convalidare l’input prima di modificare il saldo nascosto. È l’incapsulamento che protegge l’integrità dei tuoi dati.
Lavorerai con tre file:
account.h: estendi il tuo header esistente aggiungendo un nuovo prototipo di funzione:deposit. Questa funzione deve ricevere un puntatore a Account e un importodouble, e restituire unint(1 in caso di successo, 0 se l’importo non è valido). Mantieni le dichiarazioni esistenti percreate_accountedestroy_account.account.c: implementa la funzionedepositinsieme al costruttore e al distruttore esistenti. Il deposito deve riuscire solo se l’importo è positivo (maggiore di zero). Se è valido, aggiungi l’importo al saldo nascosto e restituisci 1. Se l’importo è zero o negativo, rifiutalo restituendo 0 senza modificare il saldo.main.c: mostra la funzionalità di deposito creando un conto ed eseguendo più operazioni di deposito, alcune valide e altre non valide, per dimostrare che la convalida funziona correttamente.
Riceverai tre input: l’ID del conto (un numero intero), un importo valido del deposito (un numero positivo) e un importo non valido del deposito (zero o negativo).
Nel tuo file principale, crea un conto con l’ID fornito e stampa una conferma. Poi prova a depositare prima l’importo non valido: stampa se l’operazione è riuscita e indica che il saldo deve rimanere invariato. Successivamente, deposita l’importo valido: stampa il risultato dell’operazione. Infine, distruggi il conto e conferma la pulizia.
Stampa l’output in questo formato:
Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyedDove 1001 è l’ID del conto, -50.00 è l’importo non valido e 200.00 è l’importo valido. Formatta tutti gli importi con due cifre decimali usando %.2f.
La tua funzione di deposito agisce da guardiano. Garantisce che solo le transazioni valide possano modificare il saldo nascosto del conto. Anche se per ora non puoi vedere il saldo (aggiungeremo un getter in una lezione successiva), puoi fidarti del fatto che i depositi non validi vengano rifiutati correttamente.
Provalo tu
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
scanf("%d", &account_id);
Account* account = create_account(account_id);
printf("Account %d created\n", account_id);
destroy_account(account);
printf("Account destroyed\n");
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