Delegationsmodell der Ereignisbehandlung

[Startseite]


Vorwort ] Voraussetzungen ] JAVA ] Implementierung von Klassen ] Erste Programme ] Klassenbibliothek ] Installation ] Applets ] Mehr JAVA ] Inside stiftUndCo ] Beispiele ] Downloads ]

Überladen von Methoden
Mehrfachvererbung
Multithreading
Netzwerktauglichkeit
Delegationsmodell der Ereignisbehandlung
Behandlung von Ausnahmen
Der Garbage Collector
Delegationsmodell der Ereignisbehandlung

Im Rahmen der Unterrichtseinheit "von Stiften und Mäusen" wird eine Ereignisbehandlung entwickelt, die einem recht einfachen Prinzip folgt. Diese wurde in ähnlicher Weise unmittelbar auch in den Laufzeitumgebungen von JAVA Version 1.0 genutzt. Inzwischen ist die Ereignisbehandlung jedoch weiterentwickelt worden. Mit dieser kommen Sie nicht in Berührung, wenn Sie der Unterrichtsreihe folgen. Jedoch ist es interessant auch diese fortschrittlichere Variante kennenzulernen und gegebenenfalls im Unterricht diese auch vorzustellen und zu nutzen. Seit JAVA Version 1.1 läuft die Ereignisbehandlung nach folgendem Prinzip ab:

Objekte, die auf bestimmte Ereignisse reagieren möchten, haben zweierlei zu tun:

Sie müssen ihren Wunsch bei der Ereignisquelle anmelden.

Sie müssen sich dem Laufzeitsystemn gegenüber als Ereignisverarbeiter zu erkennen geben.

 

Das Laufzeitsystem sorgt dann dafür, daß die gewünschten Ereignisse übermittelt werden (Konsequenz aus der Anmeldung des Objektes bei der ereignisquelle) und fordert die Objekte zur Ereignisbehandlung auf (Konsequenz aus der Tastsache, daß sich das Objekt als Ereignisbearbeiter ausgewiesen hat).

Beispiel zur Verdeutlichung:

Ein Rechteck rechteck möchte auf Tastenereignisse reagieren:

 

Ereignisquelle ist ein Fenster fenster.

 

Das Rechteck schickt dem Fenster den Auftrag, es als Tastaturereignisverabeiter zu registrieren (dazu muß das Rechteck das Fenster natürlich kennen):

fenster.addKeyListener(this)

 

addKeyListener ist eine Methode des Fensters. Entsprechende Methoden gibt es für eine Reihe von Ereignisklassen.

 

Damit ist klar, daß das Rechteck Tastaturereignisse bearbeiten will. Das Laufzeitsystem muß dem Rechteck nun Aufforderungen zur Bearbeitung von Tastaturereignissen schicken. Diese Aufforderungen muß das Rechteck verstehen. Dies ist der Fall, wenn das Rechteck ein entsprechendes Interface hier: das Interface KeyListener implementiert, welches die Benachrichtigungen über die Tastaturereignisse enthält. Folgende Methoden gehören zum Interface KeyListener:

keyTyped(KeyEvent), keyPressed(KeyEvent) und keyReleased(KeyEvent).

Bie Implementierung dieser Methoden realisieren die gewünschten Reaktionen des Rechtecks auf die Tastaturereignisse.

Das Laufzeitsystem schickt allen Objekten der Klasse KeyListener (dazu gehört das Rechteck jetzt), die sich beim Fenster als Tastaurerignisverarbeiter angemeldet haben, die genannten Nachrichten, wenn die zugehörigen Ereignisse aufgetreten sind.

Dies ist zudem ein schönes Beispiel für die Bedeutung der Mehrfachverebung via Interfaces. Rechtecke können vom Laufzeitsystem aus als Ereignisverarbeiter angesprochen werden, ohne daß diese Eigenschaft in möglichen Vorgängerklassen des Rechtecks schon vorgesehen war.

 

 


Seitenanfang

© Georg Dick