Also hier ist das neue Beispiel: :bae:
Es sollen unterschiedliche Bankkonten als Klassen realisiert werden. Implementieren
Sie eine Basisklasse Account und Spezialisierungen für Girokonten (Klasse TransferAccount),
Sparkonten (Klasse SavingsAccount) und Kreditkonten (Klasse CreditAccount).
Basisklasse Account:
Jedes Konto hat eine eindeutige Kontonummer und einen aktuellen Kontostand. Deklarieren Sie
entsprechende Felder und Zugriffsmethoden. Die Kontonummer muss eindeutig sein und sollte daher vom
Programm generiert und unveränderlich sein. Überlegen Sie die Sichtbarkeitsattribute für die Felder und
ob auch eine set-Methode definiert werden soll (d.h. ob das Feld von außen gesetzt werden kann).
Hinweise:
- Zur Vereinfachung können Sie für die Geldbeträge den Typ int verwenden.
- Verwenden Sie ein static int-Feld nextId, um die Kontonummern zu generieren.
Man kann von einem Konto Geld abheben und auf ein Konto Geld einzahlen. Definieren Sie dazu
entsprechende Methoden.
Es soll möglich sein, die letzte Behebung oder Einzahlung rückgängig zu machen. Realisieren Sie dazu
eine Methode void undoLastOperation().
Definieren Sie weiters eine Methode public String toString(), um eine String-Repräsentation
des Kontos zu generieren.
Spezialisierungen TransferAccount, SavingsAccount und CreditAccount:
Leiten Sie dann Unterklassen TransferAccount für Girokonten, SavingsAccount für Sparkonten
und CreditAccount für Kreditkonten ab. Dabei sind folgende Zusätze und Einschränkungen zu
beachten:
Girokonten:
- Haben eine maximale Überziehung. Über diese Grenze darf das Konto nicht belastet
werden.
Sparkonten:
- Dürfen nur im Haben sein (Kontostand > 0).
Kreditkonten:
- Kreditkonten werden anfänglich mit einem Soll (Kontostand < 0) angelegt. Man kann
darauf nur einzahlen (Kredit zurückzahlen) und nicht weiter beheben.
- Auf das Kreditkonto kann nicht mehr eingezahlt werden als der ausstehende Kredit
ausmacht (Kontostand darf nicht > 0 werden).
Prüfen Sie alle diese Bedingungen in den Methoden. Die Methoden sollen bei Verletzung von
Bedingungen Exceptions auslösen. Definieren Sie sich dazu eine eigene Exception-Klasse.
Es sollen unterschiedliche Bankkonten als Klassen realisiert werden. Implementieren
Sie eine Basisklasse Account und Spezialisierungen für Girokonten (Klasse TransferAccount),
Sparkonten (Klasse SavingsAccount) und Kreditkonten (Klasse CreditAccount).
Basisklasse Account:
Jedes Konto hat eine eindeutige Kontonummer und einen aktuellen Kontostand. Deklarieren Sie
entsprechende Felder und Zugriffsmethoden. Die Kontonummer muss eindeutig sein und sollte daher vom
Programm generiert und unveränderlich sein. Überlegen Sie die Sichtbarkeitsattribute für die Felder und
ob auch eine set-Methode definiert werden soll (d.h. ob das Feld von außen gesetzt werden kann).
Hinweise:
- Zur Vereinfachung können Sie für die Geldbeträge den Typ int verwenden.
- Verwenden Sie ein static int-Feld nextId, um die Kontonummern zu generieren.
Man kann von einem Konto Geld abheben und auf ein Konto Geld einzahlen. Definieren Sie dazu
entsprechende Methoden.
Es soll möglich sein, die letzte Behebung oder Einzahlung rückgängig zu machen. Realisieren Sie dazu
eine Methode void undoLastOperation().
Definieren Sie weiters eine Methode public String toString(), um eine String-Repräsentation
des Kontos zu generieren.
Spezialisierungen TransferAccount, SavingsAccount und CreditAccount:
Leiten Sie dann Unterklassen TransferAccount für Girokonten, SavingsAccount für Sparkonten
und CreditAccount für Kreditkonten ab. Dabei sind folgende Zusätze und Einschränkungen zu
beachten:
Girokonten:
- Haben eine maximale Überziehung. Über diese Grenze darf das Konto nicht belastet
werden.
Sparkonten:
- Dürfen nur im Haben sein (Kontostand > 0).
Kreditkonten:
- Kreditkonten werden anfänglich mit einem Soll (Kontostand < 0) angelegt. Man kann
darauf nur einzahlen (Kredit zurückzahlen) und nicht weiter beheben.
- Auf das Kreditkonto kann nicht mehr eingezahlt werden als der ausstehende Kredit
ausmacht (Kontostand darf nicht > 0 werden).
Prüfen Sie alle diese Bedingungen in den Methoden. Die Methoden sollen bei Verletzung von
Bedingungen Exceptions auslösen. Definieren Sie sich dazu eine eigene Exception-Klasse.