Einstieg - Verwaltung von Bankkonten
Eine Bankwelt im Computer
Wenn ein Programm zur Verwaltung von Bankkonten eingesetzt werden soll, dann muss es Kunden- und Kontodaten erfassen und Vorgänge im Bankwesen wie Ein- und Auszahlungen sowie Überweisungen durchführen können. Die Bankwelt mit bestimmten Gegenständen (Kunden, Konten, ...) und Vorgängen (Ein-, Auszahlungen, ...) muss also im Programm geeignet erfasst werden.
Im Folgenden werden Objekte benutzt, um eine Bankwelt softwaretechnisch zu erfassen. Das folgende Objektdiagramm zeigt eine mögliche objektorientierte Beschreibung der Gegenstände einer Bankwelt.
Die Vorgänge einer Bankwelt werden durch die Operationen der Objekte repräsentiert. Im folgenden Klassendiagramm zur Bankwelt sind die Dienste (Operationen) aufgelistet, die die Objekte zur Verfügung stellen.
Aufgabe 1
(a) Welches Objekt ist für welche Aufgaben zuständig?
(b) Welche Vereinfachungen sind bei dieser Beschreibung einer Bankwelt vorgenommen? Schau dir z.B. die Anzahl der Konten an, die ein Kunde haben kann.
Aufgabe 2
Lade dir die Datei
bank.txt
mit einer Implementierung der Klassen herunter und benenne sie in bank.py
um.
Versuche, mit Objekten zu den hier vorgegebenen Klassen Vorgänge der Bankwelt durchzuspielen.
Das folgende Python-Testprogramm zeigt, wie das gehen könnte.
from bank import *
bank = Bank()
# Konto eröffnen
print("Neues Konto")
name = input("Name: ")
vorname = input("Vorname: ")
bank.kontoEroeffnen(name, vorname)
print()
# Konto eröffnen
print("Neues Konto")
name = input("Name: ")
vorname = input("Vorname: ")
bank.kontoEroeffnen(name, vorname)
print()
# Konto eröffnen
print("Neues Konto")
name = input("Name: ")
vorname = input("Vorname: ")
bank.kontoEroeffnen(name, vorname)
print()
# Ausgabe der Kunden und Konten
for kunde in bank.kunden:
print("Kunde:")
print("Name:", kunde.name)
print("Vorname:", kunde.vorname)
print("Kontonummer:", kunde.konto.nr)
print("Kontostand:", kunde.konto.stand)
print()
# Transaktion
print("Einzahlung")
kontonummer = int(input("Kontonummer: "))
betrag = float(input("Betrag: "))
bank.einzahlen(kontonummer, betrag)
print()
# Transaktion
print("Auszahlung")
kontonummer = int(input("Kontonummer: "))
betrag = float(input("Betrag: "))
bank.auszahlen(kontonummer, betrag)
print()
# Transaktion
print("Überweisung")
vonKontonummer = int(input("Von Kontonummer: "))
nachKontonummer = int(input("Nach Kontonummer: "))
betrag = float(input("Betrag: "))
bank.ueberweisen(vonKontonummer, nachKontonummer, betrag)
print()
# Ausgabe der konten
for kunde in bank.kunden:
print("Kunde:")
print("Name:", kunde.name)
print("Vorname:", kunde.vorname)
print("Kontonummer:", kunde.konto.nr)
print("Kontostand:", kunde.konto.stand)
Aufgabe 3
Ändere das Testprogramm aus Aufgabe 2 so, dass vor der Überweisung eine Übersicht über die existierenden Konto(nummmern) und ihren jeweiligen Kontostand angezeigt wird.
Aufgabe 4
Im Testprogramm wird eine Kontenübersicht über die Liste aller Kunden ausgegeben.:
# Ausgabe der konten
for kunde in bank.kunden:
print("Kunde:")
...
Ändere das Testprogramm so, dass eine Kontenübersicht über die Liste aller Konten
angezeigt wird.
Aufgabe 5
Bisher wurde die Methode kontoHinzufuegen
der Klasse Kunde
nicht verwendet Ändere die Klassen Kunde
und Bank
aus Aufgabe 2 so, dass ein neues Konto erzeugt werden kann und einem bestehenden Kunden zugeordnet wird, so dass dieser nun auch mehrere Konten hat. Achte darauf, dass die Kennt-Beziehung in beide Richtungen hergestellt wird. Passe auch das Testprogramm entsprechend an.