Beispielprogramm: SCHACHT.CPP
Das Programm SCHACHT.CPP zeigt uns das Schachteln von Klassen, was zu einem Schachteln von Objekten wird. Verschachtelte Objekte können zum Beispiel ganz einfach durch Deinen Computer versinnbildlicht werden. Der Computer selbst besteht aus vielen Teilen, die zusammen, aber doch jeder für sich arbeiten, wie etwa eine Maus, ein Laufwerk oder ein Transformator. Der Computer ist aus diesen so verschiedenen Teilen zusammengesetzt und es ist nur sinnvoll, die Maus getrennt vom Transformator zu betrachten, einfach weil sie so verschieden sind. Eine Klasse für Computer könnte also aus sehr verschiedenen Objekten bestehen, indem die einzelnen Objekte in der Klasse enthalten sind.
Wenn wir aber, zum Beispiel, die Charakteristika von Laufwerken betrachten wollen, werden wir uns zunächst ansehen, was ein Laufwerk generell ausmacht, dann die Eigenheiten einer Festplatte und jene eines CD-ROM Laufwerkes. Das führt zu einer gewissen Vererbung, da viele Daten über die beiden Laufwerke generalisiert und dem Typ "Laufwerk" zugewiesen werden können. Wir werden die Vererbung in den nächsten drei Kapiteln noch eingehend studieren, nun aber wollen wir uns geschachtelten Klassen widmen.

Das Beispielprogramm enthält eine Klasse mit dem Namen Box, die wiederum ein Objekt einer anderen Klasse mit dem Namen PostInfo enthält, das wir in Zeile 17 einfügen. Das stellen wir in Bild 6-3 graphisch dar. Dieses Objekt ist nur innerhalb der Implementation von Box verfügbar, denn dort wurde es ja definiert. Die Funktion main() definiert Objekte der Klasse Box, aber keine der Klasse PostInfo, wir können uns also innerhalb dieser Funktion auf diese Klasse nicht beziehen. In unserem Fall ist die Klasse PostInfo dazu da, von der Klasse Box intern verwendet zu werden, wofür wir in Zeile 22 ein Beispiel geben: Wir senden eine Nachricht an die Methode Etikett.Setze(), um die Variablen zu initialisieren. Zusätzliche Methoden können je nach Bedarf verwendet werden, wir haben nur Beispiele für die Verwendung gegeben.
Wichtig ist, daß wir im Hauptprogramm kein Objekt der Klasse PostInfo deklarieren, sondern solche bei der Deklaration von Objekten der Klasse Box implizit deklarieren. Natürlich könnten wir auch im Hauptprogramm je nach Bedarf Objekte der Klasse PostInfo deklarieren, wir tun das aber in diesem Beispielprogramm nicht. Um die Sache zu komplettieren, sollte die Klasse Box eine oder mehrere Methoden haben, mit denen die Informationen, die im Objekt der Klasse PostInfo gespeichert sind, verwendet werden können. Schau Dir dieses Programm an, bis Du das neue Konstrukt verstanden hast, kompilieren Sie es und führe es aus. (Kino diesmal?)
Wenn die Klasse und die in sie geschachtelte Klasse Parameter für ihre jeweiligen Konstruktoren benötigen, kann man eine Initialisierungsliste verwenden. Das werden wir später in dieser Einführung diskutieren.
Copyright © 1997, 1998, 2001-2006 Heinz Tschabitscher - Letzte Änderung 13. Dezember 2005
Heinz Tschabitscher - | Datenschutz | Impressum - Kommentare, Kritik, Anregungen, Erklärungen?