Axel Rogat
Objektorientiertes Programmieren mit C++ und JAVA
 
16.3: Generizitä: Beispiele Kapitel 17 17.2: Ein erstes Beispiel 
 
  17.1 Einführung  
 

Nachdem wir schon mehrfach über das Konzept der Vererbung allgemein gesprochen haben, wenden wir uns in diesem Kapitel ihrer Realisierung in C++ zu.

Wenn zwei oder mehrere Mengen (Klassen) gemeinsame Eigenschaften haben, sollte man diese abstrahieren und als eigenes Konzept formulieren. Nicht nur spart man sich dadurch die mehrfache Implementation; es werden so konsistente und einheitliche Schnittstellen geschaffen, die die Sicherheit und Erweiterbarkeit der Programme unterstützen.

Klassen entstehen durch die Abstraktion ähnlicher Verhaltensweisen von Objekten; Oberklassen entstehen durch die Abstraktion ähnlicher Verhaltensweisen von Unterklassen.

Beispiel: Unser Beispiel aus Kapitel 1.1 beschäftigte sich mit geometrischen Figuren (z.B. für Computergrafik). Ein Quadrat ist ein spezielles Rechteck, und deshalb könnte man eine Klasse für Quadrate von einer Klasse für Rechtecke ableiten.

Es ist Geschmackssache, in welcher Richtung in solchen Diagrammen die Pfeile laufen. Die Unterklassen können als Teilmenge der Oberklasse aufgefaßt werden, so daß auch eine solche Pfeilrichtung Sinn macht. Der Ableitungsvorgang verläuft allerdings gerade umgekehrt, und so wollen wir unsere Pfeile auch zeichnen.

Wir abstrahieren noch weiter und fassen ein Rechteck als Viereck auf -- Transformationen von Vierecken, die die rechten Winkel nicht erhalten, müssen wir dazu bei Rechtecken unterbinden (es wäre noch "Parallelogramm" als Zwischenstufe denkbar). In einer weiteren Stufe nach oben fassen wir Drei- und Vierecke allgemeiner als Polygone auf.

In diesem Fall wäre es möglich, daß gar keine Datenmember hinzugefügt werden; die Eckpunkte könnten als (dynamisch angelegtes) Array bereits in "Polygon" festgelegt sein. Dafür sind die Operationen in den abgeleiteten Klassen eventuell nicht so effizient, als wären dort lokal nur die drei, bzw. vier benötigten Punkte abgelegt.

 
16.3: Generizitä: Beispiele Startseite 17.2: Ein erstes Beispiel 
 

© 1998 Axel Rogat