Programación orientada a eventos: características, ejemplos, ventajas, aplicaciones
La programación orientada a eventos se refiere a un modelo de la programación de computadoras, donde se utilizan los eventos que suceden para la determinación del flujo de control de un programa.
No es un tipo de tecnología o lenguaje de programación, sino un enfoque que se implementa durante la etapa de desarrollo del producto. Básicamente, separa la lógica de procesamiento de eventos del resto del código de un programa.
Este tipo de programación está diseñado para descubrir eventos mientras van sucediendo, usando un procedimiento apropiado de manejo de eventos para tratarlos, normalmente mediante una llamada a una función o método.
Teóricamente, el estilo de esta programación es compatible con todos los lenguajes de programación, aunque puede ser diferente en la forma de implementarse.
En general, en una aplicación controlada por eventos hay un bucle principal que “escucha” los nuevos eventos entrantes, activando una llamada a una función cuando estos se detectan. Por tanto, su funcionamiento se enfoca en los eventos, decidiendo estos qué ejecutar y en qué orden.
Índice del artículo
- 1 Características de la programación orientada a eventos
- 2 Ejemplos de programación orientada a eventos
- 3 Ventajas
- 4 Desventajas
- 5 Aplicaciones
- 6 Referencias
Características de la programación orientada a eventos
Dependencia de eventos
El flujo del programa viene dado por eventos que pueden ser acciones del usuario, mensajes de otros programas, etc., separando la lógica de procesamiento de los eventos del resto del código de un programa, contrastando así con el procesamiento por lotes.
Los eventos en sí pueden ser desde aceptar o rechazar una solicitud de préstamo, denominado evento de alto nivel, hasta que un usuario presione una tecla, que es un evento de bajo nivel.
Orientada al servicio
Se utiliza para escribir programas diseñados para el servicio sin ralentizar la computadora, ya que la orientación al servicio solo consume poco poder de procesamiento. Además, los servicios se ejecutan por lo general en el trasfondo del sistema operativo.
Eventos
Es una condición que surge durante la ejecución de un programa y que requiere alguna acción por parte del sistema. Cada evento es diferente por naturaleza, algunos requieren que el programa recobre y muestre cierta información, y otros que se inicien algunos cálculos y cambios de estado.
Los eventos incluyen al mouse, al teclado, una interfaz de usuario y las acciones que se deben activar en el programa cuando ocurran. Esto significa que el usuario debe interactuar con un objeto en el programa, como hacer clic en un botón del mouse, usar el teclado para seleccionar un botón, etc.
Controladorde eventos
Es una determinada unidad del programa que se activa para reaccionar ante un evento. Es decir, es un tipo de función o método que ejecuta una acción específica cuando se activa un evento determinado.
Por ejemplo, podría ser un botón que cuando el usuario haga clic en él muestre un mensaje y cuando vuelva a hacer clic en ese botón cierre el mensaje.
Funciones de activación
Son funciones que deciden qué código ejecutar cuando se produce un evento específico. Se utilizan para seleccionar qué controlador de eventos emplear al producirse un evento.
Tiempo controlado
Es un código específico que se ejecuta en un momento determinado. Esto significa que es una tarea preestablecida por hacer.
La actualización de Windows es un ejemplo de tiempo controlado, donde el usuario puede establecer cuándo actualizar o cuándo verificar y descargar la actualización.
Ejemplos de programación orientada a eventos
Los programas orientados a eventos se han convertido en algo muy común. Entre los ejemplos más notorios se encuentra el procesamiento de textos, herramientas de dibujo, hojas de cálculo, etc.
La mayoría de los sistemas modernos de mensajería también siguen el patrón orientado a eventos, mientras que los sitios web a gran escala usan arquitecturas escalables y controladas por eventos de naturaleza distribuida. Otros ejemplos son:
– Se ha presionado una tecla (editor de texto).
– Un nuevo calendario de tareas está listo para ser distribuido a todo el personal (sistema de gestión).
– Se ha recibido un mensaje HTML (servidor web).
– Se ha detectado un patrón de comercio ilegal (detección de fraude).
– Un automóvil en un juego de computadora choca con otro automóvil (juego de carreras).
– Un robot ha llegado a su destino (gestión de almacén en tiempo real).
Permiso de trabajo
Un ejemplo práctico de un evento utilizado en la programación orientada a eventos podría ser un empleado que solicita un permiso de trabajo en un sistema. Cuando este empleado expide su solicitud activará una notificación que será enviada al gerente para que la apruebe.
El gerente podría ver los detalles de la solicitud, aprobarla o rechazarla, actualizándose en el sistema sin necesidad de iniciar sesiones adicionales.
Inicio de acciones
Las acciones de un programa que sigue los fundamentos de la programación orientada a eventos se inician por eventos:
– Del hardware.
– Programados.
– De tiempo de ejecución.
– Del sistema operativo.
– Activados por instrucciones del usuario dadas a través de la interacción con la GUI del programa.
En su modo más simple, los programadores tienen que responder la siguiente pregunta: “¿qué debería suceder cuando ocurre un evento determinado?”.
La siguiente rutina de pseudocódigo muestra cómo podría funcionar un planificador muy simple. Consiste de un bucle principal que se ejecuta continuamente hasta que se produzca alguna condición de terminación.
Cuando se produce un evento, el planificador debe determinar el tipo de evento y seleccionar un controlador de eventos apropiado, o manejar el evento si no existe un controlador de eventos adecuado.
Ventajas
Procesamiento más rápido
Debido a la propagación de los datos entre múltiples procesadores y manejadores de eventos.
Interactividad
Esta es la ventaja más importante de la programación orientada a eventos, mejorando la experiencia del usuario. Los usuarios actuales quieren participar activamente y no quedarse como consumidores pasivos.
Por tanto, los programas basados en eventos ayudan a los usuarios a navegar por su propia experiencia y explorar una variedad de opciones, sin restricciones preestablecidas.
Menor codificación de decisiones
Este enfoque de programación posee numerosas ventajas para todos los interesados, ya que se requieren codificar menos decisiones que las aplicaciones tradicionales.
Muchos eventos están determinados por las acciones del usuario, en lugar de tener una codificación avanzada para todos los escenarios posibles. Mientras las aplicaciones tradicionales actúan, las aplicaciones orientadas a eventos reaccionan.
Flexibilidad
Se adapta perfectamente a las tendencias recientes de ingeniería de software, como computación en la nube, microservicios y la necesidad de una mejor escalabilidad con sistemas flexibles y distribuidos.
Entradas válidas
Elimina la posibilidad de entradas con valores no válidos. Una aplicación tradicional hace una pregunta y permite al usuario escribir una respuesta. Las aplicaciones orientadas a eventos suelen ofrecer un conjunto de opciones, ya sea como botones o como menús desplegables.
Fácil mantenimiento
Se elimina la necesidad de corregir y ajustar el código existente al agregar o quitar algún módulo. El sistema continúa funcionando sin problemas, independientemente de cualquier ajuste de este tipo.
Por tanto, esta programación es adecuada para aplicaciones con flujos de control basados en un conjunto de eventos internos y externos, en lugar de basarse en una estructura.
Desventajas
Flujo de control complejo
Este enfoque de programación no es la mejor opción para aplicaciones pequeñas y sencillas, porque los esfuerzos que se deben realizar no resultan ser sensatos.
El desarrollo de una aplicación orientada a eventos aumenta la complejidad del diseño y entrega del sistema. Esto se debe a que las arquitecturas tradicionales de software se basan en interacciones basadas en solicitudes, en lugar de interacciones controladas por eventos.
Además, se requiere también una gran cantidad de preparación debido a la necesidad de bucles de eventos incesantemente dinámicos.
No reemplaza a la programación estructurada
Se debe tomar en cuenta que la programación orientada a eventos no reemplaza la programación estructurada tradicional, sino que solo la complementa.
Las metodologías de programación tradicionales siguen siendo esenciales para escribir el programa en general, mientras que los elementos de codificación manejados por eventos solo sirven para ayudar a diseñar la GUI.
Flexibilidad
La flexibilidad de la programación orientada a eventos, que es su ventaja indiscutible, también se convierte en un fraude en ciertos escenarios. Una de esas manifestaciones es la imprevisibilidad de un programa orientado a eventos en caso que tenga cambios y un control más débil sobre el sistema en general.
Aunque a los codificadores les gusta utilizar la programación orientada a eventos para poder realizar ajustes sin fricciones, tales como la eliminación o la adición de algunos módulos funcionales, estos ajustes pueden generar alteraciones no esperadas en la funcionalidad.
En la programación convencional, el sistema descubre muy rápidamente estas anomalías operativas, proporcionando un informe al programador sobre sus causas. En el entorno de la programación orientada a eventos, la detección de tales disfunciones es menos rápida y sencilla.
Aplicaciones
Ya que la programación orientada a eventos resulta ser más un enfoque que un tipo de lenguaje, las aplicaciones que se basan en eventos pueden crearse en cualquier lenguaje de programación.
La programación orientada a eventos está transformando el mundo de los servicios de desarrollo de software y se está convirtiendo en parte integral del desarrollo actual. Su difusión fue estimulada por Windows y la difusión de entornos visuales.
Un caso de una situación impulsada por un evento se parecería a un temporizador de activación configurado para que haga una tarea específica en una hora determinada, como sonar y comunicar algo que diga: “¡Despierta!”.
Interfaz gráfica de usuario
Este enfoque de programación se centra en eventos. Sus áreas de aplicación más comunes incluyen la creación de la interfaz gráfica de usuario (GUI), aplicaciones del servidor y el desarrollo de juegos para múltiples jugadores.
Mientras los programas convencionales establecen el flujo de los eventos y tienen el control sobre las opciones del usuario, esta programación más innovadora sirvió para crear la GUI.
La GUI cambió la interacción humano-computadora al ofrecer a los usuarios múltiples opciones en forma de menús desplegables, ventanas, botones y casillas de verificación.
Por tanto, en lugar de seguir el orden predeterminado de acciones establecidas por la computadora, los usuarios pueden elegir por su cuenta uno de los muchos comandos disponibles.
Además de aplicarse ampliamente esta programación en las interfaces gráficas de usuario, también en las aplicaciones que realizan ciertas acciones como respuesta a la entrada del usuario, tales como aplicaciones web JavaScript.
Referencias
- Raspal Chima (2018). Event-Driven Applications In Software Development. Blueberry Consultants. Tomado de: bbconsult.co.uk.
- Quorum (2020). Building Apps – Lesson 1: Introduction to Event-Driven Programming. Tomado de: quorumlanguage.com.
- Margaret Rouse (2012). Event-driven application. Techtarget. Tomado de: searchitoperations.techtarget.com.
- UK Essays (2018). Event-Driven Programming Features. Tomado de: ukessays.com.
- Souvik Banerjee (2019). Event-Driven Programming: Why Is It Trending Now? RS Websols. Tomado de: rswebsols.com.
- Techopedia (2018). Event-Driven Program. Tomado de: techopedia.com.
- Technology UK (2020). Event-driven Programming. Tomado de: technologyuk.net.