stringtranslate.com

Programación basada en eventos

En programación de computadoras , la programación basada en eventos es un paradigma de programación en el que el flujo del programa está determinado por eventos externos . Los eventos típicos pueden ser eventos de interfaz de usuario desde ratones , teclados , paneles táctiles y pantallas táctiles , o entradas de sensores externos , o generarse mediante programación ( paso de mensajes ) desde otros programas o subprocesos , o eventos de red .

La programación basada en eventos es el paradigma dominante utilizado en aplicaciones de interfaz gráfica de usuario y servidores de red.

En una aplicación controlada por eventos, generalmente hay un bucle de eventos que escucha eventos y luego activa una función de devolución de llamada cuando se detecta uno de esos eventos.

Los programas controlados por eventos se pueden escribir en cualquier lenguaje de programación , aunque la tarea es más fácil en lenguajes que proporcionan abstracciones de alto nivel .

Aunque no se ajustan exactamente al modelo basado en eventos, el manejo de interrupciones y el manejo de excepciones tienen muchas similitudes.

Bucle de eventos

Debido a que el bucle de eventos de recuperación/despacho de eventos es común entre las aplicaciones, muchos marcos de programación se encargan de su implementación y esperan que el usuario proporcione solo el código para los controladores de eventos.

RPG , uno de los primeros lenguajes de programación de IBM , cuyo concepto de diseño de la década de 1960 era similar a la programación basada en eventos analizada anteriormente, proporcionaba un bucle de E/S principal incorporado (conocido como "ciclo de programa") donde los cálculos respondían de acuerdo con ' indicadores ( banderas ) que se establecieron anteriormente en el ciclo.

Controladores de eventos

La lógica real está contenida en rutinas de manejo de eventos. Estas rutinas manejan los eventos a los que responderá el programa principal. Por ejemplo, un solo clic con el botón izquierdo del mouse en un botón de comando en un programa GUI puede desencadenar una rutina que abrirá otra ventana, guardará datos en una base de datos o saldrá de la aplicación. Muchos IDE proporcionan al programador plantillas de eventos GUI, lo que le permite concentrarse en escribir el código del evento.

Aunque realizar un seguimiento del historial suele ser trivial en un programa secuencial. Debido a que los controladores de eventos se ejecutan en respuesta a eventos externos, estructurar correctamente los controladores para que funcionen cuando se los llama en cualquier orden puede requerir atención y planificación especiales en un programa controlado por eventos.

Además de escribir los controladores de eventos, los controladores de eventos también deben estar vinculados a eventos para que se llame a la función correcta cuando se produzca el evento. Para eventos de UI, muchos IDE combinan los dos pasos: haga doble clic en un botón y el editor crea un controlador de eventos (vacío) asociado con el usuario que hace clic en el botón y abre una ventana de texto para que pueda editar el controlador de eventos.

Usos comunes

La mayoría de las arquitecturas GUI existentes utilizan programación basada en eventos. [1] Windows tiene un bucle de eventos . El marco Java AWT procesa todos los cambios de la interfaz de usuario en un solo subproceso, llamado subproceso de distribución de eventos . De manera similar, todas las actualizaciones de la interfaz de usuario en el marco Java JavaFX ocurren en el subproceso de la aplicación JavaFX. [2]

La mayoría de los servidores y marcos de red, como Node.js, también están controlados por eventos. [3]

Crítica

Se ha criticado el diseño de aquellos programas que se basan en el modelo de evento-acción, y se ha sugerido que el modelo de evento-acción lleva a los programadores a crear código de aplicación excesivamente complejo, difícil de extender y propenso a errores. [1] Se han defendido las máquinas de estado basadas en tablas como una alternativa viable. [4] Por otro lado, las propias máquinas de estado impulsadas por tablas sufren importantes debilidades, incluido el fenómeno de explosión de estado . [5] Una solución para esto es utilizar redes de Petri .

Manejo de interrupciones y excepciones

Ver también

Referencias

  1. ^ ab Samek, Miro (1 de abril de 2013). "¿Quién movió mi estado?". Dr. Dobb . Consultado el 28 de enero de 2018 .
  2. ^ Fedortsova, Irina (junio de 2012). "Simultaneidad en JavaFX". Inicio de documentación de JavaFX . Oráculo . Consultado el 4 de enero de 2018 . El gráfico de escena JavaFX, que representa la interfaz gráfica de usuario de una aplicación JavaFX, no es seguro para subprocesos y solo se puede acceder y modificar desde el subproceso de la interfaz de usuario, también conocido como subproceso de la aplicación JavaFX.
  3. ^ Programación basada en eventos en Node.js.
  4. ^ Samek, Miro (11 de marzo de 2009). "Máquinas de estados para sistemas controlados por eventos" . Consultado el 19 de marzo de 2013 .
  5. ^ Patrick Schaumont (27 de noviembre de 2012). Una introducción práctica al diseño de código de hardware/software . ISBN 978-1-4614-3737-6.

enlaces externos