Tracks
/
C++
C++
/
Übungen
/
Bankkonto
Bankkonto

Bankkonto

Schwer

Einführung

Nach Jahren des Formularausfüllens und Wartens hast du endlich deine Banklizenz erworben. Das heißt, du bist jetzt offiziell berechtigt, deine eigene Bank zu eröffnen, hurra!

Deine erste Priorität ist es, die IT-Systeme ans Laufen zu bringen. Nach einem Tag harter Arbeit kannst du bereits Konten eröffnen und schließen sowie Abhebungen und Einzahlungen bearbeiten.

Da du keine Lust hattest, Tests zu schreiben, bittest du ein paar Freunde, dir beim Testen des Systems zu helfen. Doch schon nach fünf Minuten behauptet einer deiner Freunde, Geld verloren zu haben! Du bist dir zwar sicher, dass dein Code fehlerfrei ist, doch du fängst an, die Logs zu durchsuchen, um der Sache nachzugehen.

Ah ja, genau wie du vermutet hast, ist dein Freund schuld! Einer deiner Freunde hat seine Test-Zugangsdaten mit einem anderen Freund geteilt, und gemeinsam haben sie sich verschworen, vom selben Konto parallel Einzahlungen und Abhebungen vorzunehmen. Wer würde so etwas tun?

Während du argumentierst, es sei physisch unmöglich, dass jemand parallel auf sein Konto zugreift, teilt dein Freund dir selbstgefällig mit, dass die Bankregeln verlangen, dass du das unterstützt. Also: keine parallele Unterstützung fürs Banking, keine Freigabe für den Livegang. Seufzend machst du dir eine mentale Notiz, dich morgen darum zu kümmern. Das verschiebt deinen Starttermin um mindestens einen weiteren Tag, aber nun ja...

Anleitung

Deine Aufgabe ist es, Bankkonten zu implementieren, die das Eröffnen und Schließen sowie Abhebungen und Einzahlungen von Geld unterstützen.

Da auf Bankkonten auf viele verschiedene Arten zugegriffen werden kann (Internet, Mobiltelefone, automatische Abbuchungen), muss deine Banksoftware es ermöglichen, dass mehrere Threads/Prozesse (die Terminologie hängt von deiner Programmiersprache ab) parallel und sicher auf Konten zugreifen. Zum Beispiel kann es viele Einzahlungen und Abhebungen geben, die parallel ablaufen; du musst sicherstellen, dass zwischen dem Lesen des Kontostands und dem Setzen des neuen Kontostands keine Race Conditions auftreten.

Es sollte möglich sein, ein Konto zu schließen; Operationen auf einem geschlossenen Konto müssen fehlschlagen.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
C++ Exercism

Bereit, mit Bankkonto zu starten?

Melde dich bei Exercism an, um C++ mit 19 Konzepte100 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.