En programación y diseño de software , un evento es una acción o suceso reconocido por el software , que a menudo se origina de forma asincrónica desde el entorno externo y que puede ser manejado por el software. Los eventos de la computadora pueden ser generados o activados por el sistema, por el usuario o de otras maneras. Los eventos pueden manejarse de manera sincrónica con el flujo del programa . Es decir, el software puede tener uno o más lugares dedicados donde se manejan los eventos, con frecuencia un bucle de eventos . Sin embargo, en la arquitectura basada en eventos , los eventos generalmente se procesan de forma asincrónica .
El usuario puede ser la fuente de un evento. El usuario puede interactuar con el software a través de los periféricos de la computadora , por ejemplo, escribiendo en un teclado o haciendo clic con un mouse. 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, como al comunicar la finalización de una tarea. El software que cambia su comportamiento en respuesta a eventos se dice que está impulsado por eventos , a menudo con el objetivo de ser interactivo .
Los sistemas controlados por eventos se utilizan normalmente cuando existe alguna actividad externa asincrónica que necesita ser manejada por un programa, como por ejemplo, cuando un usuario presiona un botón del ratón. Un sistema controlado por eventos normalmente ejecuta un bucle de eventos que espera a que se produzcan dichas actividades, como la entrada de datos de dispositivos o alarmas internas. Cuando se produce una de ellas, recopila datos sobre el evento y lo envía al software de control de eventos que se encargará de gestionarlo.
Un programa puede optar por ignorar eventos y puede haber bibliotecas para enviar un evento a varios controladores que pueden programarse para escuchar un evento en particular. Los datos asociados con un evento especifican, como mínimo, de qué tipo es, pero pueden incluir otra información, como cuándo ocurrió, quién o qué lo causó y datos adicionales proporcionados por la fuente del evento al controlador sobre cómo se debe procesar el evento.
Los eventos se utilizan normalmente en interfaces de usuario, donde las acciones del mundo exterior (como clics del ratón, cambio de tamaño de ventanas, pulsaciones del teclado y mensajes de otros programas) son manejadas por el programa como una serie de eventos. Los programas escritos para muchos entornos de ventanas constan principalmente de controladores de eventos.
Los eventos también se pueden utilizar en el nivel del conjunto de instrucciones , donde complementan a las interrupciones . En comparación con las interrupciones, los eventos normalmente se implementan de forma sincrónica: el programa espera explícitamente a que se genere y gestione un evento (normalmente, invocando una instrucción que envía el próximo evento), mientras que una interrupción puede exigir un servicio inmediato.
Existen muchas situaciones o eventos que un programa o sistema puede generar o a los cuales puede responder. Algunos eventos comunes generados por el usuario incluyen:
Un dispositivo señalador puede generar una serie de gestos de dispositivo señalador reconocibles por software . Un ratón puede generar una serie de eventos de ratón, como el movimiento del ratón (incluida la dirección del movimiento y la distancia), el botón izquierdo/derecho del ratón hacia arriba/abajo [1] y el movimiento de la rueda del ratón , o una combinación de estos gestos. Por ejemplo, los dobles clics suelen seleccionar palabras y caracteres dentro de un límite, y los triples clics seleccionan párrafos enteros.
Al presionar una tecla de 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(s) presionó el usuario. [1]
Al mover un joystick se genera una señal analógica XY. Suelen tener varios botones para activar eventos. Algunos mandos de juegos de las consolas más populares utilizan joysticks.
Los eventos generados mediante una pantalla táctil se denominan comúnmente eventos o gestos táctiles .
Los eventos del dispositivo incluyen acciones realizadas por o hacia un dispositivo, como sacudir, inclinar, rotar o mover.
Una variante común en la programación orientada a objetos es el modelo de eventos delegados , que ofrecen algunas interfaces gráficas de usuario . Este modelo se basa en tres entidades:
Además, el modelo requiere que:
C# utiliza eventos como delegados especiales que solo pueden ser activados por la clase que los declara. Esto permite una mejor abstracción , por ejemplo: [2]
delegado void Notificador ( cadena remitente ); clase Modelo { público evento Notificador notifyViews ; público void Cambio () { ... notifyViews ( "Modelo" ); } } clase View1 { public View1 ( Model model ) { model.notifyViews + = new Notifier ( this.Update1 ) ; } void Update1 ( string sender ) { Console.WriteLine ( $ " {sender} se modificó durante la actualización" ); } } clase View2 { public View2 ( Model model ) { model.notifyViews + = new Notifier ( this.Update2 ) ; } void Update2 ( string sender ) { Console.WriteLine ( $ " {se cambió el remitente}" ); } } clase Prueba { static void Main () { Modelo modelo = nuevo Modelo (); nueva Vista1 ( modelo ); nueva Vista2 ( modelo ); modelo . Cambiar (); } }
En programación informática, un controlador de eventos puede implementarse utilizando una subrutina de devolución de llamada que maneja las entradas recibidas en un programa (llamada un oyente en Java y JavaScript [3] ). Cada evento es una pieza de información a nivel de aplicación del marco subyacente , normalmente el kit de herramientas de la GUI . Los eventos de la GUI incluyen pulsaciones de teclas , movimiento del ratón , selecciones de acciones y vencimiento de temporizadores . En un nivel inferior, los eventos pueden representar la disponibilidad de nuevos datos para leer un archivo o un flujo de red. Los controladores de eventos son un concepto central en la programación basada en eventos .
Los eventos son creados por el framework 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 manejadores de interrupciones y los manejadores de señales corresponden a los manejadores de eventos.
Los eventos creados son procesados primero por un despachador de eventos dentro del marco. Normalmente, administra las asociaciones entre eventos y controladores de eventos, y puede poner en cola controladores de eventos o eventos para su posterior procesamiento. Los despachadores de eventos pueden llamar a los controladores de eventos directamente o esperar a que los eventos se saquen de la cola con información sobre el controlador que se va a ejecutar.
La notificación de eventos es un término utilizado junto con el software de comunicaciones para vincular aplicaciones que generan pequeños mensajes (los "eventos") con aplicaciones que monitorean las condiciones asociadas y pueden tomar acciones activadas por eventos. [4]
La notificación de eventos es una característica importante en los sistemas de bases de datos modernos (se utiliza para informar a las aplicaciones cuando se han producido las condiciones que están vigilando), los sistemas operativos modernos (se utiliza para informar a las aplicaciones cuando deben realizar alguna acción, como actualizar una ventana) y los sistemas distribuidos modernos, 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 de modo que la aplicación que produce eventos no necesite saber qué aplicaciones los consumirán, o incluso cuántas aplicaciones supervisarán el flujo de eventos.
La notificación de eventos se utiliza a veces 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 en 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 de mayores garantías de tolerancia a fallos y consistencia.
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