About SW-Quality Safety SW-Entwicklung UML Nachschlagen Programme
UML Basics
UML Diagramme
UML Tools
UML Interna
Class Vererbung1
Vererbung2
Überladung/Platzhalter
Interface
Beispiel
Association
Association2
Association3
Association4
Component
Package
Abhängigkeiten
Stereotypes/Tagged Values
 
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();

     
©; created Mon Aug 07 22:31:53 CEST 2006; eMail