Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
c○ Prof. Dr. B. Bartning, HS <strong>Emden</strong>/<strong>Leer</strong> Rumpfskript ” Informatik I/II“ (WS/SS 2010/11) 126<br />
Darstellung der Vererbung in UML, vgl. (1.34a):<br />
Oberklasse<br />
❅<br />
Unterklasse<br />
Die Vererbung ist ein sehr mächtiges Instrument der Objekttechnologie. Die logische Beziehung<br />
von der Ober- zur Unterklasse ist eine Spezialisierung 〈specialization〉, die von<br />
der Unter- zur Oberklasse eine Generalisierung 〈generalization〉. Erst durch Einführung<br />
einer solchen Spezialisierungs- bzw. Generalisierungshierarchie wird es möglich, die reale<br />
Welt einfach zu modellieren. Es kommt der Eigenart des menschlichen Denkens sehr entgegen<br />
(Denken in Hierarchien), dass Beziehungen in Form solcher Abhängigkeiten formuliert<br />
werden können.<br />
(b) Eine Unterklasse kann wiederum Oberklasse für andere Klassen sein. Auf diese Weise wird<br />
eine Klassen-Vererbungshierarchie aufgebaut.<br />
(c) Die Modellierung kann sogar so weit gehen, dass Ähnlichkeiten zwischen Klassen (reale Welt:<br />
Mengen von gleichartigen Objekten) ausgelagert und für alle ähnliche Klassen gemeinsam<br />
formuliert werden, und zwar in der Art, dass es zu der gemeinsamen Klasse in der realen<br />
Welt keine Objekte gibt bzw. geben kann. Man spricht hierbei von einer sog. abstrakten<br />
Klasse 〈abstract class〉. Zur Unterscheidung davon nennt man eine Klasse, zu der Objekte<br />
erzeugt werden können, konkrete Klasse 〈concrete class〉. Zur Definition einer abstrakten<br />
Klasse in C ++ s. (11.43).<br />
Bsp Bei der Modellierung von Mann und Frau gibt es viele Gemeinsamkeiten (weite Teile der Anatomie, des<br />
Stoffwechsels usf.). Diese können ausgelagert werden in eine Klasse Mensch. Hiervon erben die Klassen<br />
Mann und Frau und fügen ihre geschlechtspezifischen Merkmale hinzu. In der realen Welt gibt es jedoch<br />
kein Objekt der Klasse Mensch, sondern immer nur Objekte der Klasse Mann oder Frau.<br />
(d) Man kann in der Modellierung auch eine sog. Mehrfachvererbung 〈multiple inheritance〉<br />
zulassen: hierbei erbt eine Unterklasse gleichzeitig die Eigenschaften von mehreren Oberklassen.<br />
Diese Art der Beziehung kann, sparsam eingesetzt, ein gutes Hilfsmittel zur Beschreibung<br />
der realen Welt sein.<br />
Bsp Ein Amphibienfahrzeug erbt die Bewegungsmöglichkeit auf dem Land vom Landfahrzeug, die auf dem<br />
Wasser vom Wasserfahrzeug.<br />
Nicht alle objektorientierten Sprachen unterstützen die Mehrfachvererbung. Die Sprache C ++<br />
unterstützt sie zwar; dennoch soll sie im Rahmen dieser Vorlesung nicht bespochen werden.<br />
Zur Unterschiedung von der Mehrfachvererbung nennt man die Vererbung von nur einer<br />
Oberklasse einfache Vererbung oder Einfachvererbung 〈single inheritance〉.<br />
(e) Ein weiteres mächtiges Werkzeug, bei den meisten Sprachen in Verbindung mit der Vererbung<br />
eingesetzt, ist die Polymorphie oder der Polymorphismus 〈polymorphism〉. Hierfür<br />
ist ein eigenes Unterkapitel eingerichtet (Kap. 11.4).<br />
(f) In der Sprache C ++ wird die Vererbung meist Ableitung 〈derivation〉 genannt. Man nennt<br />
hier die Oberklasse – ohne Bedeutungsveränderung – Basisklasse 〈base class〉, die Unterklasse<br />
abgeleitete Klasse 〈derived class〉.<br />
(11.32) Im Rahmen der Vererbung wird – zusätzlich zu private (verborgen) und public (öffentlich)<br />
(9.11a) und (Kap. 6.4) – ein dritter Zugriffsspezifizierer eingeführt: protected (geschützt). Er<br />
nimmt eine gewisse Mittelstellung zwischen verborgen und öffentlich ein:<br />
• Auf ein private-Element dürfen nur die Elementfunktionen der eigenen Klassen und<br />
Freunde (11.12) direkt zugreifen.<br />
• Auf ein protected-Element dürfen zusätzlich die Elementfunktionen von abgeleiteten<br />
Klassen und deren Freunde zugreifen.<br />
• Auf ein public-Element kann von überall zugegriffen werden.