Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Концепція RAD.doc
Скачиваний:
1
Добавлен:
09.09.2019
Размер:
574.98 Кб
Скачать

[Править] Языки программирования

В языке C# события реализованы как элемент языка и являются членами классов. Механизм событий здесь реализует шаблон проектирования Publisher/Subscriber. Пример объявления события:

public class MyClass

{

public event EventHandler MyEvent;

}

Здесь EventHandler - делегат, определяющий тип процедуры обработчика событий. Подписка на событие производится следующим образом:

myClass.MyEvent += new EventHandler(Handler);

Здесь myClass - экземпляр класса MyClass, Handler - процедура-обработчик. Событие может иметь неограниченное количество обработчиков. При добавлении обработчика события он добавляется в специальный стек, а при возникновении события вызываются все обработчики по их порядку в стеке. Отписка от события, то есть удаление обработчика производится аналогично, но с использованием оператора «-=».

Разные языки программирования поддерживают СОП в разной степени. Наиболее полную поддержку событий обладают следующие языки (неполный список):

  • Perl (события и демоны DAEMON, и их приоритеты PRIO),[2]

  • Java,

  • Delphi,

  • C# (события event)[3].

Остальные языки, в большей их части, поддерживают события как обработку исключительных ситуаций.

[Править] Инструменты и библиотеки

  • Node.js, событийно-ориентированный I/O фреймворк на JavaScript движке V8

  • Cocoa & Objective-C, рефлексивный объектно-ориентированный язык программирования, добавляющий сообщения в стиле Smalltalk в язык Си.

  • GLib

  • Gui4Cli[4], событийно-ориентированный язык программирования для Windows

  • libsigc++ (англ.)русск.

  • libevent

  • POCO

  • libasync, часть библиотек sfs и sfslite[5], эффективная событийная библиотека для C++

  • Perl Object Environment (англ.)русск.

  • PRADO (англ.)русск., компонентный событийно-ориентированный инструмент для Web-программирования на PHP 5

  • Tcl

  • Twisted, Python

  • Qt, кроссплатформенная библиотека виджетов для C++, основанная на модели управления событиями. Существует сокращённая версия, называемая Qt/Console, из которой исключён, собственно, код поддержки виджетов, и представляющий собой управляемый событиями фреймвок, в который так-же включены некоторые дополнительные средства, вроде кроссплатформенной работы с сетью, многопоточности и работы с XML.

  • QP — семейство открытых событийно-ориентированных окружений для встроенных систем реального времени[6]

  • Simple Unix Events a.k.a. SUE[7], простая объектно-ориентированная библиотека для построения событийно-ориентированных программ под Unix на языке C++.

[Править] См. Также

  • Автоматное программирование

  • Callback (программирование)

[Править] Англоязычные источники

  • описание из Portland Pattern Repository

  • Event-Driven Programming: Introduction, Tutorial, History — учебное пособие Стефана Ферга (Stephen Ferg)

  • Event Driven Programming учебное пособие Алана Голда (Alan Gauld)

  • Martin Fowler. Event Collaboration

  • Ben Watson. Transitioning from Structured to Event-Driven Programming

  • Jonathan Simon. Rethinking Swing Threading

  • Chris McDonald. The event driven programming style

  • Christopher Diggins. Event Driven Programming using Template Specialization

  • Stefan Schiffer and Joachim Hans Fröhlich. Concepts and Architecture of Vista — a Multiparadigm Programming Environment

  • Event-Driven Programming and Agents

  • LabWindows/CVI Resources

  • Comment by Tim Boudreau

  • Complex Event Processing and Service Oriented Architecture

  • Event-driven programming and SOA: Jack van Hoof. How EDA extends SOA and why it is important;;

  • Пример с открытым кодом: Distributed Publish/Subscribe Event System

  • Событийно-ориентированное программирование на языке Java: Rex Youung. Jsasb