Schnittstellen: Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K (Siehe auch)
K
Zeile 2: Zeile 2:
 
==Das Konzept der Schnittstellen in der Programmierung mit Java==
 
==Das Konzept der Schnittstellen in der Programmierung mit Java==
  
Schnittstellen sind die Verbindung eines Objektes zum Benutzercode. Dieser kann dann zu den Schnittstellen programmieren, ohne sich um die versteckte Implementierung des Objekts kümmern zu müssen:
+
[[Interface|Schnittstellen]] sind die Verbindung eines [[Objekt|Objektes]] zum Benutzercode. Dieser kann dann zu den Schnittstellen programmieren, ohne sich um die versteckte [[Implementierung]] des Objekts kümmern zu müssen:
  
 
[[Datei:Schnittstellen.JPG]]
 
[[Datei:Schnittstellen.JPG]]
  
In [[Java|Java]] gibt es '''[[Methode_(Java)#abstrakte_Methoden|abstrakte Methoden]]''', mit denen wir die Schnittstellen von ihrer Implementierung trennen können. Eine abstrakte Methode ist ein Methodenkopf ohne Rumpf. Sie wird mit "public/protected abstract" gekennzeichnet und kann in einem [[Interface_(Java)|Interface]] oder in einer [[abstrakte_Klasse_(Java)|abstrakten Basisklasse]] deklariert werden. Das Interface (oder die abstrakte Basisklasse) stellt dann seinerseits einen '''abstrakten Obertyp''' dar. Beispiel:
+
In [[Java|Java]] gibt es '''[[Methode_(Java)#abstrakte_Methoden|abstrakte Methoden]]''', mit denen wir die Schnittstellen von ihrer Implementierung trennen können. Eine abstrakte [[Methode]] ist ein Methodenkopf ohne Rumpf. Sie wird mit "public/protected abstract" gekennzeichnet und kann in einem [[Interface_(Java)|Interface]] oder in einer [[abstrakte_Klasse_(Java)|abstrakten Basisklasse]] deklariert werden. Das Interface (oder die abstrakte Basisklasse) stellt dann seinerseits einen '''abstrakten Obertyp''' dar. Beispiel:
  
 
[[Datei:Paintable.JPG]]
 
[[Datei:Paintable.JPG]]
  
Wenn der deklarierte Typ einer Variablen vom abstrakten Obertyp ist, können wir seine '''Polymorphie''' nutzen, ohne uns um die konkreten Untertypen kümmern zu müssen. Die Objekte, die der Variablen zur Laufzeit zugewiesenen werden, können von irgendeinem Untertyp sein, über den der Benutzercode nichts wissen muss:
+
Wenn der [[Deklaration|deklarierte]] Typ einer [[Variable|Variablen]] vom abstrakten Obertyp ist, können wir seine '''[[Polymorphie]]''' nutzen, ohne uns um die konkreten Untertypen kümmern zu müssen. Die Objekte, die der Variablen zur Laufzeit zugewiesenen werden, können von irgendeinem Untertyp sein, über den der Benutzercode nichts wissen muss:
  
 
[[Datei:Benutzercode.JPG]]
 
[[Datei:Benutzercode.JPG]]
Zeile 18: Zeile 18:
 
==Sprachgebrauch==
 
==Sprachgebrauch==
  
Das Wort '''Schnittstelle''' ist im Java-Sprachgebrauch überladen. Im vorliegenden Artikel hat es die Bedeutung von '''abstrakte Methode'''. Daneben wird es aber auch oft als deutsche Übersetzung für das Java-Konstrukt '''interface''' benutzt. Einerseits macht das Sinn, da ein "interface" ja abstrakte Methoden enthält, andererseits passt es aber nur bedingt, weil eine '''abstrakte Basisklasse''' ebenfalls abstrakte Methoden enthält. Im vorliegenden Artikel werden deshalb die Begriffe "interface" und "abstrakte Basisklasse" unter dem allgemeineren Begriff '''abstrakter Obertyp''' zusammengefasst. Der Begriff "abstrakter Obertyp" bietet zudem eine ideale Überleitung zur '''Polymorphie''', die ja die Beziehungen zwischen Ober- und Untertypen beschreibt.
+
Das Wort '''Schnittstelle''' ist im Java-Sprachgebrauch [[überladen]]. Im vorliegenden Artikel hat es die Bedeutung von '''abstrakte Methode'''. Daneben wird es aber auch oft als deutsche Übersetzung für das Java-Konstrukt '''interface''' benutzt. Einerseits macht das Sinn, da ein "interface" ja abstrakte Methoden enthält, andererseits passt es aber nur bedingt, weil eine '''abstrakte Basisklasse''' ebenfalls abstrakte Methoden enthält. Im vorliegenden Artikel werden deshalb die Begriffe "interface" und "abstrakte Basisklasse" unter dem allgemeineren Begriff '''abstrakter Obertyp''' zusammengefasst. Der Begriff "abstrakter Obertyp" bietet zudem eine ideale Überleitung zur '''Polymorphie''', die ja die Beziehungen zwischen Ober- und Untertypen beschreibt.
  
 
==Siehe auch==
 
==Siehe auch==

Version vom 6. Februar 2018, 22:55 Uhr

Das Konzept der Schnittstellen in der Programmierung mit Java

Schnittstellen sind die Verbindung eines Objektes zum Benutzercode. Dieser kann dann zu den Schnittstellen programmieren, ohne sich um die versteckte Implementierung des Objekts kümmern zu müssen:

Schnittstellen.JPG

In Java gibt es abstrakte Methoden, mit denen wir die Schnittstellen von ihrer Implementierung trennen können. Eine abstrakte Methode ist ein Methodenkopf ohne Rumpf. Sie wird mit "public/protected abstract" gekennzeichnet und kann in einem Interface oder in einer abstrakten Basisklasse deklariert werden. Das Interface (oder die abstrakte Basisklasse) stellt dann seinerseits einen abstrakten Obertyp dar. Beispiel:

Paintable.JPG

Wenn der deklarierte Typ einer Variablen vom abstrakten Obertyp ist, können wir seine Polymorphie nutzen, ohne uns um die konkreten Untertypen kümmern zu müssen. Die Objekte, die der Variablen zur Laufzeit zugewiesenen werden, können von irgendeinem Untertyp sein, über den der Benutzercode nichts wissen muss:

Benutzercode.JPG

In Java hängt das Konzept der Schnittstellen also eng zusammen mit den Begriffen abstrakte Methode, abstrakter Obertyp (Interface oder abstrakte Basisklasse) und Polymorphie. Es ermöglicht das Programmieren zu den Schnittstellen, ohne Festlegung von konkreten Implementierungen. Dadurch ist der Benutzercode weniger anfällig für Veränderungen in den Einzelheiten der Implementierung.

Sprachgebrauch

Das Wort Schnittstelle ist im Java-Sprachgebrauch überladen. Im vorliegenden Artikel hat es die Bedeutung von abstrakte Methode. Daneben wird es aber auch oft als deutsche Übersetzung für das Java-Konstrukt interface benutzt. Einerseits macht das Sinn, da ein "interface" ja abstrakte Methoden enthält, andererseits passt es aber nur bedingt, weil eine abstrakte Basisklasse ebenfalls abstrakte Methoden enthält. Im vorliegenden Artikel werden deshalb die Begriffe "interface" und "abstrakte Basisklasse" unter dem allgemeineren Begriff abstrakter Obertyp zusammengefasst. Der Begriff "abstrakter Obertyp" bietet zudem eine ideale Überleitung zur Polymorphie, die ja die Beziehungen zwischen Ober- und Untertypen beschreibt.

Siehe auch

. Dort wird als Beispiel der abstrakte Obertyp "Buyable" als "interface" vorgestellt, welches die abstrakte Methode public int getPrice(); beinhaltet. Nach dem Prinzip der Polymorphie, sind alle konkreten Untertypen (zum Beispiel Computer, Auto, Bier, Apfel, Hund, ...) im abstrakten Obertyp "Buyable" gekapselt. Aus diesem Grund wird der abstrakte Obertyp in diesem Beitrag mit einer Schablone veranschaulicht, welche an einer bestimmten Stelle einen Ausschnitt (Loch) hat: über ein Objekt gelegt, macht sie an dieser Schnittstelle die abstrakte Methode sichtbar und versteckt alles andere.