Version vom 11. Juni 2023, 00:06 Uhr von Mike (Diskussion | Beiträge) (Sinn von Interfaces)

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

  • das Interface TastenReagierbar mit der Methode tasteReagieren( int taste ).
    Damit kann jede deiner Klasse auf Tastatur-Ereignisse reagieren.
  • das Interface Ticker mit der Methode tick().
    Damit können Aufgaben in gleichen Zeitintervallen wiederholt werden.
  • das Interface MausklickReagierbar mit der Methode klickReagieren( double x , double y ).
    Damit kann jede deiner Klasse auf Maus-Klicks reagieren.
  • das Interface MausradReagierbar mit der Methode tasteReagieren( int zaehler ).
    Damit kann jede deiner Klasse auf Mausrad-Ereignisse reagieren.
  • das Interface BildAktualisierungReagierbar mit der Methode bildAktualisierungReagieren( double zeitIntervall ).
    Damit kann jedes Objekt deiner Klasse im Grafikfenster automatisch aktualisiert werden.
  • das Interface KollisionsReagierbar mit der sondierenden Methode kollisionReagieren( EduActor ea ).
    Damit kann jede deiner Klasse auf Kollision mit einem anderen Objekt reagieren.

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.