Implementazione del conto
Fa parte della sezione Programmazione orientata agli oggetti del percorso C di Coddy. Lezione 23 di 61.
Sfida
FacileOra è il momento di dare vita al tuo conto bancario! Hai già creato l’interfaccia pubblica in account.h: ora implementerai i dettagli interni nascosti che lo fanno funzionare.
Partendo dal lavoro precedente, aggiungerai il file sorgente che contiene la definizione segreta della struct e le implementazioni effettive delle funzioni. È qui che avviene davvero l’incapsulamento: il corpo della struct esiste solo nel file .c, completamente invisibile a chiunque utilizzi la tua libreria.
Lavorerai con tre file:
account.h: il tuo header esistente con la dichiarazione del tipo opacoAccounte i prototipi delle funzionicreate_accountedestroy_account. Mantieni le guardie di inclusione conACCOUNT_H.account.c: è qui che avviene la magia. Definisci lastruct Accounteffettiva con due membri nascosti:int id(l’identificatore del conto) edouble balance(inizializzato a 0.0 per i nuovi conti). Implementa il costruttore affinché allochi memoria, imposti l’ID usando il parametro e inizializzi il saldo a zero. Implementa il distruttore affinché liberi correttamente la memoria.main.c: verifica la tua implementazione creando un conto e controllando che funzioni. Poiché i membri della struct sono nascosti, non puoi sbirciare al loro interno, ma puoi verificare che il ciclo di vita funzioni correttamente.
Riceverai un input: l’ID del conto (un intero) da assegnare al nuovo conto.
Nel tuo file principale, crea un conto con l’ID fornito, stampa un messaggio di conferma che mostri l’ID, quindi distruggi il conto e conferma la pulizia.
Stampa l’output in questo formato:
Account 1001 created
Account destroyedDove 1001 viene sostituito con l’ID effettivo ricevuto come input.
Ricorda: il tuo main.c non può accedere direttamente a account->id o account->balance. Questi membri sono completamente nascosti all’interno di account.c. Per ora, userai semplicemente l’ID dell’input nel messaggio di output. Nelle prossime lezioni aggiungerai funzioni getter per recuperare correttamente i dati nascosti.
Provalo tu
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
// TODO: leggi account_id dall'input
scanf("%d", &account_id);
// TODO: crea un account usando create_account() e stampa "Account <id> created"
// TODO: distruggi l'account usando destroy_account() e stampa "Account destroyed"
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