Einzahlungslogik
Teil des Abschnitts Objektorientierte Programmierung der C-Journey von Coddy. Lektion 24 von 61.
Aufgabe
EinfachZeit, die erste echte Bankoperation zu deinem Account-Modul hinzuzufügen: die Möglichkeit, Geld einzuzahlen! Eine Einzahlungsfunktion muss intelligent sein: Sie sollte nur positive Beträge akzeptieren und dein Konto so vor ungültigen Transaktionen schützen.
Aufbauend auf deinem bestehenden Bankkonto-Projekt erweiterst du das Modul um eine Einzahlungsfunktion. Deine Einzahlungsfunktion muss die Eingabe überprüfen, bevor sie den verborgenen Kontostand ändert. Hier zeigt sich die Kapselung beim Schutz der Integrität deiner Daten.
Du arbeitest mit drei Dateien:
account.h: Erweitere deinen bestehenden Header, indem du einen neuen Funktionsprototypen hinzufügst:deposit. Diese Funktion soll einen Account-Zeiger und einendouble-Betrag entgegennehmen und einenintzurückgeben (1 bei Erfolg, 0, wenn der Betrag ungültig ist). Behalte deine bestehenden Deklarationen fürcreate_accountunddestroy_accountbei.account.c: Implementiere die Funktiondepositneben deinem bestehenden Konstruktor und Destruktor. Die Einzahlung soll nur erfolgreich sein, wenn der Betrag positiv ist (größer als null). Wenn er gültig ist, addiere den Betrag zum verborgenen Kontostand und gib 1 zurück. Wenn der Betrag null oder negativ ist, lehne ihn ab, indem du 0 zurückgibst, ohne den Kontostand zu ändern.main.c: Zeige deine Einzahlungsfunktion, indem du ein Konto erstellst und mehrere Einzahlungsvorgänge durchführst – einige gültig, einige ungültig –, um zu zeigen, dass deine Überprüfung korrekt funktioniert.
Du erhältst drei Eingaben: die Kontokennung (eine Ganzzahl), einen gültigen Einzahlungsbetrag (eine positive Zahl) und einen ungültigen Einzahlungsbetrag (null oder negativ).
Erstelle in deiner Hauptdatei ein Konto mit der angegebenen Kennung und gib eine Bestätigung aus. Versuche dann zuerst, den ungültigen Betrag einzuzahlen: Gib aus, ob der Vorgang erfolgreich war, und weise darauf hin, dass der Kontostand unverändert bleiben sollte. Zahle anschließend den gültigen Betrag ein und gib das Ergebnis des Erfolgs aus. Zerstöre schließlich das Konto und bestätige die Bereinigung.
Gib die Ausgabe in diesem Format aus:
Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyedDabei ist 1001 die Kontokennung, -50.00 der ungültige Betrag und 200.00 der gültige Betrag. Formatiere alle Beträge mit zwei Dezimalstellen mithilfe von %.2f.
Deine Einzahlungsfunktion fungiert als Türsteher. Sie stellt sicher, dass nur gültige Transaktionen den verborgenen Kontostand ändern können. Auch wenn du den Kontostand noch nicht sehen kannst (wir werden in einer späteren Lektion einen Getter hinzufügen), kannst du darauf vertrauen, dass ungültige Einzahlungen ordnungsgemäß abgewiesen 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 Objektorientierte Programmierung
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-ImplementierungRechteck-ImplementierungPolymorphe VerwendungShape-ContainerÜbe selbstständig: Online-C-Compiler