07.10.2013 Aufrufe

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!