Implementierung des Kontos
Teil des Abschnitts Object Oriented Programming der C-Journey von Coddy — Lektion 23 von 61.
Aufgabe
EinfachJetzt ist es an der Zeit, Ihr Bankkonto zum Leben zu erwecken! Sie haben bereits die öffentliche Schnittstelle in account.h erstellt – jetzt werden Sie die verborgenen Interna implementieren, die sie funktionsfähig machen.
Aufbauend auf Ihrer bisherigen Arbeit fügen Sie die Quelldatei hinzu, die die geheime Struct-Definition und die tatsächlichen Funktionsimplementierungen enthält. Hier findet die Kapselung wirklich statt – der Struct-Body existiert nur in der .c-Datei und ist für jeden, der Ihre Bibliothek nutzt, völlig unsichtbar.
Sie werden mit drei Dateien arbeiten:
account.h: Ihr vorhandener Header mit der opakenAccount-Typdeklaration und den Funktionsprototypen fürcreate_accountunddestroy_account. Behalten Sie Ihre Include-Guards mitACCOUNT_Hbei.account.c: Hier passiert die Magie. Definieren Sie das tatsächlichestruct Accountmit zwei verborgenen Membern:int id(die Kontokennung) unddouble balance(beginnend bei 0.0 für neue Konten). Implementieren Sie Ihren Konstruktor, um Speicher zuzuweisen, die ID aus dem Parameter zu setzen und den Kontostand auf Null zu initialisieren. Implementieren Sie Ihren Destruktor, um den Speicher ordnungsgemäß freizugeben.main.c: Testen Sie Ihre Implementierung, indem Sie ein Konto erstellen und bestätigen, dass es funktioniert. Da die Struct-Member verborgen sind, können Sie nicht hineinschauen – aber Sie können überprüfen, ob der Lebenszyklus korrekt funktioniert.
Sie erhalten eine Eingabe: die account ID (eine Ganzzahl), die dem neuen Konto zugewiesen werden soll.
Erstellen Sie in Ihrer Hauptdatei ein Konto mit der angegebenen ID, geben Sie eine Bestätigungsmeldung aus, die die ID anzeigt, zerstören Sie dann das Konto und bestätigen Sie die Bereinigung.
Geben Sie die Ausgabe in diesem Format aus:
Account 1001 created
Account destroyedWobei 1001 durch die tatsächliche ID ersetzt wird, die Sie als Eingabe erhalten haben.
Denken Sie daran: Ihr main.c kann nicht direkt auf account->id oder account->balance zugreifen – diese Member sind innerhalb von account.c komplett verborgen. Für den Moment verwenden Sie einfach die ID aus der Eingabe für Ihre Ausgabenachricht. In den kommenden Lektionen werden Sie Getter-Funktionen hinzufügen, um die verborgenen Daten ordnungsgemäß abzurufen.
Probier es selbst
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
// TODO: account_id aus der Eingabe lesen
scanf("%d", &account_id);
// TODO: Ein Konto mit create_account() erstellen und "Account <id> created" ausgeben
// TODO: Das Konto mit destroy_account() löschen und "Account destroyed" ausgeben
return 0;
}Alle Lektionen in Object Oriented Programming
1Grundlagen der modularen Programmierung
Header-DateienInclude GuardsQuelldateienStatische FunktionenWiederholung: Modularer Taschenrechner4Kapselung
Konzept der Opaque PointersOpaque Structs definierenGetter und SetterValidierung in SetternRückblick: Die geheime Box2Objekte und Methoden
Structs als ObjekteDer 'Self'-PointerConst-CorrectnessPointer vs. WertHilfsmethodenZusammenfassung: Point Manager5Projekt: Einfaches Bankkonto
Projekt-SetupImplementierung des Kontos3Objekt-Lebenszyklus
Konstruktor-MusterDestruktor-MusterStack-InitialisierungTiefe KopieRückblick: String-Wrapper6Vererbung durch Komposition
Struct-EinbettungDie First-Member-RegelZugriff auf Parent-MemberUpcastingRückblick: Formenhierarchie9Projekt: Formen-Zeichner
ProjektübersichtKreis-Implementierung