Evento (informática) - Event (computing)

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 en 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 lo envía 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 se manejan normalmente de forma síncrona: 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 exigir el servicio en cualquier momento.

Modelo de evento delegado

Modelo de evento delegado. clickmees el origen del evento, un botón en este ejemplo, y contiene una lista de oyentes.

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:

delegate void Notifier (string sender);

class Model {
    public event Notifier notifyViews;
    public void Change() { ... notifyViews("Model"); }
}

class View1 {
    public View1(Model m) {
        m.notifyViews += new Notifier(this.Update1);
    }

    void Update1(string sender) {
        Console.WriteLine(sender + " was changed during update"); 
    }
}

class View2 {
    public View2(Model m) {
        m.notifyViews += new Notifier(this.Update2); 
    }

    void Update2(string sender) {
        Console.WriteLine(sender + " was changed"); 
    }
}

class Test {
    static void Main() {
        Model model = new Model();

        new View1(model);
        new View2(model);
        model.Change();
    }
}

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 ). Cada evento es una pieza de información a nivel de aplicación del marco subyacente , generalmente el conjunto 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 .

Los eventos son creados por el marco 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 los 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 y 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 hacia arriba / abajo 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.

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

Referencias

enlaces externos