Menu
Coddy logo textTech

Visualizzazione del saldo

Fa parte della sezione Programmazione orientata agli oggetti del percorso C di Coddy. Lezione 26 di 61.

challenge icon

Sfida

Facile

Il tuo conto bancario è quasi completo! Hai creato la possibilità di creare conti, depositare fondi e prelevare denaro, ma manca un elemento fondamentale. Al momento, il codice esterno non ha modo di conoscere il saldo attuale. Risolviamo il problema aggiungendo una funzione getter.

Un getter è il modo corretto per esporre dati nascosti in un modulo incapsulato. Invece di rendere pubblico il campo del saldo (cosa che comprometterebbe l'incapsulamento), fornisci una funzione di sola lettura che restituisce il valore. In questo modo i dati rimangono protetti, consentendo comunque un accesso controllato.

Continuerai a lavorare con i tuoi tre file:

  • account.h: Aggiungi un nuovo prototipo di funzione: get_balance. Questa funzione accetta un const Account * (poiché legge soltanto i dati e non li modifica mai) e restituisce un double che rappresenta il saldo attuale. Mantieni tutte le dichiarazioni esistenti.
  • account.c: Implementa la funzione get_balance. Restituisce semplicemente il campo del saldo nascosto dell'account. Nota che questa funzione può accedere ai dati interni perché è definita nello stesso file della struct: il codice esterno non può comunque accedervi direttamente.
  • main.c: Ora puoi finalmente vedere cosa succede all'interno dei tuoi account! Crea un account, esegui alcune transazioni e usa il nuovo getter per visualizzare il saldo a ogni passaggio.

Riceverai quattro input: l'ID dell'account (un intero), un importo del deposito, un importo del prelievo e un secondo importo del deposito.

Nel tuo file principale, crea un account e stampa il suo saldo iniziale (dovrebbe essere 0.00). Deposita il primo importo e stampa il nuovo saldo. Preleva l'importo specificato e stampa di nuovo il saldo. Infine, effettua il secondo deposito e stampa il saldo finale. Poi distruggi l'account.

Stampa l'output in questo formato:

Account 1001 created
Balance: 0.00
Balance: 500.00
Balance: 200.00
Balance: 350.00
Account destroyed

Dove 1001 è l'ID dell'account e i saldi corrispondono a: saldo iniziale (0.00), dopo aver depositato 500.00, dopo aver prelevato 300.00 e dopo aver depositato altri 150.00. Formatta tutti i valori del saldo con due cifre decimali usando %.2f.

Con questo getter, il tuo modulo Bank Account offre ora un accesso completo e controllato ai dati dell'account: gli utenti possono vedere il saldo, ma possono modificarlo solo tramite le funzioni validate di deposito e prelievo.

Provalo tu

#include <stdio.h>
#include "account.h"

int main() {
    int account_id;
    scanf("%d", &account_id);
    
    double deposit1;
    scanf("%lf", &deposit1);
    
    double withdraw_amount;
    scanf("%lf", &withdraw_amount);
    
    double deposit2;
    scanf("%lf", &deposit2);
    
    Account* account = create_account(account_id);
    printf("Account %d created\n", account_id);
    
    // TODO: Stampa il saldo iniziale usando get_balance
    
    deposit(account, deposit1);
    // TODO: Stampa il saldo dopo il primo deposito
    
    withdraw(account, withdraw_amount);
    // TODO: Stampa il saldo dopo il prelievo
    
    deposit(account, deposit2);
    // TODO: Stampa il saldo dopo il secondo deposito
    
    destroy_account(account);
    printf("Account destroyed\n");
    
    return 0;
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore C online