Lektion 77:Eine Bankkonten-VerwaltungGanz so einfach ist die Vererbung nicht. Am Beispiel einer Verwaltung für Bankkonten werden die wesentlichen Details eingeführt.
TODO: ab hier bearbeiten Es soll zwei Unterklassen von Konten geben:
Der Compiler meldet die Fehlermeldung ==> error : 'kontostand' : undeclared identifier Offensichtlich kennt die Klasse Girokonto das Attribut kontostand nicht. Das liegt daran, daß ich zwar angenommen habe, daß Girokonto von Konto erbt, aber ganz vergessen habe, es dem Compiler zu sagen.
Der Compiler meldet die Fehlermeldung ==> error : 'kontostand' : cannot access private member declared in class 'Konto' Jetzt kennt die Klasse das Attribut. Leider darf sie nicht darauf zugreifen. Das Attribut kontostand wurde in der Klasse Konto als private deklariert. Das heißt, daß nur Methoden aus der Klasse Konto darauf zugreifen können. Um zu erlauben, daß Methoden aus den Unterklassen auch darauf zugreifen können, könnte man es einfach public machen. Doch das ist zu gefährlich, weil dann auch jede andere Funktion darauf zugreifen könnte.
Es gibt aber noch etwas zwischen private und public. Attribute und Methden, die protected deklariert werden, sind nur für die eigene Klasse und alle Unterklassen sichtbar.
Das folgende Programm funktioniert bereits:
Damit die Kontodaten hübsch zusammen mit dem Namen des Kontoinhabers angezeigt werden, wird eine eigene Funktion geschrieben.
Ein Probelauf des Programmes ergibt, daß es nicht wunschgemäß funktioniert. Der Überziehungsrahmen von Wolframs Konto wird nicht angezeigt. Das liegt daran, daß die Variable kto gar keinen Überziehungsrahmen kennt. Beim Übergeben der Variablen g an die Variable kto wurde einfach alles, was ein Konto nicht hat, abgeschnitten. Dieses Abschneiden wird verhindert, indem ein Zeiger übergeben wird. Wie lang die Daten sind, auf die ein Zeiger zeigt, ist ja unerheblich.
Eine recht merkwürdige Besonderheit von C++ sorgt dafür, daß es immer noch nicht geht. Doch dazu in der nächsten Lektion. Falls 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 |