stringtranslate.com

Программирование, управляемое событиями

В компьютерном программировании событийно -ориентированное программирование — это парадигма программирования , в которой ход выполнения программы определяется внешними событиями . Типичным событием могут быть события пользовательского интерфейса от мышей , клавиатур , сенсорных панелей и сенсорных экранов или входные данные от внешних датчиков , а также быть сгенерированы программно ( передача сообщений ) из других программ или потоков или сетевых событий.

Программирование, управляемое событиями, является доминирующей парадигмой, используемой в приложениях с графическими пользовательскими интерфейсами и сетевых серверах.

В приложении, управляемом событиями, обычно существует цикл событий , который прослушивает события, а затем запускает функцию обратного вызова при обнаружении одного из этих событий.

Программы, управляемые событиями, можно писать на любом языке программирования , хотя эта задача проще в языках, предоставляющих абстракции высокого уровня .

Хотя они не совсем соответствуют модели, управляемой событиями, обработка прерываний и обработка исключений имеют много общего.

Цикл событий

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

RPG , ранний язык программирования от IBM , чья концепция дизайна 1960-х годов была похожа на программирование, управляемое событиями, обсуждавшееся выше, предоставлял встроенный основной цикл ввода-вывода (известный как «программный цикл»), в котором вычисления выполнялись в соответствии с «программным циклом». индикаторы ( флаги ), которые были установлены ранее в цикле.

Обработчики событий

Фактическая логика содержится в процедурах обработчика событий. Эти процедуры обрабатывают события, на которые будет реагировать основная программа. Например, один щелчок левой кнопкой мыши по командной кнопке в программе с графическим пользовательским интерфейсом может запустить процедуру, которая откроет другое окно, сохранит данные в базе данных или выйдет из приложения. Многие IDE предоставляют программисту шаблоны событий графического интерфейса, позволяя программисту сосредоточиться на написании кода события.

Хотя отслеживание истории обычно тривиально в последовательной программе. Поскольку обработчики событий выполняются в ответ на внешние события, правильное структурирование обработчиков для работы при вызове в любом порядке может потребовать особого внимания и планирования в программе, управляемой событиями.

Помимо написания обработчиков событий, обработчики событий также необходимо привязать к событиям, чтобы при возникновении события вызывалась правильная функция. Для событий пользовательского интерфейса многие IDE объединяют два шага: двойной щелчок по кнопке, и редактор создает (пустой) обработчик событий, связанный с нажатием кнопки пользователем, и открывает текстовое окно, чтобы вы могли редактировать обработчик событий.

Обычное использование

Большинство существующих архитектур графического пользовательского интерфейса используют программирование, управляемое событиями. [1] В Windows есть цикл событий . Платформа Java AWT обрабатывает все изменения пользовательского интерфейса в одном потоке, называемом потоком диспетчеризации событий . Аналогично, все обновления пользовательского интерфейса в платформе Java JavaFX происходят в потоке приложения JavaFX. [2]

Большинство сетевых серверов и платформ, таких как Node.js, также управляются событиями. [3]

Критика

Дизайн этих программ, которые полагаются на модель событийного действия, подвергся критике, и было высказано предположение, что модель событийного действия заставляет программистов создавать подверженный ошибкам, трудно расширяемый и чрезмерно сложный код приложения. [1] В качестве жизнеспособной альтернативы пропагандируются управляемые таблицами конечные автоматы . [4] С другой стороны, конечные автоматы с табличным управлением сами по себе страдают существенными недостатками, включая феномен взрыва состояний . [5] Решением этой проблемы является использование сетей Петри .

Обработка прерываний и исключений

Смотрите также

Рекомендации

  1. ↑ Аб Самек, Миро (1 апреля 2013 г.). «Кто переместил мое государство?». Доктор Добб . Проверено 28 января 2018 г.
  2. Федорцова, Ирина (июнь 2012 г.). «Параллелизм в JavaFX». Домашняя страница документации JavaFX . Оракул . Проверено 4 января 2018 г. Граф сцены JavaFX, который представляет графический пользовательский интерфейс приложения JavaFX, не является потокобезопасным, и к нему можно получить доступ и изменить его только из потока пользовательского интерфейса, также известного как поток приложения JavaFX.
  3. ^ Программирование, управляемое событиями, в Node.js.
  4. Самек, Миро (11 марта 2009 г.). «Конечные автоматы для систем, управляемых событиями» . Проверено 19 марта 2013 г.
  5. ^ Патрик Шаумонт (27 ноября 2012 г.). Практическое введение в кодирование аппаратного и программного обеспечения . ISBN 978-1-4614-3737-6.

Внешние ссылки