|
UML Überladen
und Platzhalter |
|
Erklärung |
|
|
Überladen von Methoden
-
Die abgeleitete Klasse kann Methoden der Basisklasse überschreiben
(neu definieren). Dabei muss nur die Definition gleich bleiben, also gleicher
Returnwert und gleiche Parameter. Die Innerefunktion kann frei geändert
werden.
-
Beim Überladen sollte immer darauf geachtet werden, dass die Funktion
noch das macht, was der Name der Funktion suggeriert! Dies kann sonst zu
schweren Missverständnissen führen (die abgeleitete Klasse
ändert oder missachtet die Spezifikation der Methode).
Interfaces / Platzhalter
-
Wenn eine Basisklasse so definiert ist, dass sie weitere Eigenschaften
einer abgeleiteten Klasse benötigt (die Basisklasse kennt aber die
Ableitung nicht), so können Platzhalter definiert werden.
-
Die Platzhalter werden in C++ als virtual und in Java als abstract
definiert.
abstract public String leseFirmenName();
-
Enthält die Klasse Platzhalter, so ist die Klasse unvollständig
und es können keine Objekte dieser Klasse erzeugt werden. Deshalb
wird die ganze Klasse als abstract deklariert. UML zeigt diese Klassen
in Kursivschrift.
-
Links implementiert die Klasse "AngestellterBeiPVS" die fehlende Methode,
damit sind alle abstraktgen Teile der Klasse "Angestellte" implementiert
und es können Objekte von AngestellterBeiPVS erzeugt werden.
|
|
|
-
JAVA bietet echte Interfaces, dafür keine Mehrfachvererbung wie C++.
-
Interfaces können von anderen Interfaces abgeleitet werden - nicht
jedoch von Klassen.
-
Ein Interface kann als "Spezifikation" angesehen werden. Diese Methoden
muss die implementierende Klasse umsetzen um das Interface zu erfüllen.
-
Interfaces sind nützlich um im Beispiel eine generische Druckfunktion
zu realisieren. Diese kennt nur das Interface "DruckeGehaltszettel" und
dessen einzige Methode "druckeGehaltszettel". Angenommen es existieren
viele Klassen AngestellterBeiXY1..n so kann die Druckfunktion übergreifend
realisiert werden.
DruckeGehaltszettel a =
new AngestellterBeiXY("Mr. Ich");
a.druckeGehaltszettel();
|
|
|
|
|