Programación Orientada A Eventos
Programación Orientada A Eventos
CARRERA:
LICENCIATURA EN GESTIÓN DE TECNOLOGÍA DE LA INFORMACIÓN
DOCENTE:
OLINDA AGUIRRE
ESTUDIANTES:
NURIANY HERNÁNDEZ 4-818-1794
JOSÉ CANDANEDO 4-812-503
PEDRO SANTAMARIA 4-227-693
ANDRÉS SAMUDIO 4-742-1829
I SEMESTRE 2021
FECHA: 10/6/21
1
ÍNDICE
CAPITULO 1 definiciones………………………………………………………………………………………………….…………………….5
1.1 programación orientada a eventos……………………………………………………………………………………………………5
1.2 detección a eventos ……………………………………………………………………………………………………….………………..5
1.3 ejemplo de problema orientada a eventos………………………………………………………….…………………………...5
1.4 problemática…………………………………………………………………………………………………………………….……………..5
1.5 gui´s/ interfaces gráficas de usuarios…………………………………………………………………..……………………………6
1.6 herramientas visuales…………………………………………………………………………………………..………………………...6
1.7 lenguajes…………………………………………………………………………………………………………………………………………6
1.8 bibliotecas……………………………………………………………………………………………………………..……………………….6
CAPITULO 2 descenlace
ARTICULO DE LA PROGRAMACIÓN ORIENTADA A EVENTOS …………………………………………………………………7
2.1 caracteristicas…………………………………………………………………………………………………………………………………8
2.1.1 dependencia de eventos orientada al servicio……………………………………………………….……………………..8
2.1.2 orientada al servicio……………………………………………………………………………………………………..………………8
2.1.3 eventos……………………………………………………………………………………………………………………………..…………8
2.1.4 controlador de eventos………………………………………………………………………………………………………………..8
2.1.5 funciones de activación………………………………………………………………………………………………………………..8
2.1.6 tiempo controlado …………………………………………………………………………………………………………..………….8
2.1.7 ejemplo de problema orientada a eventos……………………………………………………………………………………9
2.1.8 permiso de trabajo……………………………………………………………………………………………………………………….9
2.1.9 inicio de acciones………………………………………………………………………………………………………………………...9
2.2 ventajas……………………………………………………………………………………………………………………..………………….10
2.2.1 procesamiento más rápido …………………………………………………………………………………………………………10
2.2.2 interactividad……………………………………………………………………………………………………………………………..10
2.2.3 menos codificación de decisiones ………………………………………………………………………………………………10
2.2.4 flexibilidad………………………………………………………………………………………………………….……………………..10
2.2.5 entradas válidas…………………………………………………………………………………………………………..…………….10
2
2.2.6 fácil mantenimiento……………………………………………………………………………………………………………………..10
2.3 desventajas………………………………………………………………………………………………………………..…………………..10
2.3.1 flujo de control complejo…………………………………………………………………………………………………...………..10
2.3.2 no reemplaza a la programación……………………………………………………………………………………..…………..10
2.3.3 estructurada ……………………………………………………………………………………………………………………………….10
2.3.4 flexibilidad………………………………………………………………………………………………………..……….………………..11
2.4 aplicaciones…………………………………………………………………………………………………………………....……………..11
2.4.1 interfaz gráfica de usuario ………………………………………………………………………….……………….………………11
CAPITULO 3 aspectos a tener en cuenta 3.1 eventos de acciones sobre el programa ………………….…..……11
3.2 programas secuenciales, interactivos y orientados a eventos……………………………………………...………….13
3.3ejemplos de problemas orientados a eventos …………………………………………………………..…………………….14
3.4 ejemplo de problema orientado a eventos………………………………………………………………………….………….14
4. Anexos……………………………………………………………………………………………………..………………………………………16
3
INTRODUCCIÓN
Los lenguajes visuales orientada al evento y con manejo de componentes dan al usuario que no cuenta con
mucha experiencia en desarrollo, la posibilidad de construir sus propias aplicaciones utilizando interfaces
gráficas sobre la base de ocurrencia de eventos. Para soportar este tipo de desarrollo interactúan dos tipos de
herramientas, una que permite realizar diseños gráficos y, un lenguaje de alto nivel que permite codificar los
eventos. Con dichas herramientas es posible desarrollar cualquier tipo de aplicaciones basadas en el entorno.
Visual Basic es uno de los lenguajes de programación que más entusiasmo despiertan entre los programadores
de computadoras, tanto expertos como novatos. En el caso de los programadores expertos por la facilidad con
la que desarrollan aplicaciones complejas en poquísimo tiempo (comparado con lo que cuesta programar en
Visual C++, por ejemplo). En el caso de los programadores novatos por el hecho de ver de lo que son capaces a
los pocos minutos de empezar su aprendizaje. El precio que hay que pagar por utilizar Visual Basic es una
menor velocidad o eficiencia en las aplicaciones.
Visual Basic es un lenguaje de programación visual, también llamado lenguaje de 4ta. generación. Esto quiere
decir que un gran número de tareas se realizan sin escribir código, simplemente con operaciones gráficas
realizadas con el ratón sobre la pantalla.
Visual Basic es también un programa basado en objetos, aunque no orientado a objetos como Visual C++. La
diferencia está en que Visual Basic utiliza objetos con propiedades y métodos, pero carece de los mecanismos
de herencia y polimorfismo propios de los verdaderos lenguajes orientados a objetos como Java y C++.
En este trabajo se presentará las características generales de Visual Basic, junto con algunos ejemplos sencillos
que den idea de la potencia del lenguaje orientado a eventos, y del modo en que se utiliza.
4
CAPITULO 1 DEFINICIONES
1.1 Programación orientada a eventos:
La programación dirigida por eventos es un paradigma de programación en el que tanto la estructura como la
ejecución de los programas van determinados por los sucesos que ocurran en el sistema, definidos por el
usuario o que ellos mismos provoquen. Para entender la programación dirigida por eventos, podemos
oponerla a lo que no es:mientras en la programación secuencial (o estructurada) es el programador el
quedefine cuál va a ser el flujo del programa, en la programación dirigida por eventos seráel propio usuario —
o lo que sea que esté accionando el programa— el que dirija el flujo del programa. Aunque en la programación
secuencial puede haber intervención de un agente externo al programa, estas intervenciones ocurrirán
cuando el programador lo haya determinado, y no en cualquier momento como puede ser en el caso de la
programación dirigida por eventos.
El creador de un programa dirigido por eventos debe definir los eventos que manejarán su programa y las
acciones que se realizarán al producirse cada uno de ellos, lo que se conoce como el administrador de evento.
Los eventos soportados estarán determinados por el lenguaje de programación utilizado, por el sistema
operativo e incluso por eventos creados por el mismo programador.
En la programación dirigida por eventos, al comenzar la ejecución del programa se llevarán a cabo las
inicializa-ciones y demás código inicial y a continuación el programa quedará bloqueado hasta que se produzca
algún evento. Cuando alguno de los eventos esperados por el programa tenga lugar, el programa pasará a
ejecutar el código del correspondiente administrador de evento. Por ejemplo, si el evento consiste en que el
usuario ha hecho clic en el botón de play de un reproductor de películas, se ejecutará el código del
administrador de evento, que será el que haga que la películase muestre por pantalla.
Un ejemplo claro lo tenemos en los sistemas de programación Lexico y Visual Basic, en los que a cada
elemento del programa (objetos, controles, etcétera) se le asignan una serie de eventos que generará dicho
elemento, como la pulsación de un botón del ratón sobre él o el redibujado del control.
La programación dirigida por eventos es la base de lo que llamamos interfaz de usuario, aunque puede
emplearse también para desarrollar interfaces entre componentes de Software o módulos del núcleo.
Con la aparición y popularización de los PC, el software empezó a ser demandado para usos alejados de los
clásicos académicos y empresariales para los cuales era necesitado hasta entonces, y quedó patente que el
paradigma clásico de programación no podía responder a las nuevas necesidades de interacción con el usuario
que surgieron a raíz de este hecho.
1.2 Detección de eventos
En contraposición al modelo clásico, la programación orientada a eventos permite interactuar con el usuario
en cualquier momento de la ejecución. Esto se consigue debido a que los programas creados bajo esta
arquitectura se componen por un bucle exterior permanente encargado de recoger los eventos, y distintos
procesos que se encargan de tratarlos. Habitualmente, este bucle externo permanece oculto al programador
que simplemente se encarga de tratar los eventos, aunque en algunos entornos de desarrollo (IDE) será
necesaria su construcción.
5
1.3 Ejemplo de programa orientado a eventos en pseudo lenguaje:
While (true){ Switch (event){ case mous-se_button_down: case mouse_ click: case keypressed: case Else: } }
1.4 Problemática
La programación orientada a eventos supone una complicación añadida con respecto a otros paradigmas de
programación, debido a que el flujo de ejecución del software escapa al control del programador. En cierta
manera podríamos decir que en la programación clásica el flujo estaba en poder del programador y era este
quien decidía el orden de ejecución de los procesos, mientras que en programación orientada a eventos, es el
usuario el que controla el flujo y decide.
Pongamos como ejemplo de la problemática existente, un menú con dos botones, botón 1 y botón 2. Cuando
el
1
2
7
Usuario pulsa botón 1, el programa se encarga de recoger ciertos parámetros que están almacenados en un
fichero y calcular algunas variables. Cuando el usuario pulsa el botón 2, se le muestran al usuario por pantalla
dichas variables. Es sencillo darse cuenta de que la naturaleza indeterminada de las acciones del usuario y las
características de este paradigma pueden fácilmente desembocar en el error fatal de que se pulse el botón 2
sin previamente haber sido pulsado el botón 1. Aunque esto no pasa si se tienen en cuenta las propiedades de
dichos botones, haciendo inaccesible la pulsación sobre el botón 2 hasta que previamente se haya pulsado el
botón 1.
1.5 GUI’s / Interfaces Gráficas de Usuarios
Con la evolución de los lenguajes orientados a eventos, la interacción del software con el usuario ha mejorado
enormemente permitiendo la aparición de interfaces que, aparte de ser la vía de comunicación del programa
con el usuario, son la propia apariencia del mismo. Estas interfaces, también llamadas GUI (Graphical User
Interface), han sido la herramienta imprescindible para acercar la informática a los usuarios, permitiendo en
muchos casos, a principiantes utilizar de manera intuitiva y sin necesidad de grandes conocimientos, el
software que ha colaborado a mejorar la productividad en muchas tareas.
Uno de los periféricos que ha cobrado mayor importancia tras la aparición de los programas orientados a
eventos ha sido el ratón, gracias también en parte a la aparición de los sistemas operativos modernos con sus
interfaces gráficas. Estas suelen dirigir directamente al controlador interior que va entrelazado al algoritmo.
1.6 Herramientas visuales de desarrollo
Con el paso del tiempo, han ido apareciendo una nueva generación de herramientas que incluyen código que
automatiza parte de las tareas más comunes en la detección y tratamiento de eventos. Destacan
particularmente los entornos de programación visual que conjugan una herramienta de diseño gráfica para la
GUI y un lenguaje de alto nivel. Entre estas herramientas se encuentra la conocida Visual Basic, lenguaje
altamente apreciado porprincipiantes debido a la facilidad para desarrollar software en poco tiempo y con
pocos conocimientos, y denostado por tantos otros debido a su falta de eficiencia.
6
1.7 Lenguajes
5.1 Web
• Javascript
5.2 Escritorio Windows
• Visual Basic
• Visual C++
5.3 .NET Framework (Escritorio Windows y Web)
• Visual Basic
• C#
• J#
• Lexico
5.4 Otros
• AS3
1.8 Bibliotecas
6.1 Cy C++
• Qt
• GTK+
6.2 Java
• AWT
• Swing
• SWT
6.3 Web
• ASP.NET (Mediante Javascript con el Modelo Code-behind)
7
CAPITULO 2 DESCENLACE
Programación orientada a eventos:
Características
Ejemplos
Ventajas
Aplicaciones
Este tipo de programación está diseñada 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.
8
2.1 Características de la programación orientada a eventos
Fuente: pixabay.com
10
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.
2.2 Ventajas
2.2.1 Procesamiento más rápido
Debido a la propagación de los datos entre múltiples procesadores y manejadores de eventos.
2.2.2 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.
2.2.3 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.
2.2.4 Flexibilidad
11
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.
2.2.5 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.
2.2.6 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.
2.3 Desventajas
2.3.1 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.
2.3.2 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.
2.3.3 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.
2.4 Aplicaciones
12
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!”.
2.4.1 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.
13
CAPITULO 3 ASPECTOS A TENER EN CUENTA
3.1 Otro aspecto a tener en cuenta en la programación orientada a eventos es el comprender y tener bien
claro el concepto de los siguientes términos:
Evento
Propiedades
Métodos
3.2 Los Eventos son las acciones sobre el programa, como por ejemplo:
Clic sobre un botón
Doble clic sobre el nombre de un fichero para abrirlo
Arrastrar un icono
Pulsar una tecla o una combinación de teclas
Elegir una opción de un menú
Escribir en una caja de texto
simplemente mover el ratón
Cuando se produce o dispara un evento sobre un determinado componente se da inicio a un conjunto de
acciones programadas por el usuario para ese evento concreto.
Una propiedad es una asignación que describe algo sobre un componente como por ejemplo:
Un formulario
Un botón de comando
Una caja de texto
Una etiqueta
Una imagen
14
Dependiendo de la propiedad, esta se puede asignar en tiempo de diseño usando la ventana Propiedades y/o
en tiempo de ejecución en el momento de programar el control. Las propiedades en el momento de
programar el control se muestran con color verde. Las propiedades se usan para cambiar la forma de los
componentes o controles de la aplicación, por ejemplo el tamaño de la letra de un control, el tipo de letra, la
alineación, etc.
En una ventana, el método MOVE, que mueve un formulario en un espacio de dos dimensiones en la pantalla
Otros SetFocus, LostFocus, AddItem etc…
Los métodos en App inventor los encontramos en los bloques de programación de los diferentes componentes
y estos aparecen con color violeta
15
3.2 Programas Secuenciales, Interactivos
los primeros tiempos de los ordenadores los programas eran de tipo secuencial (también llamados tipo batch).
Un programa secuencial es un programa que se arranca, lee los datos que necesita, realiza los cálculos e
imprime o guarda en el disco los resultados. De ordinario, mientras un programa secuencial está ejecutándose
no necesita ninguna intervención del usuario. A este tipo de programas se les llama también programas
basados u orientados a procedimientos o a algoritmos (procedural languages). Este tipo de programas siguen
utilizándose ampliamente en la actualidad, pero la difusión de los PC’s ha puesto de actualidad otros tipos de
programación.
Los programas interactivos exigen la intervención del usuario en tiempo de ejecución, bien para suministrar
datos, bien para indicar al programa lo que debe hacer por medio de menús. Los programas interactivos
limitan y orientan la acción del usuario.
Por su parte los programas orientados a eventos son los programas típicos de Windows, tales como Netscape,
Word, Excel, PowerPoint y otros. Cuando uno de estos programas ha arrancado, lo único que hace es
quedarse a la espera de las acciones del usuario, que en este caso son llamadas eventos.
El usuario dice si quiere abrir y modificar un fichero existente, o bien comenzar a crear un fichero desde el
principio. Estos programas pasan la mayor parte de su tiempo esperando las acciones del usuario (eventos) y
respondiendo a ellas. Las acciones que el usuario puede realizar en un momento determinado son
variadisimas, y exigen un tipo especial de programación: la programación orientada a eventos. Este tipo de
programación es sensiblemente más complicada que la secuencial y la interactiva, pero con los lenguajes
visuales de hoy, se hace sencilla y agradable.
16
3.3 PROBLEMA DE PROGRAMACIÓN DE EVENTOS (PROBLEMA DE INTERVALO)
Hay N segmentos en el eje X, y cada segmento tiene un punto inicial S y un punto final E. Se puede seleccionar
el número máximo de segmentos de línea no superpuestos. (Nota: los puntos de inicio o fin se superponen, sin
contar la superposición).
Por ejemplo: [1 5] [2 3] [3 6], puede elegir [2 3] [3 6], los dos segmentos de línea no se superponen entre sí.
Entrar
Línea 1: 1 número N, el número de segmentos de línea (2 <= N <= 10000) Línea 2-N + 1: 2 números en
cada línea, inicio y final del segmento de línea (-10 ^ 9 <= S, E <=
10 ^ 9)
Salida
Se emite el número máximo de segmentos que se pueden seleccionar.
Ejemplo de entrada
3
15
23
36
Salida de ejemplo
2
17
3.4 PROBLEMAS DE PROGRAMACIÓN ORIENTADA O DIRIGIDA A EVENTOS:
El municipio de Medellín, organizó un evento en el cual, el ingreso es a través de la factura de los servicios
públicos. A este evento, no se permite el ingreso de quiénes en su factura, la luz exceda los 250kW/h y el agua
los 20ml3. El cupo máximo es de 20 personas.
4. ANEXOS
4.1 UN POCO DE HISTORIA
A finales de los 70, los sistemas estaban pensados para trabajar como cadenas de ensamblaje donde un
programa usaba una entrada y producía una salida que sería utilizada por otro programa como entrada para
producir otra salida y así hasta finalizar el proceso. Este proceso mental de construir software es la base del
desarrollo estructurado. El padre del desarrollo estructurado (que no de la programación estructurada ojo) fue
Larry LeRoy Constantine bajo el ala del Instituto de Investigación de Sistemas de IBM. Uno de los mayores
expertos y defensores de los métodos estructurados es Edward Yourdon, tanto que las expresiones “Yourdon”
y “métodos de análisis y diseño estructurado” son sinónimos. Constantine y Yourdon definieron nuevos
modelos de control del flujo de datos implementando lo que llamaron transacciones que en realidad son un
patrón de diseño de manejadores de eventos.
4.2 Handler Pattern
En el diagrama de la derecha se muestra el siguiente proceso:
Un flujo de datos invoca eventos o lo que Constantine y Yourdon llamaron “transacciones“
Un disparador los envía a manejadores especializados, Constantine y Yourdon lo llamaron “centro de
transacciones“
Un conjunto de manejadores que se encargan de realizar operaciones sobre el flujo de datos.
18
El trabajo del disparador es analizar los eventos para determinar su naturaleza y entonces enviarlos al
manejador adecuado que es capaz de trabajar con eventos de esa naturaleza. El disparador tiene que procesar
un flujo de eventos, así que su lógica debe incluir un bucle de eventos para poder enviar un evento a un
manejador y volver a escuchar a la espera de nuevos eventos que disparar.
Es común que exista un evento especial que rompa el bucle y salga de la aplicación, a ese evento se le llama
evento finalizador y es muy común en todas las librerías para escribir aplicaciones GUI. También puede ocurrir
que el disparador capture un evento de naturaleza desconocida o para el que no exista un manejador
adecuado, en esos casos, el disparador debe descartar el evento o lanzar una excepción.
En algunas ocasiones es común que el disparador y los manejadores no sean capaces de procesar los eventos
con la suficiente premura conforme van llegando por lo que la mayoría de aplicaciones basadas en GUI
implementan una cola de eventos. Esta lógica es muy delicada y si no se implementa bien puede ser producto
de cuellos de botella fatales.
Con la aparición en los noventa de la programación orientada a objetos nuevos diseños vieron la luz como ESA
(Essential Systems Analysis) y JSD (Jackson System Development) que rompieron de forma brutal con la
antigua manera de pensar en métodos estructurados.
4.3 Arquitectura cliente-servidor
La arquitectura cliente-servidor es claramente una implementación del patrón de diseño de manejadores de
eventos. Podemos pensar en el servidor como un disparador de eventos que espera a la escucha de una
petición de un cliente que envía un evento y entonces el servidor lo re-envía a un manejador que lo procesa y
devuelve un resultado. El servidor implementa el bucle de eventos que escucha de forma continua y procesa
las peticiones reenviándolas a partes más especialistas del servidor donde son procesadas y devueltas al
cliente como respuesta. Si el bucle de eventos recibe una petición extraña, sencillamente la descarta y emite
un mensaje de error al cliente emisor.
4.4 Programación GUI
La programación gráfica o programación de GUI es dura, sobre todo si vienes del desarrollo web. Para
empezar, todo elemento que conforma la interfaz de usuario de la aplicación debe de ser definido con detalle.
19
Su posición, tamaño, color, aspecto, comportamiento, etc, etc. Por eso existen los IDEs y los Frameworks, para
hacernos la vida más sencilla a los desarrolladores.
En segundo lugar, la programación con GUI es difícil porque existen muchos detalles y conceptos que
dependen completamente del manejo de eventos. Cualquier Widget en la interfaz de usuario tiene uno o más
eventos asociados y a su vez emite uno o más eventos hacia el mundo exterior. El hardware de entrada como
el ratón y el teclado, también generan eventos y esos eventos también pueden ser capturados por los widgets
de la interfaz de usuario.
La mayoría de herramientas de creación de interfaces gráficas de usuario se distribuyen como frameworks. Los
frameworks implementan el bucle de eventos y la cola de eventos para que no tengamos que implementarlos
nosotros mismos. Eso está bien, pero el mecanismo queda encerrado dentro del framework y si no estamos
acostumbrados a la programación dirigida por eventos algunos conceptos pueden resultar realmente
confusos.
Y no solo esos bucles quedan ocultos dentro del funcionamiento del framework, sino que también quedan
ocultas mecánicas básicas que es necesario comprender para llegar a tener un entendimiento claro de la
magia detrás de este paradigma. Un ejemplo claro es el patrón observer.
4.5 El patrón Observer
La idea principal detrás del patrón observer es que existe una entidad con estados cambiantes y una o más
entidades observándola. Los observadores esperan a que la entidad observada les informe de un cambio de
estado a través de un evento que puede ser de su interés, por lo que los observadores se registran con la
entidad observada.
Cuando ocurre un evento, la entidad observada mira en su lista de observadores y notifica a aquellos que se
registraron para recibir eventos de ese tipo. Los observadores dejaron instrucciones detalladas de cómo
puede la entidad observada ponerse en contacto con ellos para recibir los eventos. A este patrón también se
le llama El Principio de Hollywood como parodia de la típica frase de Hollywood “te llamaremos en cuanto
tengamos un papel para ti“.
El sistema de ranuras y señales de Qt y el sistema de señales de GTK son ambos implementaciones del patrón
de diseño Observer.
4.6 Eventos y MVC
En el patrón de diseño MVC los eventos y el patrón de diseño observer conforman el núcleo duro del
funcionamiento interno del sistema. En en patrón de diseño MVC, el Modelo es un objeto que gestiona los
datos y el comportamiento de la aplicación, es la entidad observable en el patrón observer.
Las Vistas se registran con el Modelo como observadores del mismo. Cuando el Controlador realiza cambios
en el Modelo, notifica esos cambios a sus observadores registrados que modifican la interfaz de la aplicación.
En el patrón de diseño MVC los objetos de evento incluyen grandes cantidades de datos que viajan de una
parte a otra de la aplicación a través del viejo y raído patrón de manejadores de eventos.
4.7 Programación asíncrona
20
La programación asíncrona pretende llevar este patrón de diseño a todos los aspectos del desarrollo de
software por medio de mecanismos que articulan de una u otra forma el uso de eventos, señales y callbacks
en todas las llamadas a funciones y métodos llevados a cabo por la aplicación utilizando además múltiples
hilos de ejecución normalmente en una pila o piscina de hilos gestionada por un bucle de eventos
extremadamente complejo.
Algunos lenguajes como .NET lo incorporan como parte del lenguaje de facto (versión 3.0 o superiores). Otros
lenguajes disponen de librerías, herramientas o frameworks que implementan la programación asíncrona. Así
tenemos Twisted para Python, EventMachine para Ruby, Node.js para JavaScript, y muchas otras que
seguramente desconozco para muchos otros lenguajes.
22
Sugerencia: Este evento se usa a menudo junto con el evento onmouseover , que ocurre cuando el puntero se
mueve a un elemento o a uno de sus elementos secundarios. El evento onMouseOver se ejecuta cuando
pasamos la flecha del mouse sobre un elemento HTML y el evento onMouseOut cuando la flecha abandona el
mismo. Para probar estos eventos implementaremos una página que cambie el color de un cuadrado de 200px
de ancho y 200px de alto. Implementaremos una función que cambie el color con un valor que llegue como
parámetro. Cuando retiramos la flecha del mouse volvemos a pintar de negro el fondo de cuadrado:
Las llamadas a las funciones las hacemos inicializando las propiedades onMouseOver y onMouseOut:
23
Conclusión
La programación orientada a eventos facilitan el proceso de programación visual por su practicidad al generar
rápidamente algunas aplicaciones basadas en objetos visuales. Ayuda al programador novato en el rápido
aprendizaje de desarrollo de nuevos programas con alta calidad en muy poco tiempo.
Con la evolución de los lenguajes orientados a eventod, la interacción del software con el usuario ha mejorado
enormemente permitiendo la aparición de interfaces que, a parte de ser la vía de comunicación del programa
con el usuario, son la propia apariencia del mismo. Estas interfaces, han sido la herramienta más importante
para acercar la infromática a los ausuarios, permittiendo en muchos casos, a principiantes utilizar de manera
intuitiva y sin necesidad de grandez conocimientos, el software que ha colaborado a mejorar la productividad
en muchas tareas.
Uno de los periféricos que ha cobrado mayor importancia tras las parición de los programas orientados a
eventos ha sido el ratón, gracias también en parte a la aparición de los sistemas operativos modernos con sus
interfaces gráficas.
24
Bibliografías
Programación Orientada a Eventos. (S.F.). Recuperado el 14 de junio de 2021 de
http://umh1467.edu.umh.es/wpcontent/uploads/sites/25/2016/02/Programacio%CC%81n-Orientada-a-
Eventos.pdf
Corvo, H. (2020). Programación orientada a eventos: características, ejemplos, ventajas, aplicaciones.
Recuperado el 14 de junio de 2021 de https://www.lifeder.com/programacion-orientada-a-eventos/
https://www.monografias.com/trabajos/progeventos/progeventos.shtml
https://es.wikipedia.org/wiki/Programaci%C3%B3n_dirigida_por_eventos
Campos, O. (2011). Introducción a la programación dirigida por eventos. Recuperado el 14 de junio de 2021
de https://www.genbeta.com/desarrollo/introduccion-a-la-programacion-dirigida-por-eventos
Eventos onFocus y onBlur (S.F.). Recuperado el 14 de junio de 2021 de https://www.todo-
argentina.net/cursos/javascript/pagina33.php
Eventos onMouseOver y onMouseOut. (S.F.). Recuperado el 14 de junio de 2021 de https://www.todo
argentina.net/cursos/javascript/pagina34.php
25