Ereignisbehandlung 21



Ähnliche Dokumente
Leichte-Sprache-Bilder

Technical Note 24 SMS Versand über analoge und ISDN Leitungen (Festnetz-SMS)

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Java: Vererbung. Teil 3: super()

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

U08 Entwurfsmuster (II)

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Internationales Altkatholisches Laienforum

Professionelle Seminare im Bereich MS-Office

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Delegatesund Ereignisse

Kurzanleitung MAN E-Learning (WBT)

Programmieren in Java

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Einführung in die Java- Programmierung

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle:

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Klausur zur Einführung in die objektorientierte Programmierung mit Java

1 Mathematische Grundlagen

Was meinen die Leute eigentlich mit: Grexit?

SEP 114. Design by Contract

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Schritt 2: Klicken Sie in der Navigation auf Service und dann auf Kontowecker.

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Primzahlen und RSA-Verschlüsselung

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Was ist Sozial-Raum-Orientierung?

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Internet Explorer Version 6

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Der Kontowecker: Einrichtung

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Partnerportal Installateure Registrierung

BSV Software Support Mobile Portal (SMP) Stand

Zahlen auf einen Blick

Software Engineering Interaktionsdiagramme

Verarbeitung von ZV-Dateien im Internetbanking. Inhalt. 1. Datei einlesen Datei anzeigen, ändern, löschen Auftrag ausführen...

Erstellen einer digitalen Signatur für Adobe-Formulare

Einführung in die Programmierung

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

EAP. Employee Administration Platform

Software Engineering Klassendiagramme Assoziationen

2A Basistechniken: Weitere Aufgaben

Kreativ visualisieren

Skript Pilotphase für Arbeitsgelegenheiten

Informationen zum Ambulant Betreuten Wohnen in leichter Sprache

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Anleitung über den Umgang mit Schildern

Qt-Projekte mit Visual Studio 2005

Einführung in die Informatik Tools

Professionelle Seminare im Bereich MS-Office

Alle Schlüssel-Karten (blaue Rückseite) werden den Schlüssel-Farben nach sortiert und in vier getrennte Stapel mit der Bildseite nach oben gelegt.

Aufruf der Buchungssystems über die Homepage des TC-Bamberg

Seite Wo finde ich die Landingpage Auswahl? Seite Wie aktiviere ich eine Landingpage? Seite

Zeichen bei Zahlen entschlüsseln

Mediator 9 - Lernprogramm

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Kontaktlinsen über die neue Website bestellen eine Kurzanleitung

Abwesenheitsnotiz im Exchangeserver 2010

Urlaubsregel in David

Leitfaden zur Anlage einer Nachforderung. Nachforderung Seite 1 von 11 RWE IT GmbH

GRAFISCHE BENUTZERSCHNITTSTELLEN

Der Kalender im ipad

Beispiel Shop-Eintrag Ladenlokal & Online-Shop im Verzeichnis 1

BAYERISCHES STAATSMINISTERIUM DES INNERN

Treckerverein Monschauer Land e.v.

Virtual Private Network

Anleitungen zum KMG- -Konto

Die YouTube-Anmeldung

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Kostenstellen verwalten. Tipps & Tricks

Studieren- Erklärungen und Tipps

MCRServlet Table of contents

E-Government Sondertransporte (SOTRA) Registrierung von Benutzerkennung

Der große VideoClip- Wettbewerb von Media Markt.

proles-login. Inhalt [Dokument: L / v1.0 vom ]

Anmeldung zu Seminaren und Lehrgängen

Download, Installation und Autorisierung der Lasergene Software. Bitte unbedingt beachten!

Zur Bestätigung wird je nach Anmeldung (Benutzer oder Administrator) eine Meldung angezeigt:

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Wie das genau funktioniert wird Euch in diesem Dokument Schritt für Schritt erklärt. Bitte lest Euch alles genau durch und geht entsprechend vor!

bilder.tibs.at Upload-Assistent

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Info zum Zusammenhang von Auflösung und Genauigkeit

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Gezielt über Folien hinweg springen

Umstellung auf das Mobile-TAN-Verfahren in der VR-NetWorld Software

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Kleines Handbuch zur Fotogalerie der Pixel AG

Objektorientierte Programmierung für Anfänger am Beispiel PHP

UNIGLAS - Handbuch zum Forum

Transkript:

Ereignisbehandlung 21 3 Ereignisbehandlung Dieses Kapitel beschäftigt sich mit der Ereignisbehandlung, d.h. der Reaktion eines Programms auf Eingaben durch benutzende Personen. Nach einigen ersten Beispielen hierzu aus dem Lehrbuch wird das Thema durch zwei Betrachtungen vertieft: Zunächst wird gezeigt, wie die Ereignisbehandlung in Swing gemäß des Entwurfsmusters Observer (Beobachter) gestaltet ist. Sie werden erfahren, was Entwurfsmuster im Allgemeinen sind, was das Entwurfsmuster Beobachter ist und wie es mit Hilfe eines Klassendiagramms beschrieben werden kann. Anschließend werden drei Möglichkeiten diskutiert, wie auf unterschiedliche Ereignisse unterschiedlich reagiert werden kann. Lesen Sie den Abschnitt 4.1.2 (S. 180-184) des Lehrbuchs. Auch hier wollen wir noch einmal zu Übungszwecken eines der Programme durch ein Klassendiagramm darstellen. Abbildung 3.1 zeigt das Diagramm zu dem Programm aus Listing 4.4. JFrame ActionListener ButtonExample1 benutzt JButton benutzt MyHandler Abbildung 3.1: Klassendiagramm zum Programm aus Listing 4.4 des Lehrbuchs 3.1 Entwurfsmuster Observer Für Programmierneulinge könnten die Programme aus den Listings 4.4, 4.5 und 4.6 ungewöhnlich sein: Es wird eine Methode actionperformed definiert, die an keiner Stelle im selbst geschriebenen Programmcode aufgerufen wird, die aber bei Ausführung des Programms dennoch irgendwie aktiviert wird. Dieses Prinzip wird manchmal auch als das Hollywood-Prinzip bezeichnet: Don t call us we call you. Dies soll angeblich in Hollywood den Kandidatinnen und Kandidaten nach dem Vorsprechen für eine Filmrolle (Casting) mit auf den Heimweg gegeben werden.

22 Grundlagen der Programmierung grafischer Benutzeroberflächen in Java Frameworks Entwurfsmuster Entwufsmuster Observer (Beobachter) Dieses Prinzip ist ein Wesensmerkmal von so genannten Frameworks wie Swing. In einer Initialisierungsphase (in unserem Beispiel in der Main- Methode) werden für unterschiedliche Ereignisse (in unserem Beispiel das Drücken eines Buttons) anwendungsspezifische Reaktionen angemeldet (in unserem Beispiel durch Aufruf der Methode addactionlistener). Nach der Initialisierungsphase liegt die Steuerung des Programms nicht mehr in den Händen des Anwendungscodes, sondern des Frameworks. Das Framework verarbeitet die Ereignisse und ruft entsprechend den angemeldeten Reaktionen anwendungsspezifische Codeteile auf. Dieses Verhalten wird durch das Entwurfsmuster Observer (Beobachter) beschrieben. Entwurfsmuster sind auf Erfahrung basierende Vorschläge, wie bestimmte Aufgabenstellungen in Software umgesetzt werden können. Entwurfsmuster haben ein höheres Abstraktionsniveau als Klassenbibliotheken, da Entwurfsmuster keinen Programmcode darstellen, sondern nur beschreiben, wie Klassen und Schnittstellen in einer bestimmten Situation zusammenwirken sollen. Die konkreten Klassen und Schnittstellen mit ihren Methoden sind aber abhängig von der jeweiligen Anwendung. Die in der Beschreibung des Entwurfsmusters verwendeten Klassen und Schnittstellen sowie die verwendeten Methoden sind nur beispielhaft zu verstehen. Natürlich werden solche Entwurfsmuster mit Hilfe von Klassendiagrammen beschrieben. Das Klassendiagramm zum Entwurfsmuster Observer ist in Abbildung 3.2 abgebildet. Observable * Observer Observer1 Observer2 Abbildung 3.2: Klassendiagramm zum Entwurfsmuster Observer (Beobachter) Observer ist eine Schnittstelle mit mindestens einer Methode, die beim Eintritt eines bestimmten Ereignisses aufgerufen werden soll. Observer1 und Observer2 sind stellvertretend zwei Klassen, welche die Observer-Schnittstelle implementieren und entsprechend Implementierungen für die Methode(n) der Observer-Schnittstelle beinhalten. Observable ist eine Klasse, die sich beobachten lässt (d.h. etwas Beobachtbares). Dazu können mehrere Objekte des Typs Observer an Observable angemeldet werden, wobei sich das Observable-Objekt alle angemeldeten Objekte merken muss, da es diese bei späterem Eintreten des interessierenden Ereignisses benachrichtigen muss.

Ereignisbehandlung 23 Zur Verdeutlichung entwickeln wir dazu ein Beispiel. Als beobachtbares Objekt stellen wir uns einen Messfühler vor, der periodisch eine bestimmte Größe (Temperatur, Druck, Windgeschwindigkeit, Anzahl der vorbeifahrenden Autos pro Sekunde usw.) misst. An diesem Messfühler können sich Beobachter anmelden, die unterschiedlich auf die Meldung neuer Messwerte reagieren können (Wert in eine Log-Datei schreiben, eine grafische Darstellung der N letzten Werte aktualisieren, bei Über- bzw. Unterschreitung bestimmter Grenzwerte Alarm durch Senden einer SMS auslösen usw.). Alle Beobachter müssen die Schnittstelle MeasurementObserver und damit die Methode valuemeasured implementieren: Messfühler als Beispiel für das Entwurfsmuster Beobachter interface MeasurementObserver ; class MeasurementDevice private ArrayList<MeasurementObserver> observers; public MeasurementDevice() observers = new ArrayList<MeasurementObserver>(); public void addmeasurementobserver(measurementobserver mo) observers.add(mo); private void fireevent(double newvalue) for(measurementobserver mo : observers) mo.valuemeasured(newvalue); public void domeasuring() for(int i = 0; i < 3; i++) //random value between -100 and +100: double measuredvalue = -100 + Math.random() * 200; fireevent(measuredvalue); class LogObserver implements MeasurementObserver System.out.println("Eintrag in Log-Datei: " + newvalue);

24 Grundlagen der Programmierung grafischer Benutzeroberflächen in Java class GraphicObserver implements MeasurementObserver System.out.println("Aktualisierung der Grafik mit " + "neuem Wert: " + newvalue); class AlarmObserver implements MeasurementObserver private double minvalue; private double maxvalue; public AlarmObserver(double minvalue, double maxvalue) this.minvalue = minvalue; this.maxvalue = maxvalue; if(newvalue > maxvalue newvalue < minvalue) System.out.println("Alarm (z.b. als SMS oder " + "E-Mail) senden mit Wert: " + newvalue); public class DesignPatternObserverExample public static void main(string[] args) MeasurementDevice device = new MeasurementDevice(); LogObserver logger = new LogObserver(); device.addmeasurementobserver(logger); GraphicObserver graphics = new GraphicObserver(); device.addmeasurementobserver(graphics); AlarmObserver alarm = new AlarmObserver(-50, 50); device.addmeasurementobserver(alarm); device.domeasuring(); Die aus MeasurementObserver abgeleiteten Klassen sind sozusagen die anwendungsspezifischen Codeteile, während der Rest das Mess-Framework darstellt.

Ereignisbehandlung 25 Zusammenfassung Die Swing-Interaktionselemente wie z.b. ein JButton können durch Aktionen der Benutzerinnen und Benutzer Ereignisse auslösen. Sie stellen so genannte Ereignisquellen dar. An diese Ereignisquellen können Objekte angemeldet werden, die abhängig von der Ereignisquelle eine bestimmte Schnittstelle implementieren müssen. Tritt das Ereignis ein, werden alle angemeldeten Objekte durch Aufruf einer der Methoden der implementierten Schnittstelle über das Eintreten des Ereignisses informiert. Das Grundprinzip dieses Zusammenwirkens wird im Entwurfsmuster Beobachter festgehalten. Die Ereignisquellen spielen hierbei die Rolle der Beobachtbaren, während die benachrichtigten Objekte Beobachter genannt werden. Ein vollständig selbst implementiertes Beispiel für dieses Zusammenspiel verdeutlicht das Entwurfsmuster Beobachter. Übungsaufgaben 3.1 Welche Ausgabe kann das Beispielprogramm dieses Abschnitts erzeugen? Überlegen Sie zuerst und prüfen Sie Ihre Überlegungen dann durch Ausführung des Programms nach! 3.2 Zeichnen Sie ein Sequenzdiagramm für den Aufruf der Methode domeasuring auf dem Objekt device in der Main-Methode! Nehmen Sie dabei der Einfachheit halber an, dass die Schleife in der Methode domeasuring nur ein einziges Mal durchlaufen wird! Zeichnen Sie die Aufrufe der Methoden Math.random und System.out.println nicht in das Sequenzdiagramm ein! 3.2 Unterschiedliche Reaktionen auf unterschiedliche Ereignisse In den Beispielen des Abschnitts 4.1.2 aus dem Lehrbuch gibt es immer nur eine einzige Ereignisquelle. Wenn aber mehrere Ereignisquellen vorhanden sind (z.b. mehrere Buttons), dann will man in der Regel auf das Drücken der Buttons in unterschiedlicher Weise reagieren (sonst bräuchte man ja nur einen Button). Es gibt prinzipiell drei Möglichkeiten, mit diesem Problem umzugehen: