Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Описание [ править ]

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

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

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

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

Модель делегированного события [ править ]

Модель событий делегата. clickme - это источник события - кнопка в этом примере - и он содержит список слушателей.

Распространенным вариантом объектно-ориентированного программирования является модель событий делегата , которая предоставляется некоторыми графическими пользовательскими интерфейсами . Эта модель основана на трех сущностях:

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

Кроме того, модель требует, чтобы:

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

C # использует события как специальные делегаты, которые могут быть активированы только классом, который их объявляет. Это позволяет улучшить абстракцию , например: [1]

делегировать  void  Notifier  ( отправитель строки  );class  Model  {  публичное  событие  Notifier  notifyViews ;  public  void  Change ()  {  ...  notifyViews ( "Модель" );  } }class  View1  {  public  View1 ( Модель  м )  {  м . notifyViews  + =  новый  уведомитель ( это . Update1 );  } void  Update1 ( отправитель строки  ) { Console . WriteLine ( отправитель + "был изменен при обновлении" ); } }     class  View2  {  public  View2 ( Модель  м )  {  м . notifyViews  + =  новый  уведомитель ( это . Обновление2 );  } void  Update2 ( отправитель строки  ) { Console . WriteLine ( отправитель + "был изменен" ); } }     class  Test  {  static  void  Main ()  {  Model  model  =  new  Model (); новый  View1 ( модель );  новый  View2 ( модель );  модель . Изменить ();  } }

Обработчик событий [ править ]

В компьютерном программировании обработчик событий - это подпрограмма обратного вызова, которая обрабатывает входные данные, полученные в программе (называемой слушателем в Java и JavaScript [2] ). Каждое событие - это часть информации уровня приложения из базовой инфраструктуры , обычно инструментария графического интерфейса . К событиям графического интерфейса относятся нажатия клавиш , движение мыши , выбор действий и истечение таймеров . На более низком уровне события могут представлять доступность новых данных для чтения файла или сетевого потока. Обработчики событий - центральная концепция в программировании, управляемом событиями..

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

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

Уведомление о событии [ править ]

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

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

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

Пользовательские события [ править ]

Существует большое количество ситуаций или событий, которые программа или система могут генерировать или реагировать на них. Некоторые общие события, генерируемые пользователями, включают:

События мыши [ править ]

Указательное устройство может генерировать ряд программных узнаваемых жестов указательного устройства . Мышь может генерировать ряд событий мыши, таких как движение мыши (включая направление движения и расстояние), левую / правую кнопку мыши вверх / вниз [3] и движение колеса мыши или комбинацию этих жестов.

События клавиатуры [ править ]

Нажатие клавиши на клавиатуре или комбинации клавиш генерирует событие клавиатуры, позволяя программе, запущенной в данный момент, реагировать на введенные данные, например, какую клавишу / клавиши нажимал пользователь. [3]

События джойстика [ править ]

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

События сенсорного экрана [ править ]

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

События устройства [ править ]

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

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

  • Обратный звонок (компьютерное программирование)
  • Триггер базы данных
  • События DOM
  • Событийно-ориентированное программирование
  • Обработка исключений
  • Обработчик прерывания
  • Прерывания
  • Шаблон наблюдателя (например, прослушиватель событий)
  • Схема реактора против модели Проактора
  • Сигнальное программирование
  • Виртуальная синхронность

Ссылки [ править ]

  1. ^ Mössenböck, Hanspeter (2002-03-25). «Расширенный C #: переменное количество параметров» (PDF) . http://ssw.jku.at/Teaching/Lectures/CSharp/Tutorial/ : Institut für Systemsoftware, Университет Йоханнеса Кеплера в Линце, Fachbereich Informatik. п. 26 . Проверено 5 августа 2011 .
  2. ^ https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener
  3. ^ a b События мыши и клавиатуры в Windows Forms . Microsoft. Проверено 12 февраля, 2008.

Внешние ссылки [ править ]

  • Обработчики событий статьи и функции обратного вызова
  • Высокоуровневый дизайн обработчика событий подфермы
  • Синтаксис событий для XML
  • Распределенные события и уведомления
  • Порядок проведения мероприятий
  • Java DOM Interface Event Документация Javadoc
  • java.awt.event Пакет Java Документация Javadoc API
  • javax.swing.event Пакет Java Документация Javadoc API
  • Написать обработчик событий