000
30.10.2003, 09:37 Uhr
proga
|
Hallo Zusammen !!!
Ich musste für ein Schulprojekt eine Konsolenanwendung schreiben, die zur Verwaltung von Kunden und Konten in einer Bank dient. Die Daten sollten in sequenziellen Dateien abgelegt werden ( und später bei Bedarf in einer Datenbank ). Von Anfang an wollte ich die Daten, die verwaltet werden, von den Ausgaben bzw. den Eingaben in dem Konsolenfenster trennen, so dass ich später die Klassen die der Verwaltung dienen, in einer GUI-Anwendung wiederverwenden kann. Als erstes habe ich ein Klassendiagramm gemacht, hier die grobe Beschreibung:
1. Es gibt eine Klasse Kunde, die ein Datenelement m_Kundenart hat.
Würde ich die Daten von den Ausgaben bzw. den Eingaben nicht trennen, so würde ich Privatkunde, VIP-Kunde und Geschäftskunde von Kunde ableiten, und die Methode erfassen in allen Unterklassen überschreiben.
2. Es gibt eine Klasse Konto, von der die Klassen GiroKonto, Sparkonto und Wertpapierdepot abgeleitet werden.
Würde ich die Daten von den Ausgaben bzw. den Eingaben nicht trennen, so würde ich auch hier die Methode Erfassen virtuell machen, und dann in den abgeleiteten Klassen diese überschreiben, um zusätzliche Daten, die das jeweilige Konto besitzt, zu erfassen.
Nun zum Problem 1: Die Konten werden in einer Liste (list<Ckonto *>) verwaltet. Trennt man die Daten von den Ausgaben bzw. den Eingaben, muss man in der Klasse Konto, die Kontoart als Attrubit mitschleppen, sodass ich später bei der Erfassung eines neuen Kontos, prüfen kann, um welche Art von Konto es sich handelt, eine Typenumwandlung von Konto zu der jeweiligen Kontoart (z.B. Sparkonto) mache, um dann die benötigten Set-Methoden, die die Klasse zusätzlich hat, aufrufen kann.
Problem 2: Wie verwalte ich die Kontodaten in Dateien (oder in einer Datenbank). Gibt es eine Datei Konto, manche Einträge dann leere Attributwerte haben, oder muss man die Dateien wie Klassen behandeln, spricht eine Kontendatei, eine Datei für GiroDaten, und eine für Sparkontodaten? Wie macht man so etwas?
Das bedeutet also, das ich in diesem Fall (Verwaltung der Konten) die Polymorphie nicht nutzen kann, und zusätzlich auch noch unsauber programmieren muss, um die Daten von den Ausgaben bzw. den Eingaben zu trennen. Meine Frage ist nun, lohnt sich das überhaupt, ist mein Ansatz richtig? Bitte um Eure Meinung, und um Vorschläge, wie ihr das machen würdet.
Sorry, dass es so lang geworden ist :rolleyes:
Danke im Voraus. |