Ereignis (Programmierung)

Ein Ereignis ( englisch Ereignis ) Dientes in der Software Technik – bei Entwicklung nach DM ereignisorientieren Programmierparadigma – zur Steuerung des Programmflusses . Das Programm wird nicht linear Durchlaufen, Sondern es Werden Spezielle Ereignisbehandlungsroutinen (engl. Hörerschaft , beobachtbar , Event – Handler ) immer Dann ausgeführt, Wenn Ein bestimmtes Ereignis Auftritt. Ereignisorientierte Programmierung gehört zu parallele Programmiertechniken , die ihren Vor- und Nachteil haben.

Motivation

In Programm ist ein Haufe Fall that auf Ressourcenanforderungen Eine nicht-deterministische Zeit gewartet Werden Muss (z. B. bei Speicherallokierung oder Hardwarezugriff) oder EREIGNISSE spontan auftreten Können (z. B. Benutzer-Mausklick). Letztendlicher Grund für diesen Nicht-Determinismus ist that this EREIGNISSE nicht die Kontrolle des Programm unterliegt, auch vom Weder Programmierer noch vom Programm zur Laufzeit vorhergesagt Werden Kann. Bei Konventionell Programmierung mit Einem Einzigen, sequentiellem Kontrollfluss Wurde of this „Warten“ auf dem Eintreten Dezember Ereignis (z. B. sterben Erfolgreiche Ressourcenzuweisung) über eine aktive, Beobachter Warte , die sogenannte Polling , durchgeführt.

Polling hat einige Nachtilige Eigenschaften: Wenn die Programmaführung Solange aufhört, ist das Ereignis eintritt, die Programm-Leistung schlechter und nicht-determinist. Auch auf andere Ansprüche kann nicht geantwortet werden, wenn überhaupt, möglicherweise verloren gehen. Auch ist die Effizienz schlecht, es wird wiederholt eine unnötige Handlung durchgeführt, die Prüfung, ob das Ereignis nun eingetreten ist.

Ereignisorientierte Programmierung

Ein Ansatz, um this Problem Situation Daten effizient zu pilot, ist sterben ereignisorientierte Programmierung , sterben Auf einer Inversion of Control basiert. D. h., Es wird nicht mehr im Haupt-Kontrollfluss auf das Eintreten des Ereignisses gewartet (wo Hauptkontrollfluss Hut Kontrolle sterben), sie Sondern Ereignis Wird ein eigener Kontrollfluss zugeordnet (Haufe Realisiert als Thema ) , wo beim Eintreten des eigenständig Ereignisses aktiv Wird und einfluss auf den Hauptkontrollfluss nehmen Kann. (Siehe parallele Programmierung )

Technische umsetzung of this Idee seit der 1960erne Ist Die Rückruffunktion (mit Event – spezifischem Unter Programm ) und (Hardware-) Interrupts , WELCHE Nachteile Dezember Polling sterben vermeiden, Dafür jedoch zwangsläufig Potentielle Probleme des Parallels Programmierer hervorrufen sterben.

Beschrieben wurden Ereignisbehandlungstechniken in Entwurfsmuster- Terminologie als Beobachter .

Verwendung

Das Konzept der Ereignisorientierten Programmierung Eigner sich auch gut zur Implementierung von Grafische Benutzeroberflächen , Wobei hier stirbt EREIGNISSE meist Aktion des Benutzers Ist, Wie zum beispiel des Druckers Wacholdergeschmack oder die Anklicken Wacholder schaltfläche . Ein anderes Wicht Anwendungsfeld Sind Computersimulationen , sterben so aufgebaut Werden that Zustandsänderungen nur von Ereignissen ausgelöst Werden, und ihrerseits EREIGNISSE auslösen (siehe ereignisorientierte Simulation ).

Ereignisorientierte Programmierung Lässt sich gut mit den KONZEPT wo objektorientierten Programmierung (OOP) Kombiniert: Objekte bestimmt , Dann nicht mehr nur Eigenschaften und Methoden , Sondern Sind Auch Ereignisquellen und Bieten möglichkeit sterben, sterben Ereignisbehandlung zu beeinflussen. Auch sterben Ereignisbehandlungsroutinen ( englisch Event – Handler , deutsch  Ereignishandler ) und sterben EREIGNISSE selbst Werden Dann als Objekte modelliert. Es kann jedoch argumentiert Werden that Gesetz über die Idee des entkoppelten Messaging between Objektentitäten, Krieg Ereignisorientierte Programmierung schon immer ein implizit Teilkonzept von OOP.[1]

EREIGNISSE Können je nach Programmierumgebung Entweder Nur eine Ereignisbehandlungsroutine (Wie z. B. in Object Pascal ) oder Beliebers viele Ereignisbehandlungsroutinen (Wie z. B. in Visual Basic oder C # , oder Wie beim Signal-Slot-Konzept ) aufrufen.

Es ist möglich, ein Ereignis als „verarbeitet“ zu kennzeichnen. Nachfolgende Gelegenheitbehandler können dies abfragen und verzichten gebildet auf einere weitere Verarbeitung.

Beispiel

Beispiel zu MS Access

Der Benutzer Kann u. A. Formulare und Berichte mit Jeweils Darin enthaltenen Feldern Entwerfen. Es gibt auch Bereiche, die Formularkopf, Berichtskopf, Gruppenkopf und Gruppenfuß (Ihr Gruppenmaterial) und Detailbereich, die selbst anders einelder enthalten. All diese definitiven Mind- Objekte .

Die Verarbeitung für Objekte ist in funktionalen Teileinheiten gegründet, deren Ausführung von ereignisorientierten Ereignissen

Definieren von von Ereignissen in MS Access (2003)

In der Formel Treta stirbt EREIGNISSE im Wesentlichen Durch Aktion , wo user interface auf: Mausaktionen, Eingaben usw. – die von der Access Engine Erkannt und Behandelt Werden. Mögliche Ereignisse sind (zum Beispiel):

  • bei Die Form: Das Öffnen, Anzeigen, Unsere Eingabe, Geändert, Löschen, Schließen …
  • bei Formular-Eingabefeldern: wenn geändert, beim Berühren mit Mauszeiger, beim Klicken, beim Doppelklicken, bei Taste UP
  • bei Befehlsschaltflächen: beim Hingehen, beim Klicken, beim Doppelklicken

Bei Bericht initiiert stirbt Motor EREIGNISSE datenabhängig sterben, ähnlich die Steuerungsprinzipien wo Programmierung normiert . Mögliche Ereignisse sind (zum Beispiel):

  • für die Gänse Nachricht: Beim Öffnen / Schließen, bei Seitenanfang, bis dato lernen
  • für Berichtsbereiche wie Gruppenkopf undffuß: beim Drucken, beim Formatieren

Zur Standardverarbeitung für jeden Zugriff auf die einzelnen Programme und für Individuelles zu tun ist – und war. Zum Beispiel mögen die von Edenabefeld eine Schicksalsprüfung sein; Beim Öffnen eines Berichts im Herbst kann „Leerer Daten“ als Fehlerhinweis bezeichnet werden; Ein Gruppenfuß bei nur 1 Einzelzeile je Gruppe ‚unsichtbar‘ Datenfelder können sichtbar / unsichtbar gemacht werden.

Für solche Zusatzfunktion setzt Programmierer, ggf. von einem Software- „Assistenten“ unterstützt, eine Prozeur , in der Jeweiligen Objekt und der Jeweiligen Ereignistyp ein Passender Code (in VBA ) hinterleg; siehe Grafikbeispiel. Ereignisse werden ausgeführt. Ist keine Prozedur angelegt, wird das Ereignis in einer Weise verarbeitet (z. B. Berühren der Objekte mit dem Mauszeiger ).

Implementation eines Ereignissystems

Der folgende Pseudocode soll eine einfache Implementierung eines Ereignissystems seigen:

Funktion Ereignis
 listener = []
 call = function ()
 für jede Parallele (l in Listener)
 l ()

Anwendungsbeispiel:

Klick = neues Event
Klick.listener.add (regenGeräusch)
Klick.listener.add (rainBild)
Klick ()

Dieses einfache Ereignissystem bietet eine lineare ablaufende Ereignisbehandlung und ermöglicht das An- und Abmelden von Ereignisbehandlungsroutinen. Für parallelle Ausführung plant das W3C als Web Workers . Ihr würdiges Ereignissystem darf verdorben sein:

Form = Funktion () {
 this . abschicken = neues Ereignis ();
 ⋮
}
Funktion zumServerSenden () {
 ⋮
}
Funktion DankeSagen () {
 alert ( "Vielen Dank für das Ausfüllen des Formulars." );
}
war überfrage = new form ();
umfrage . abschicken . addListener ( dies , "zumServerSenden" );
umfrage .abschicken . addListener ( dies ist "DankeSagen" );
umfrage . abschicken ();

Siehe auch

  • Komplexe Ereignisverarbeitung
  • Intelligente Benutzeroberfläche

Einzelnachweise

  1. Hochspringen↑ Stefan Ram: Dr. Alan Kay über die Bedeutung der objektorientierten Programmierung ( englisch ) fu-berlin.de. 23. Juli 2003. Abgerufen am 4. Juni 2012: „ OOP bedeutet für mich nur Messaging, lokale Aufbewahrung und Schutz und Verstecken von Staatsprozessen sowie extreme Late-Binding aller Dinge.