Einzahlungslogik
Teil des Abschnitts Object Oriented Programming der C-Journey von Coddy — Lektion 24 von 61.
Aufgabe
EinfachEs ist an der Zeit, Ihrem Account-Modul die erste echte Bankoperation hinzuzufügen – die Möglichkeit, Gelder einzuzahlen! Eine Einzahlungsfunktion muss intelligent sein: Sie sollte nur positive Beträge akzeptieren und Ihr Konto so vor ungültigen Transaktionen schützen.
Aufbauend auf Ihrem bestehenden Bankkonto-Projekt werden Sie das Modul um eine Einzahlungsfunktionalität erweitern. Ihre Einzahlungsfunktion muss die Eingabe validieren, bevor sie den verborgenen Kontostand ändert – das ist Kapselung, die zum Schutz der Integrität Ihrer Daten dient.
Sie werden mit drei Dateien arbeiten:
account.h: Erweitern Sie Ihren vorhandenen Header durch Hinzufügen eines neuen Funktionsprototyps:deposit. Diese Funktion sollte einen Account-Pointer und einendoubleBetrag entgegennehmen und einenintzurückgeben (1 für Erfolg, 0, wenn der Betrag ungültig ist). Behalten Sie Ihre bestehenden Deklarationen fürcreate_accountunddestroy_accountbei.account.c: Implementieren Sie diedeposit-Funktion zusammen mit Ihrem vorhandenen Konstruktor und Destruktor. Die Einzahlung sollte nur erfolgreich sein, wenn der Betrag positiv (größer als Null) ist. Wenn er gültig ist, addieren Sie den Betrag zum verborgenen Kontostand und geben Sie 1 zurück. Wenn der Betrag Null oder negativ ist, lehnen Sie ihn ab, indem Sie 0 zurückgeben, ohne den Kontostand zu ändern.main.c: Demonstrieren Sie Ihre Einzahlungsfunktionalität, indem Sie ein Konto erstellen und mehrere Einzahlungsvorgänge durchführen – einige gültig, andere ungültig –, um zu zeigen, dass Ihre Validierung korrekt funktioniert.
Sie erhalten drei Eingaben: die account ID (eine Ganzzahl), einen gültigen Einzahlungsbetrag (eine positive Zahl) und einen ungültigen Einzahlungsbetrag (Null oder negativ).
Erstellen Sie in Ihrer Hauptdatei ein Konto mit der angegebenen ID und geben Sie eine Bestätigung aus. Versuchen Sie dann zuerst, den ungültigen Betrag einzuzahlen – geben Sie aus, ob dies erfolgreich war, und beachten Sie, dass der Kontostand unverändert bleiben sollte. Zahlen Sie als Nächstes den gültigen Betrag ein – geben Sie das Erfolgsresultat aus. Zerstören Sie schließlich das Konto und bestätigen Sie die Bereinigung.
Geben Sie die Ausgabe in diesem Format aus:
Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyedWobei 1001 die Account-ID ist, -50.00 der ungültige Betrag und 200.00 der gültige Betrag. Formatieren Sie alle Beträge mit zwei Dezimalstellen unter Verwendung von %.2f.
Ihre Einzahlungsfunktion fungiert als Gatekeeper – sie stellt sicher, dass nur gültige Transaktionen den verborgenen Kontostand des Kontos ändern können. Auch wenn Sie den Kontostand noch nicht sehen können (wir werden in einer späteren Lektion einen Getter hinzufügen), können Sie darauf vertrauen, dass ungültige Einzahlungen ordnungsgemäß abgelehnt werden.
Probier es selbst
#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;
}
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