homedukeOOP mit Java: Klassen, Schnittstellen und Typen Prof. Dr. Uwe Schmidt FH Wedel

Klassen, Schnittstellen und Typen

weiter

weiter

Schnittstellen

Signatur
einer Operation besteht aus
 
Name + Anzahl und Typen der Parameter + Typ des Resultats
weiter
Schnittstelle
eine Menge von Signaturen für die Operationen
weiter
Typ
ein Name für eine Schnittstelle
weiter
interface
Ein interface in Java definiert genau eine Schnittstelle
weiter
merke
ein Objekt kann viele Schnittstellen besitzen
weiter
ein Objekt kann viele Typen besitzen
merke
sehr unterschiedliche Objekte können gleiche Schnittstellen besitzen
weiter
Subtyp
ein Typ ist ein Subtyp eines anderen Typs, des Supertyps, wenn seine Schnittstelle die des Supertyps enthält
weiter
merke
Die Supertyp-Subtyp-Beziehung wird durch Vererbung spezifiziert
weiter
in Java
extends und implements werden hierfür als Schlüsselwörter genutzt
weiter
 
Interfaces, abstrakte Klassen, konkrete Klassen definieren eine Schnittstelle
weiter
 
Interfaces, abstrakte Klassen, konkrete Klassen definieren einen Typ
weiter
merke
ein Objekt hat im allgemeinen mehrere Schnittstellen
merke
einer Referenzvariablen ist genau ein Typ, eine Schnittstelle zugeordnet
 
class X {...}
interface I {...}
interface J extends I {...}
interface K extends I {...}
class Y extends X implements JK {...}
Polymorphie
Vielgestaltigkeit
einer Signatur sind in unterschiedlichen Klassen unterschiedliche Methoden zugeordnet
weiter
dynamisches Binden
(nächstes Kapitel)
berechnet die zu einer Signatur gehörige Methode zur Laufzeit aus der Art des Objekts
weiter

weiter

Unterschied: Klasse <--> Typ

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

Letzte Änderung: 19.05.2014
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel