K (Interfaces)
K (Interfaces)
Zeile 1: Zeile 1:
 
== Interfaces ==
 
== Interfaces ==
 
[[Datei:Interfaces.png|mini|Interfaces der Edu Variante]]
 
  
 
Ein Interface gleicht im Prinzip einer Super-Klasse, von der man erben kann. Der Unterschied zur Super-Klasse besteht darin, dass - vereinfacht gesagt - bei einem Interface nur Methoden vererbt werden wohingegen eine Super-Klasse auch Attribute vererben kann. Bei Super-Klassen erbt man mit dem Schlüsselwort <code>extends</code> wohingegen man von einem Interface mit dem Schlüsselwort '''<code>implements</code>''' erbt. Sehr oft sind die Methoden eines Interfaces nur Signaturen, das heißt Methoden-Köpfe ohne Rumpf. Der Rumpf wird erst in der Sub-Klasse implementiert. Man spricht dann von '''überschreiben der Methode'''. Meist gibt ein Interface eine Funktionalität vor und in der Sub-Klasse kann man frei entscheiden, wie auf diese Funktionalität konkret reagiert werden kann.
 
Ein Interface gleicht im Prinzip einer Super-Klasse, von der man erben kann. Der Unterschied zur Super-Klasse besteht darin, dass - vereinfacht gesagt - bei einem Interface nur Methoden vererbt werden wohingegen eine Super-Klasse auch Attribute vererben kann. Bei Super-Klassen erbt man mit dem Schlüsselwort <code>extends</code> wohingegen man von einem Interface mit dem Schlüsselwort '''<code>implements</code>''' erbt. Sehr oft sind die Methoden eines Interfaces nur Signaturen, das heißt Methoden-Köpfe ohne Rumpf. Der Rumpf wird erst in der Sub-Klasse implementiert. Man spricht dann von '''überschreiben der Methode'''. Meist gibt ein Interface eine Funktionalität vor und in der Sub-Klasse kann man frei entscheiden, wie auf diese Funktionalität konkret reagiert werden kann.
Zeile 7: Zeile 5:
 
In der Edu-Variante der Engine-Alpha gibt es
 
In der Edu-Variante der Engine-Alpha gibt es
  
* das '''Interface <code>TastenReagierbar</code>''' mit den '''Methoden <code>tasteReagieren( int taste )</code> , <code>tasteLosgelassenReagieren( int taste )</code> , <code>istTasteGedrueckt( int taste )</code>'''. <br>''Damit kann jede deiner Klasse auf Tastatur-Ereignisse reagieren.''
+
[[Datei:Interfaces.png|mini|Interfaces der Edu Variante]]
 +
 
 +
* das '''Interface <code>TastenReagierbar</code>''' mit den '''Methoden <br>
 +
<source lang="Java">public void tasteReagieren( int taste )</source>
 +
<source lang="Java">public void tasteLosgelassenReagieren( int taste )</source>
 +
<source lang="Java">public boolean istTasteGedrueckt( int taste )</source>'''
  
* das '''Interface <code>Ticker</code>''' mit der '''Methode <code>tick()</code>'''. <br>''Damit können Aufgaben in gleichen Zeitintervallen wiederholt werden.''
+
* das '''Interface <code>Ticker</code>''' mit der '''Methode  
 +
<source lang="Java">public void tick()</source>'''
  
* das '''Interface <code>MausklickReagierbar</code>''' mit den '''Methoden <code>klickReagieren( double x , double y )</code> , <code>klickLosgelassenReagieren( double x , double y )</code>'''. <br>''Damit kann jede deiner Klasse auf Maus-Klicks reagieren.''
+
* das '''Interface <code>MausklickReagierbar</code>''' mit den '''Methoden  
 +
<source lang="Java">public void klickReagieren( double x , double y )</source>
 +
<source lang="Java">public void klickLosgelassenReagieren( double x , double y )</source>'''
  
* das '''Interface <code>MausradReagierbar</code>''' mit der '''Methode <code>tasteReagieren( int zaehler )</code>'''. <br>''Damit kann jede deiner Klasse auf Mausrad-Ereignisse reagieren.''
+
* das '''Interface <code>MausradReagierbar</code>''' mit der '''Methode  
 +
<source lang="Java">public void tasteReagieren( int zaehler )</source>'''
  
* das '''Interface <code>BildAktualisierungReagierbar</code>''' mit der '''Methode <code>bildAktualisierungReagieren( double zeitIntervall )</code>'''. <br>''Damit kann jedes Objekt deiner Klasse im Grafikfenster automatisch aktualisiert werden.''
+
* das '''Interface <code>BildAktualisierungReagierbar</code>''' mit der '''Methode  
 +
<source lang="Java">public void bildAktualisierungReagieren( double zeitIntervall )</source>'''
  
* das '''Interface <code>KollisionsReagierbar</code>''' mit der '''sondierenden Methode <code>kollisionReagieren( EduActor ea )</code>'''. <br>''Damit kann jede deiner Klasse auf Kollision mit einem anderen Objekt reagieren.''
+
* das '''Interface <code>KollisionsReagierbar</code>''' mit der '''Methode  
 +
<source lang="Java">public boolean kollisionReagieren( EduActor ea )</source>'''
  
  
Die meisten dieser Methoden sind in der Klasse <code>SPIEL</code> bereits vorhanden und du kannst sie in Sub-Klassen von <code>SPIEL</code> überschreiben. <br> Manchmal möchte man aber ohne <code>SPIEL</code> auskommen oder hat darüber hinausgehende Bedürfnisse. Dann sind diese Interfaces sehr nützlich.
+
'''Die meisten dieser Methoden sind in der Klasse <code>SPIEL</code> bereits vorhanden''' und du kannst sie in Sub-Klassen von <code>SPIEL</code> überschreiben. <br> Manchmal möchte man aber ohne <code>SPIEL</code> auskommen oder hat darüber hinausgehende Bedürfnisse. Dann sind diese Interfaces sehr nützlich.

Version vom 11. Juni 2023, 13:32 Uhr

Interfaces

Ein Interface gleicht im Prinzip einer Super-Klasse, von der man erben kann. Der Unterschied zur Super-Klasse besteht darin, dass - vereinfacht gesagt - bei einem Interface nur Methoden vererbt werden wohingegen eine Super-Klasse auch Attribute vererben kann. Bei Super-Klassen erbt man mit dem Schlüsselwort extends wohingegen man von einem Interface mit dem Schlüsselwort implements erbt. Sehr oft sind die Methoden eines Interfaces nur Signaturen, das heißt Methoden-Köpfe ohne Rumpf. Der Rumpf wird erst in der Sub-Klasse implementiert. Man spricht dann von überschreiben der Methode. Meist gibt ein Interface eine Funktionalität vor und in der Sub-Klasse kann man frei entscheiden, wie auf diese Funktionalität konkret reagiert werden kann.

In der Edu-Variante der Engine-Alpha gibt es

Interfaces der Edu Variante
  • das Interface TastenReagierbar mit den Methoden
public void tasteReagieren( int taste )
public void tasteLosgelassenReagieren( int taste )
public boolean istTasteGedrueckt( int taste )

  • das Interface Ticker mit der Methode
public void tick()

  • das Interface MausklickReagierbar mit den Methoden
public void klickReagieren( double x , double y )
public void klickLosgelassenReagieren( double x , double y )

  • das Interface MausradReagierbar mit der Methode
public void tasteReagieren( int zaehler )

  • das Interface BildAktualisierungReagierbar mit der Methode
public void bildAktualisierungReagieren( double zeitIntervall )

  • das Interface KollisionsReagierbar mit der Methode
public boolean kollisionReagieren( EduActor ea )


Die meisten dieser Methoden sind in der Klasse SPIEL bereits vorhanden und du kannst sie in Sub-Klassen von SPIEL überschreiben.
Manchmal möchte man aber ohne SPIEL auskommen oder hat darüber hinausgehende Bedürfnisse. Dann sind diese Interfaces sehr nützlich.