Парадигма компьютерного программирования
- В компьютерном программировании событийно -ориентированное программирование — это парадигма программирования , в которой ход выполнения программы определяется внешними событиями . События пользовательского интерфейса от мышей , клавиатур , сенсорных панелей и сенсорных экранов , а также ввода от внешних датчиков являются распространенными случаями. События также могут генерироваться программно, например, из сообщений других программ , уведомлений из других потоков или других сетевых событий.
- Программирование, управляемое событиями, является доминирующей парадигмой, используемой в приложениях с графическими пользовательскими интерфейсами и сетевых серверах.
- В приложении, управляемом событиями, обычно существует цикл событий , который прослушивает события, а затем запускает функцию обратного вызова при обнаружении одного из этих событий.
- Программы, управляемые событиями, можно писать на любом языке программирования , хотя эта задача проще в языках, которые предоставляют абстракции высокого уровня .
- Хотя они не совсем соответствуют модели, управляемой событиями, обработка прерываний и обработка исключений имеют много общего.
- Важно различать парадигмы , управляемые событиями и сообщениями (также называемые управляемыми очередями) : сервисы, управляемые событиями (например, AWS SNS ), отделены от своих потребителей. В то время как сервисы, управляемые очередями/сообщениями (например, AWS SQS ), связаны со своими потребителями. [1]
Цикл событий
Поскольку цикл получения/отправки событий является общим для приложений, многие среды программирования заботятся об их реализации и ожидают, что пользователь предоставит только код для обработчиков событий.
RPG , ранний язык программирования от IBM , чья концепция дизайна 1960-х годов была похожа на программирование, управляемое событиями, обсуждавшееся выше, предоставлял встроенный основной цикл ввода-вывода (известный как «программный цикл»), в котором вычисления выполнялись в соответствии с индикаторы ( флаги ), которые были установлены ранее в цикле.
Обработчики событий
Фактическая логика содержится в процедурах обработчика событий. Эти процедуры обрабатывают события, на которые будет реагировать основная программа. Например, один щелчок левой кнопкой мыши по командной кнопке в программе с графическим интерфейсом может запустить процедуру, которая откроет другое окно, сохранит данные в базе данных или выйдет из приложения. Многие IDE предоставляют программисту шаблоны событий графического интерфейса, позволяя программисту сосредоточиться на написании кода события.
Хотя отслеживание истории обычно тривиально в последовательной программе. Поскольку обработчики событий выполняются в ответ на внешние события, правильное структурирование обработчиков для работы при вызове в любом порядке может потребовать особого внимания и планирования в программе, управляемой событиями.
Помимо написания обработчиков событий, обработчики событий также необходимо привязать к событиям, чтобы при возникновении события вызывалась правильная функция. Для событий пользовательского интерфейса многие IDE объединяют два шага: двойной щелчок по кнопке, и редактор создает (пустой) обработчик событий, связанный с нажатием кнопки пользователем, и открывает текстовое окно, чтобы вы могли редактировать обработчик событий.
Обычное использование
Большинство существующих архитектур графического пользовательского интерфейса используют программирование, управляемое событиями. [2] В Windows есть цикл событий . Платформа Java AWT обрабатывает все изменения пользовательского интерфейса в одном потоке, называемом потоком диспетчеризации событий . Аналогичным образом, все обновления пользовательского интерфейса в платформе Java JavaFX происходят в потоке приложения JavaFX. [3]
Большинство сетевых серверов и платформ, таких как Node.js, также управляются событиями. [4]
Обработка прерываний и исключений
Смотрите также
Рекомендации
- ^ Чандрасекаран, Премананд; Кришнан, Картик; Форд, Нил; Байарс, Брэндон; Буйзе, Аллард (2022). Доменно-ориентированное проектирование с использованием Java — Руководство для практикующего . Пакт Паблишинг. ISBN 9781800564763.
- ↑ Самек, Миро (1 апреля 2013 г.). «Кто переместил мое государство?». Доктор Добб . Проверено 28 января 2018 г.
- ↑ Федорцова, Ирина (июнь 2012 г.). «Параллелизм в JavaFX». Домашняя страница документации JavaFX . Оракул . Проверено 4 января 2018 г.
Граф сцены JavaFX, который представляет графический пользовательский интерфейс приложения JavaFX, не является потокобезопасным, и к нему можно получить доступ и изменить его только из потока пользовательского интерфейса, также известного как поток приложения JavaFX.
- ^ Программирование, управляемое событиями, в Node.js.
Внешние ссылки
- Презентация шаблонов параллелизма на Scaleconf
- Программирование, управляемое событиями: введение, руководство, история, учебник Стивена Ферга
- Программирование, управляемое событиями, учебник Алана Голда
- Сотрудничество на мероприятиях, статья Мартина Фаулера
- Переосмысление Swing Threading, статья Джонатана Саймона
- Стиль программирования, управляемый событиями. Архивировано 20 февраля 2005 г. в Wayback Machine , статья Криса Макдональда.
- Программирование, управляемое событиями, с использованием специализации шаблонов, статья Кристофера Диггинса
- Шиффер, С.; Фрелих, Дж. Х. (1994). «Концепции и архитектура Vista — мультипарадигмальной среды программирования». Материалы симпозиума IEEE по визуальным языкам 1994 года . стр. 40–47. дои : 10.1109/VL.1994.363642. ISBN 0-8186-6660-9. S2CID 15927869.
- Событийно-ориентированное программирование и агенты, глава
- Ресурсы LabWindows/CVI
- Распределенная система событий публикации/подписки, пример с открытым исходным кодом, который находится в разработке на MSN.com и Microsoft.com.
- Цикл событий Javascript