konkrete
Klasse
|
definiert internen Zustand
legt fest, wie etwas berechnet wird
|
| |
Typ
|
legt Schnittstelle fest
Aufrufkonvention
legt fest, wie etwas verwendet wird
|
| |
|
jede Klasse definiert aber auch einen Typ
|
| |
Klassenvererbung
|
Implementierung wird vererbt
und erweitert oder modifiziert
|
| |
Schnittstellenvererbung
|
nur Erweiterung von Typen
|
| |
Mehrfachvererbung
|
für Schnittstellen sehr nützlich (notwendig)
für Klassen zweifelhaft
|
| |
C++ und Eiffel
|
keine syntaktischen Unterschiede zwischen Klassen und Schnittstellen
|
| |
Java
|
class X { ... }
interface I { ... }
|
| |
Klassenvererbung
|
ermöglicht Wiederverwendung und Modifikation von Algorithmen und Datenstrukturen ohne
Kopieren von Quelltexten
|
| |
Schnittstellenvererbung
|
Das Beerben von abstrakten Klassen und Interfaces
ermöglicht die Implementierung von Familien von Objekten
mit identischen Schnittstellen
|
| |
identische Schnittstellen
|
|
|
gleichförmige Verarbeitung
|
|
keine Fallunterscheidungen
|
| |
richtige Vererbung
|
alle Unterklassen besitzen gleiche gemeinsame Schnittstelle
|
| |
|
Klienten wissen nichts über die interne Struktur der Objekte
kennen nur die Schnittstelle oder abstrakte Klasse
|
|
Implementierungsabhängigkeiten zwischen Subsystemen werden reduziert
|
| |
|
Referenzvariablen immer nur vom Typ einer abstrakten Klasse
|
|
Konstruktoraufrufe von konkreten Klassen immer indirekt
über erzeugende Funktionen
|
|
Erzeugungsmuster
|
| |
Beispiele |
|
| |