En la programación y el diseño de software , un evento es una acción u ocurrencia reconocida por el software , que a menudo se origina de forma asincrónica desde el entorno externo, que puede ser manejada por el software. Los eventos informáticos pueden ser generados o activados por el sistema, por el usuario o de otras formas. Normalmente, los eventos se manejan sincrónicamente con el flujo del programa ; es decir, el software puede tener uno o más lugares dedicados donde se manejan los eventos, frecuentemente un bucle de eventos . Una fuente de eventos incluye al usuario, que puede interactuar con el software a través de los periféricos de la computadora.- por ejemplo, escribiendo en el teclado . Otra fuente es un dispositivo de hardware como un temporizador . El software también puede activar su propio conjunto de eventos en el bucle de eventos, por ejemplo, para comunicar la finalización de una tarea. Se dice que el software que cambia su comportamiento en respuesta a eventos está impulsado por eventos , a menudo con el objetivo de ser interactivo .
Descripción
Los sistemas controlados por eventos se utilizan normalmente cuando hay alguna actividad externa asincrónica que debe ser manejada por un programa; por ejemplo, un usuario que presiona un botón de su mouse. Un sistema impulsado por eventos generalmente ejecuta un ciclo de eventos , que sigue esperando tales actividades, por ejemplo, entrada de dispositivos o alarmas internas. Cuando ocurre uno de estos, recopila datos sobre el evento y envía el evento al software controlador de eventos que se ocupará de él.
Un programa puede optar por ignorar eventos y puede haber bibliotecas para enviar un evento a varios controladores que pueden estar programados para escuchar un evento en particular. Los datos asociados con un evento como mínimo especifican qué tipo de evento es, pero pueden incluir otra información como cuándo ocurrió, quién o qué causó que ocurriera, y datos adicionales proporcionados por la fuente del evento al controlador sobre cómo ocurrió el evento. el evento debe ser procesado.
Los eventos se utilizan normalmente en interfaces de usuario, donde las acciones en el mundo exterior (clics del mouse, cambio de tamaño de ventana, pulsaciones de teclado, mensajes de otros programas, etc.) son manejadas por el programa como una serie de eventos. Los programas escritos para muchos entornos de ventanas consisten principalmente en controladores de eventos.
Los eventos también se pueden utilizar a nivel de conjunto de instrucciones , donde complementan las interrupciones . En comparación con las interrupciones, los eventos normalmente se manejan sincrónicamente: el programa espera explícitamente que se atienda un evento (generalmente llamando a una instrucción que despacha el siguiente evento), mientras que una interrupción puede demandar servicio en cualquier momento.
Modelo de evento delegado
Una variante común en la programación orientada a objetos es el modelo de evento delegado , que es proporcionado por algunas interfaces gráficas de usuario . Este modelo se basa en tres entidades:
- un control, que es el origen del evento
- oyentes , también llamados controladores de eventos , que reciben la notificación del evento desde la fuente
- interfaces (en el sentido más amplio del término) que describen el protocolo mediante el cual se comunicará el evento.
Además, el modelo requiere que:
- cada oyente debe implementar la interfaz para el evento que quiere escuchar
- cada oyente debe registrarse con la fuente para declarar su deseo de escuchar el evento
- cada vez que la fuente genera el evento, lo comunica a los oyentes registrados, siguiendo el protocolo de la interfaz.
C # usa eventos como delegados especiales que solo pueden ser activados por la clase que lo declara. Esto permite una mejor abstracción , por ejemplo: [1]
notificador de vacío delegado ( remitente de cadena ); modelo de clase { notificador de eventos públicos notificar vistas ; public void Change () { ... notifyViews ( "Modelo" ); } } clase View1 { público View1 ( Modelo m ) { m . notifyViews + = nuevo notificador ( este . Actualización1 ); } void Update1 ( remitente de cadena ) { Console . WriteLine ( remitente + "se cambió durante la actualización" ); } } clase Vista2 { público Vista2 ( Modelo m ) { m . notifyViews + = nuevo notificador ( este . Update2 ); } void Update2 ( remitente de cadena ) { Console . WriteLine ( remitente + "fue cambiado" ); } } clase Prueba { vacío estático Principal () { Modelo modelo = nuevo Modelo (); nueva View1 ( modelo ); nueva View2 ( modelo ); modelo . Cambiar (); } }
Controlador de eventos
En programación de computadoras, un controlador de eventos es una subrutina de devolución de llamada que maneja las entradas recibidas en un programa (llamado escucha en Java y JavaScript [2] ). Cada evento es una pieza de información a nivel de aplicación del marco subyacente , generalmente el kit de herramientas de la GUI . Los eventos de la GUI incluyen pulsaciones de teclas , movimiento del mouse , selecciones de acciones y caducidad de los temporizadores . En un nivel inferior, los eventos pueden representar la disponibilidad de nuevos datos para leer un archivo o flujo de red. Los controladores de eventos son un concepto central en la programación impulsada por eventos .
El marco crea los eventos basándose en la interpretación de entradas de nivel inferior, que pueden ser eventos de nivel inferior en sí mismos. Por ejemplo, los movimientos del mouse y los clics se interpretan como selecciones de menú. Los eventos se originan inicialmente a partir de acciones en el nivel del sistema operativo, como interrupciones generadas por dispositivos de hardware, instrucciones de interrupción de software o cambios de estado en el sondeo . En este nivel, los controladores de interrupciones y los controladores de señales corresponden a los controladores de eventos.
Los eventos creados son procesados primero por un despachador de eventos dentro del marco. Por lo general, administra las asociaciones entre eventos y controladores de eventos, y puede poner en cola controladores de eventos o eventos para su procesamiento posterior. Los despachadores de eventos pueden llamar a los controladores de eventos directamente o esperar a que los eventos se retiren de la cola con información sobre el controlador que se ejecutará.
Notificación de eventos
La notificación de eventos es un término que se usa junto con el software de comunicaciones para vincular aplicaciones que generan pequeños mensajes (los "eventos") a aplicaciones que monitorean las condiciones asociadas y pueden tomar acciones desencadenadas por eventos.
La notificación de eventos es una característica importante en los sistemas de bases de datos modernos (que se usa para informar a las aplicaciones cuando se han producido las condiciones que están observando), los sistemas operativos modernos (que se usan para informar a las aplicaciones cuando deben tomar alguna acción, como actualizar una ventana) y sistemas distribuidos modernos. sistemas, donde el productor de un evento puede estar en una máquina diferente a la del consumidor o consumidores. Las plataformas de notificación de eventos normalmente están diseñadas para que la aplicación que produce eventos no necesite saber qué aplicaciones las consumirán, o incluso cuántas aplicaciones monitorearán el flujo de eventos.
A veces se utiliza como sinónimo de publicación-suscripción , un término que se relaciona con una clase de productos que admiten la notificación de eventos en entornos de red. El modelo de sincronía virtual se utiliza a veces para dotar a los sistemas de notificación de eventos y a los sistemas de publicación-suscripción con garantías de coherencia y tolerancia a fallos más sólidas.
Eventos generados por el usuario
Hay una gran cantidad de situaciones o eventos que un programa o sistema puede generar o responder. Algunos eventos comunes generados por el usuario incluyen:
Eventos del mouse
Un dispositivo señalador puede generar una serie de gestos de dispositivo señalador reconocibles por software . Un mouse puede generar una serie de eventos del mouse, como el movimiento del mouse (incluida la dirección del movimiento y la distancia), el botón izquierdo / derecho del mouse arriba / abajo [3] y el movimiento de la rueda del mouse , o una combinación de estos gestos.
Eventos de teclado
Al presionar una tecla en un teclado o una combinación de teclas, se genera un evento de teclado, lo que permite que el programa que se está ejecutando actualmente responda a los datos introducidos, como qué tecla presionó el usuario. [3]
Eventos de joystick
Mover un joystick genera una señal analógica XY. A menudo tienen varios botones para activar eventos. Algunos gamepads para cajas de juegos populares usan joysticks.
Eventos de pantalla táctil
Los eventos generados mediante una pantalla táctil se denominan comúnmente eventos táctiles o gestos .
Eventos de dispositivo
Los eventos del dispositivo incluyen acciones realizadas por o hacia un dispositivo, como sacudidas, inclinación, rotación, movimiento, etc.
Ver también
- Devolución de llamada (programación informática)
- Activador de base de datos
- Eventos DOM
- Programación impulsada por eventos
- Manejo de excepciones
- Controlador de interrupciones
- Interrupciones
- Patrón de observador (p. Ej., Escucha de eventos)
- Patrón de reactor frente a patrón de Proactor
- Programación de señales
- Sincronía virtual
Referencias
- ↑ Mössenböck, Hanspeter (25 de marzo de 2002). "C # avanzado: número variable de parámetros" (PDF) . http://ssw.jku.at/Teaching/Lectures/CSharp/Tutorial/ : Institut für Systemsoftware, Johannes Kepler Universität Linz, Fachbereich Informatik. pag. 26 . Consultado el 5 de agosto de 2011 .
- ^ https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener
- ^ a b Eventos de mouse y teclado en Windows Forms . Microsoft. Consultado el 12 de febrero de 2008.
enlaces externos
- Controladores de eventos de artículos y funciones de devolución de llamada
- Un diseño de alto nivel del controlador de eventos de sub-finca
- Una sintaxis de eventos para XML
- Notificaciones y eventos distribuidos
- Orden de evento
Java DOM Interface Event
Documentación de Javadocjava.awt.event
Documentación de la API de Javadoc del paquete Javajavax.swing.event
Documentación de la API de Javadoc del paquete Java- Escribir un controlador de eventos