
- •[Править] История
- •[Править] Назначение
- •[Править] Применение
- •[Править] Основные принципы
- •[Править] Фазы разработки
- •[Править] Преимущества
- •[Править] Среды разработки, частично использующие принципы rad
- •Визуальное программирование
- •[Править] Графические, или визуальные, языки программирования
- •[Править] Визуальные средства разработки
- •[Править] Сфера применения
- •[Править] Применение в серверных приложениях
- •[Править] Мультиплексирование
- •[Править] Примеры реализаций
- •[Править] Применение в настольных приложениях
- •[Править] Языки программирования
- •[Править] Инструменты и библиотеки
- •[Править] См. Также
- •[Править] Англоязычные источники
- •[Править] Материалы на русском
- •[Править] Ссылки Событийно-ориентированное программирование
- •Сфера применения
- •Применение в серверных приложениях
- •Применение в интерфейсах
- •Событийно-ориентированное программирование.
- •Есть отличия между Pascal'ем и Delphi? Если есть, то какие.
- •Отличия языка PascalAbc.Net от Delphi Добавлено
- •Изменено
- •Отсутствует
[Править] Языки программирования
В языке 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