Lektion 80:Abstrakte BasisklasseEigentlich soll es nur Objekte der Klassen Sparkonto und Girokonto geben. Objekte der Klasse Konto sind nicht sinnvoll. Konto ist nur als Basisklasse zu verwenden. Eine solche Klasse heißt abstrakte Basisklasse. Der Compiler wird nicht zulassen, daß ein Objekt einer abstrakten Klasse angelegt wird. Um eine Klasse zu einer abstrakten Klasse zu machen, muß eine Funktion als rein virtuell gekennzeichnet werden. Eine rein virtuelle Funktion wird natürlich auch an die Unterklassen vererbt. Diese Klassen sind dann auch abstrakt. Sie können aber die Abstraktheit "abschütteln", indem sie die rein virtuelle Funktion mit einer nicht rein virtuellen Funktion überschreiben. Die Methode Konto::jahresabschluss soll rein virtuell werden. Fügen Sie in die Klasse Konto
ein. Das "=0" am Ende sagt: "Diese Methode ist rein virtuell". Im Hauptprogramm
meldet der Compiler ==> error : 'Konto' : cannot instantiate abstract class due to following members: Damit will der Compiler sagen, daß wegen der rein virtuellen Funktion Konto::jahresabschluß die Klasse Konto abstrakt ist, und kein Objekt dieser Klasse angelegt werden kann. Auch das Programm
ergibt solche Fehlermeldungen, weil Girokonto auch abstrakt ist. Dies kann aber abgestellt werden, indem in die Klasse Girokonto die Methode jahresabschluss eingefügt wird. Weil es keine Objekte der Klasse Konto geben kann, kann auch Konto::jahresabschluss nicht aufgerufen werden. Deswegen wird keine Implementierung für diese Methode benötigt. Es reicht also ein Funktionsprototyp. Schreiben Sie also in der Klasse Konto statt
einfach nur
Auch die Methode Konto::anzeigen sollte rein virtuell sein. Ändern Sie diese Methode entsprechend. Die Methode auszahlen in der Klasse Konto sollte nur dann eine Auszahlung machen, wenn dies erlaubt ist.
Die hier angenommene Methode darfAuszahlen ist natürlich wieder rein virtuell, denn die Klasse Konto kann alleine nicht entscheiden, ob eine Auszahlung möglich ist. Das müssen die Unterklassen Girokonto und Sparkonto erledigen. ÜbungVervollständigen Sie die Klassen Konto und Girokonto und erstellen Sie eine dazu passende Klasse Sparkonto. Das Sparkonto soll zum Jahresabschluß 10% Zinsen auf den aktuellen Kontostand geben. Das folgende Programm soll damit fehlerfrei laufen:
Die korrekte Ausgabe lautet: Auszahlung nicht moeglich! Kontostand: -120 Ueberziehungsrahmen: 1000 Auszahlung nicht moeglich! Kontostand: 120 Zinssatz: 10 Einsendungen:LösungFalls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern. [aktuelle Version] [inhalt] [index] [Fehlerkorrektur, Verbesserungsvorschlag] © Volkard Henkel <volkard@normannia.de>, last update: 08/25/00 |