0% fanden dieses Dokument nützlich (0 Abstimmungen)
6 Ansichten13 Seiten

Interfaces Java

Das Dokument erläutert die Verwendung von Interfaces in der Programmierung, insbesondere in Java, um gemeinsames Verhalten zu definieren und Mehrfachvererbung zu ermöglichen. Es wird erklärt, dass Interfaces als Verträge fungieren, die Fähigkeiten definieren, die Klassen implementieren müssen, ohne die Funktionalität direkt zu vererben. Zudem werden Entwurfsrichtlinien für die Entscheidung zwischen der Verwendung von Interfaces und abstrakten Klassen vorgestellt.

Hochgeladen von

bzb0z6c5m
Copyright
© All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
6 Ansichten13 Seiten

Interfaces Java

Das Dokument erläutert die Verwendung von Interfaces in der Programmierung, insbesondere in Java, um gemeinsames Verhalten zu definieren und Mehrfachvererbung zu ermöglichen. Es wird erklärt, dass Interfaces als Verträge fungieren, die Fähigkeiten definieren, die Klassen implementieren müssen, ohne die Funktionalität direkt zu vererben. Zudem werden Entwurfsrichtlinien für die Entscheidung zwischen der Verwendung von Interfaces und abstrakten Klassen vorgestellt.

Hochgeladen von

bzb0z6c5m
Copyright
© All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen

SEW Interfaces Seite 1

Warum Interfaces?

Was fällt auf?

Vergleiche Klasse
TrekkingBicycle und
LoadBicylce
(Lastenfahrrad)

(Cadence =>
Trittgeschwindigkeit)

SEW Interfaces Seite 2


Lösungsidee mit Interface

SEW Interfaces Seite 3


Warum Interfaces ?
 Bisher haben wir gemeinsames Verhalten nur
über Vererbung definiert:
 Klassen haben gemeinsame Basisklasse
 Alle abgeleiteten Klassen müssen Verhalten
aufweisen
 Beispiel: Eine abstrakte Methode Draw() wird in einer
übergeordneten (abstrakten) Klasse Shape definiert. Alle
abgeleiteten Klassen müssen Draw implementieren.
 Andere Klassen können nicht verwendet
werden
 Text kann gezeichnet werden, ist aber keine Figur (Shape).
 Jede Klasse kann in Java nur eine Basisklasse
haben (Mehrfachvererbung in Java nicht möglich)
 [Link]

SEW Interfaces Seite 4


Interfaces definieren Fähigkeiten

 Gemeinsames Verhalten mittels Interfaces:


 Definiert Fähigkeiten, die ein Objekt der
Klassen haben muss
 Interfaces stellen „Verträge“ dar:
 Neue Beziehung „is able to“
 Beispiele: comparable, sortable, …
 Ersatz für Mehrfachvererbung
=> Eine Klasse kann mehrere Interfaces
implementieren.

SEW Interfaces Seite 5


„Mehrfachvererbung“ mit Interfaces

 Eine Klasse kann mehrere Interfaces implementieren.

 Jedoch ist keine Vererbung von Funktionalität möglich,


da in Interfaces nur die Signatur (z.B. von Methoden)
festgelegt wird.

 Die Methoden eines Interfaces sind alle abstract.

 Die Implementierung muss in den einzelnen Klassen


durchgeführt werden.
=> Codeverdopplung wird dadurch nicht verhindert.

SEW Interfaces Seite 6


Interfaces (Schnittstellen)

 Eine Schnittstelle ähnelt einer abstrakten Basisklasse: Jeder nicht


abstrakte Typ, der die Schnittstelle implementiert, muss alle ihre
Member (= Methodenköpfe) implementieren.
 Eine Schnittstelle kann nicht direkt instanziiert werden.
Eine Variable davon kann aber schon angelegt werden!
 Schnittstellen enthalten Methodenköpfe (=Methoden-Signaturen).
 Schnittstellen enthalten keine Implementierung von Methoden.
 Schnittstellen enthalten keine Konstruktoren.
 Klassen und Strukturen können mehr als eine Schnittstelle
implementieren.
 Eine Schnittstelle selbst kann von mehreren Schnittstellen „erben“
 Die Schnittstelle erweitert die Verträge der Basisschnittstellen
 Eine Schnittstelle kann keine Konstanten, Felder (Objekt- und
Klassenvariablen) enthalten.
 Schnittstellenmember sind automatisch öffentlich und brauchen keinen
public Zugriffsmodifizierer.

SEW Interfaces Seite 7


Interfaces - Formal
 Methoden eines Interfaces sind public abstract (automatisch)
 Klassen und Strukturen dürfen mehrere Interfaces implementieren
(bei der Implementierung kann override angegeben werden.)

Auch leere Setter/Getter sind möglich

SEW Interfaces Seite 8


Entwurfsrichtlinien Interface vs. Abstrakte Klasse

 Gilt die is_a-Beziehung => abstrakte Klasse


 Paint bei Figuren, die zu zeichnen sind

 Ist die Fähigkeit unabhängig von der Klassenhierarchie


sinnvoll => Interface
 Vergleichbarkeit, Sortierbarkeit, Aufzählbarkeit, …

 Ersatz für die Mehrfachvererbung


 Beispiel Sportstudent
 Student mit der Fähigkeit, Sport zu betreiben
 Sportler, der auch studiert

SEW Interfaces Seite 9


Bestehende Interfaces:

Universell einsetzbare sortierte Liste


 Liste von Datenelementen die vergleichbar sind
 Contract für Vergleichbarkeit existiert für DotNet(C#) und
Java bereits
 IComparable (C#) bzw. Comparable (Java ohne beginnenden „I“)
 Liste ist „Nutzer“ des Vertrags => kann den Vergleich
zum Sortieren verwenden

SEW Interfaces Seite 10


Interface Comparable<T>

 Ziel
 Alle sortierbaren Objekte beliebiger Klassen sollen in einer
sortierten Liste verwaltbar sein
 Sollen nicht von einer gemeinsamen Basisklasse abgeleitet
werden
 [Link]
 Interface Comparable definiert compareTo-Methode, die
zwei Objekte der betreffenden Klasse vergleicht
 Generische Variante ist typsicher
 Liefert Ergebnis

0 => gleich,

1 => this > other,

­1 => other > this

 Liste verlässt sich auf den Vertrag (Objekt ist vergleichbar)


SEW Interfaces Seite 11
Employee ist „comparable“

 Wird nach Gehalt verglichen

SEW Interfaces Seite 12


Employee ist „comparable“

 Wird nach Gehalt verglichen

SEW Interfaces Seite 13

Das könnte Ihnen auch gefallen