Java Reference
In-Depth Information
Die statische Vererbung ist ein Beispiel dafür, dass der Quellcode einer Klasse zwar
geschlossen gegenüber Veränderungen aber dennoch offen für Erweiterungen ist. Bei
der Anwendung des liskovschen Substitutionsprinzips wird der lauffähige Code einer
Klasse nicht verändert, trotzdem ist die Klasse erweiterbar, da die Referenzen auf Ob-
jekte von Klassen zeigen können, die es zum Zeitpunkt der Erstellung des Quellcodes
noch gar nicht gab.
Im Falle eines Entwurfs bzw. einer Spezifikation eines Moduls bedeutet die Geschlos-
senheit, dass das Modul offiziell abgenommen ist und selbst als wiederverwendbarer
Baustein zur Verfügung steht.
Durch die Geschlossenheit von Spezifikationen gegenüber
Veränderungen wird ihr Inhalt stabil und selbst wieder verwend-
bar. Durch die Offenheit von Spezifikationen gewinnt man ihre
Wiederverwendbarkeit als Teil eines neuen Moduls.
Beispiel:
Im folgenden Beispiel symbolisiert die abstrakte Basisklasse GrafischesElement
ein Framework, das nicht verändert, aber erweitert werden kann. Geschlossen
(closed) ist der Quellcode der abstrakten Basisklasse GrafischesElement . Eine Er-
weiterung dieser Basisklasse erfolgt in den abgeleiteten Klassen Dreieck und Vier-
eck , die anschließend von einem grafischen Editor verwendet werden sollen.
Jedes grafische Element weist bestimmte Eigenschaften und Methoden auf, die in
ihrer Funktionsweise unabhängig von der Ausprägung des Elementes sind. Dazu zählt
z. B. die Schwerpunktskoordinate eines Elements und die zugehörigen Verschie-
bungsmethoden für den Schwerpunkt. Im Gegensatz dazu gibt es Methoden, die von
den abgeleiteten Klassen selbst implementiert werden müssen - beispielsweise die
Darstellungsroutine.
Die für die abgeleiteten Klassen invarianten Anteile werden in der Klasse Grafi-
schesElement abgebildet. Diese Basisklasse kann sowohl die von allen Elementen
in gleicher Weise genutzten Methoden und Eigenschaften kapseln, als auch Metho-
denköpfe als Vorgabe für die Implementierung der abgeleiteten Klassen vorweisen.
Aufgrund der Abstraktheit der Methodenköpfe ist diese Basisklasse abstrakt. Daher
kann keine Instanz von ihr gebildet werden. Außerdem müssen die von allen Elemen-
ten genutzten Methoden vor Veränderungen - beispielsweise durch Überschreiben -
geschützt werden. Diese Methoden werden in UML leaf -Methoden genannt und wer-
den in Java durch das Schlüsselwort final deklariert.
In Bild 1-9 ist ein Beispiel für die Modellierung der Vererbungshierarchie dargestellt:
Search WWH ::




Custom Search