Beispielprogramm: AUTO.H
Die Datei AUTO.H enthält
unser erstes Beispiel einer abgeleiteten- oder Kindklasse. Die Klasse
Vehikel wird durch :public Vehikel in Zeile 7 ererbt. Die abgeleitete
Klasse Auto besteht aus allen Elementen der Basisklasse
Vehikel und allen ihren eigenen Elementen. Obwohl wir an
der Klasse mit dem Namen Vehikel nichts verändert
haben, wurde sie zur Basisklasse allein durch die Art und Weise, wie
wir sie hier verwenden. Obzwar sie hier als Basisklasse eingesetzt
wird, gibt es keinen Grund, sie nicht weiterhin auch als ganz normale
Klasse zu verwenden wie etwa im vorigen Beispielprogramm. Sie kann in
ein und demselben Programm als Basisklasse und als einfache Klasse
auftreten. Über die Frage, ob es sich um eine Basisklasse oder
eine einfache Klasse handelt, entscheidet allein die Verwendung.
Wir müssen uns wieder ein wenig der Terminologie widmen. Im objektorientierten Programmieren wird eine Klasse, die von einer anderen Elemente erbt, generell abgeleitete Klasse oder Kindklasse genannt, in C++ spricht man meist von einer abgeleiteten Klasse. Da die beiden Ausdrücke recht bildhaft sind und sie meist austauschbar verwendet werden, werden auch wir in dieser Einführung beide gebrauchen. So ist der "richtige" Ausdruck für die Klasse, von der geerbt wird, in C++ Basisklasse, aber auch Elternklasse oder Superklasse können verwendet werden.
Eine Basisklasse ist eine recht generelle Klasse, die ein breites Spektrum an Objekten umfaßt, wogegen eine abgeleitete Klasse etwas spezieller und eingeengter, dafür aber auch nützlicher ist. Nehmen wir zum Beispiel an, wir hätten eine Basisklasse mit dem Namen Programmiersprache und eine abgeleitete Klasse mit dem Namen C++. Mit der Basisklasse könnten wir Pascal, Ada, C++ oder jede andere Programmiersprache definieren, sie könnte uns aber keine Auskunft darüber geben, wie Klassen in C++ verwendet werden, da sie von jeder Programmiersprache nur ein allgemeines Bild vermittelt. Die abgeleitete Klasse C++ hingegen könnte die Verwendung von Klassen definieren, nicht jedoch eine der anderen Programmiersprachen, da sie dafür zu eingeengt ist. Eine Basisklasse ist genereller, eine abgeleitete Klasse spezieller.
Im Fall unseres Beispielprogrammes kann die Basisklasse Vehikel verwendet werden, um so unterschiedliche Objekte wie Lastwägen, Autos, Fahrräder oder jedes andere Vehikel zu deklarieren. Mit der Klasse Auto hingegen können wir nur Objekte deklarieren, die auch Autos sind, da wir die Informationen, die mit dieser Klasse verwendet werden können, eingeschränkt haben. Deshalb ist die Klasse Auto spezieller und eingeschränkter als die Klasse Vehikel. Die Vehikel Klasse ist umfassender.
Wenn wir eine noch spezieller Klasse wollen, können wir Auto als Basisklasse verwenden um eine Klasse mit dem Namen Sportauto zu deklarieren und Informationen wie etwa Hoechstgeschwindigkeit oder Manta? inkludieren, Informationen also, die für ein normales Auto nicht wirklich von Belang sind. Die Klasse Auto würde dann zur selben Zeit als abgeleitete Klasse und als Basisklasse fungieren, womit klar sein sollte, daß diese Ausdrücke sich nur darauf beziehen, wie eine Klasse verwendet wird.
Copyright © 1997, 1998, 2001-2006 Heinz Tschabitscher - Letzte Änderung 15. Dezember 2005
Heinz Tschabitscher - | Datenschutz | Impressum - Kommentare, Kritik, Anregungen, Fragen?