Programación basada en eventos “Event-Based Programming”: Conceptos

Slides:



Advertisements
Presentaciones similares
UNIVERSIDAD PRIVADA SAN PEDRO ESCUELA INGENIERIA CIVIL
Advertisements

Curso de Java Capitulo 7: Continuación Poo Profesor:
VISUAL. 1.Hacer nuevo proyecto 2.Crear un nuevo paquete 3.Hacer una clase visual 1.Dar el nombre 2.Seleccionar el estilo AWT 3.Seleccionar Frame.
Programación “Conducida por eventos” Event-driven programming
DIAGRAMAS DE SECUENCIAS
Instalación, Manipulación y uso.
FLAN “F- LINKS AND NODES”
"java del lado del servidor" Servlet y JSP Java Server Pages.
Fundamentos de Ingeniería de Software
Siguiente Excepciones Introducción. AnteriorSiguiente Definición Una excepción es un evento que ocurre durante la ejecución de un programa que desestabiliza.
Algoritmo y Estructura de Datos I I Facultad de Ingeniería y Arquitectura Ing. Juan José Montero Román. Sesión 12 - Introducción.
VISUAL BASIC CONSOLA Todas las ordenes o instrucciones se digitan dentro de sub Main() y End Sub ÁREA DE TRABAJO: Las aplicaciones de consola son aquellas.
TEMA 1. Diseño de interfaces gráficas
Caso de estudio: Un sistema de mensajería
Programación “Conducida por eventos” Event-driven programming Agustín J. González ELO330.
Java Mayra M. Méndez Anota.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
Igor Santos Grueiro. Ahora tenemos datos y datos …
1 Interfaces Agustín J. González ELO Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.
Ingeniero Anyelo Quintero
Patrón Observador Un patrón de diseño es una descripción de clases y objetos comunicándose entre si adaptada para resolver un problema de diseño general.
TRINO ANDRADE G UNIVERSIDAD ECOTEC. PRESENTACIÓN DE OUTLOOK EXPRESS Microsoft Outlook Express es una herramienta necesaria que le permite administrar.
Proyecto NETeus 1.0 Diseño y Programación Orientada a Objetos. Primer Semestre 2004 Por Solange Ahumada Fierro.
EI, Profesor Ramón Castro Liceaga Agosto de 2005 UNIVERSIDAD LATINA (UNILA) PROGRAMACION ORIENTADA A OBJETOS EN JAVA (Optativa) PROGRAMACION DE INTERFASES.
APLICACIÓN EN VISUAL BASIC
QUÈ ES VISUAL BASIC ES UN LENGUAJE DE PROGRAMACIÒN QUE SE HA DISEÑADO PARA FACILITAR EL DESARROLLO DE APLICACIONES EN EL ENTORNO GRÀFICO (GUI GRAPHICAL.
Ingeniería de software
Manejo de Eventos. Lo básico para manejo de eventos Cuando se realiza una interacción con el programa, se envía un evento. Es fundamental su comprensión.
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos.
Interfaces ELO329: Diseño y Programación Orientados a Objetos.
1 Programación “Conducida por eventos” Event-driven programming Agustín J. González ELO329/ELO330.
1 Interfaces y Clases Internas ELO-329: Diseño y programación orientados a objetos Agustín J. González.
Programación de Interfaces Gráficas en Java
1 Interfaces y Clases Internas ELO-329: Diseño y programación orientados a objetos Agustín J. González.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
1 TEMA 1. Diseño de interfaces gráficas 1.Introducción 2.Componentes de la interfaz 3.Programación dirigida por eventos 4.Gestores de ubicación 5.Primitivas.
:: Prof. Yeniffer Peña Programación I Interface Gráfica de Usuario Presentación.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) LENGUAJES DE PROGRAMACIÓN PARA EL DESARROLLO DE INTERFACES.
Java Applets como ejemplo de “Framework” Agustín J. González ELO-329.
Tema 6 – Servicio de Correo Electrónico
Interfaces y Clases Internas
1 Interfaces Agustín J. González ELO Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.
Capítulo 2 “Subprogramas/Funciones - Arreglos”
ELO329: Diseño y Programación Orientados a Objetos
CONCEPTOS.
Guadalupe Andrade Mociño.  Significa Modelo Vista Controlador  Es un patrón de diseño  Esta compuesto por tres grandes capas: modelo, vista y controlador.
¿QUE ES EL DIAGRAMA DE ESTADO ?
EduCat Prototipos. Introducción En las próximas páginas se muestra un bosquejo de lo que será la interfaz gráfica de nuestro programa, EduCat, para los.
Manejo de Eventos Visita FIEC FIEC. Eventos En evento es una acción iniciada por el usuario. Ejemplo de eventos son: presionar un botón, cambiar un texto,
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
Programación Orientada a Objetos: CLASES Y OBJETOS
M.C. Meliza Contreras González.  Se le llama interfaz gráfica al conjunto de componentes gráficos(ventanas, botones, combos, listas, cajas de dialogo,
1 Programación “Conducida por eventos” Event-driven programming Agustín J. González ELO329/ELO330.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
Programación en Visual Basic
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
DIAGRAMAS DE SECUENCIA. UML está compuesto por los siguientes diagramas:
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
Requerimientos del software
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
ELO329: Diseño y Programación Orientados a Objetos
ELO329: Diseño y Programación Orientados a Objetos
ELO329: Diseño y Programación Orientados a Objetos
ELO329: Diseño y Programación Orientados a Objetos
Transcripción de la presentación:

Programación basada en eventos “Event-Based Programming”: Conceptos ELO329: Diseño y Programación Orientados a Objetos Programación basada en eventos “Event-Based Programming”: Conceptos

Nuevo paradigma de programación En la programación basada en eventos (o programación dirigida por eventos) el flujo del programa está determinado por eventos como salidas de un sensor, eventos de usurio (mouse, teclado), mensajes desde otros programas, etc. Paradigmas de programación Programación Imperativa Programación basada en eventos Programación Declarativa Orientada a Objetos Por procedimientos

ELO-329: Diseño y Programación Orientados a Objetos Introducción Este tema tiene su aparición en la programación de interfaces gráficas de usuarios. Los programas de consolas típicos siguen un flujo secuencial en el que típicamente se tienen ciclos: entrada->procesamiento->salida Cuando programamos una Interfaz Gráfica de Usuario (GUI: Graphics User Interface) debemos tomar en cuenta la variedad de posibles interacciones con el usuario. En lugar de un único flujo de entrada de datos por consola, las GUIs permiten muchas más acciones del usuario. Por ejemplo: es posible presionar botones gráficos, escribir texto en un campo de texto, o mover alguna scrollbar. ¿Cómo podemos estar atento a tantas cosas al mismo tiempo? La GUI del programa debe responder bien a todos estos eventos. ELO-329: Diseño y Programación Orientados a Objetos

ELO-329: Diseño y Programación Orientados a Objetos Modelo Una forma de manejar todo tipo de posibles interacciones de usuarios es el uso de interrupciones. De esta manera la CPU no pierde tiempo “mirando” los posibles eventos de usuarios, sino simplemente responde al evento y reanuda su procesamiento normal (otras tareas). Comúnmente, lenguajes de programación no dan acceso directo a eventos asincrónicos. Lenguajes como Java nos permiten definir y manejar interrupciones o eventos por software. La API de Java permite a los programadores crear clases de objetos, llamados listeners, que responden a interrupciones causadas por la GUI. La API de Java tiene interfaces (listeners) que deben ser implementadas por las clases que manejan los eventos posibles. Los métodos de la interfaz (“equivalen a las rutinas de servicio de interrupción”) son llamados cuando un evento específico ocurre. ELO-329: Diseño y Programación Orientados a Objetos

Pasos para programar respuestas a Eventos Componente Gráfica Algún Objeto Listener Se ve necesidad de reaccionar ante un evento registrar(listener) Método asociado(datos del evento) Se produce el evento Los listener son instancias de las clases definidas por el usuario y que implementan los métodos definidos por la Interfaz (estos métodos equivalen a “las rutinas de atención de Interrupción” ). Las componentes gráficas y los datos del evento son objetos de las clases de Java. ELO-329: Diseño y Programación Orientados a Objetos

ELO-329: Diseño y Programación Orientados a Objetos Ejemplo Veamos el caso de una ventana de nivel superior en Java (aquellas que se pueden mover libremente en el desktop) CloseableFrame.java import java.awt.event.*; import javax.swing.*; class CloseableFrame extends JFrame { public CloseableFrame() { setTitle("My Closeable Frame"); setSize( 300, 200); // Registramos el objeto que se hará cargo // de atender los eventos de la ventana MyWindowListener listener = new MyWindowListener(); addWindowListener(listener); } } // continúa en próxima lámina ELO-329: Diseño y Programación Orientados a Objetos

Ejemplo (continuación)‏ class MyWindowListener implements WindowListener { // Do nothing methods required by interface public void windowActivated( WindowEvent e) {} public void windowDeactivated( WindowEvent e) {} public void windowIconified( WindowEvent e) {} public void windowDeiconified( WindowEvent e) {} public void windowOpened( WindowEvent e) {} public void windowClosed( WindowEvent e) {} // override windowClosing method to exit program public void windowClosing( WindowEvent e) { System.exit( 0); // normal exit } class Main { public static void main( String[] args) { CloseableFrame f = new CloseableFrame(); f.setVisible(true); // makes the frame visible OJO: una opción habría sido declarar esta clase como interna a Closeable. Pudo ser anónima. ELO-329: Diseño y Programación Orientados a Objetos

Relación estática de clases (generada con Jprasp)‏ ELO-329: Diseño y Programación Orientados a Objetos

Diagrama de secuencia para creación de ventana Muestra la dinámica al crear una ventana. Main: Main Objeto:Clase JVM inicia main f : CloseableFrame New listener :MyWindowListener new addWindowListener show ELO-329: Diseño y Programación Orientados a Objetos

ELO-329: Diseño y Programación Orientados a Objetos Explicación Objetos en la clase CloseableFrame causan que una ventana aparezca en la pantalla del usuario. La aplicación puede crear tantas ventanas como lo desee creando múltiples objetos CloseableFrame. Una instancia de MyWindowListener es registrada con addWindowListener (es como configurar quien atenderá las interrupciones). Cuando el evento ocurre, la máquina virtual Java lo detecta y verifica si hay listeners esperando por ese evento. Si los hay, automáticamente llama al método apropiado de la interfaz WindowListener. La interfaz WindowListener es implementada por la clase MyWindowListener, así su instancia puede responder a los eventos de la ventana en la cual él fue registrado. Hay siete métodos en la Interfaz WindowListener (Ver API). Aquí sólo nos interesamos por el evento cierre de ventana. La mayoría de las otras interfaces para eventos no difieren mucho. Veremos otro ejemplo. ELO-329: Diseño y Programación Orientados a Objetos

Entrada en Campo de texto Supongamos que queremos leer lo ingresado en un campo de texto y luego copiarlo en un label (rótulo). Ver SimpleMimic.java ELO-329: Diseño y Programación Orientados a Objetos

Diagrama de Clases de SimpleMimic Generado con Jgrasp Este diagrama puede ser completado con las clases usadas del JDK. ELO-329: Diseño y Programación Orientados a Objetos

ELO-329: Diseño y Programación Orientados a Objetos Diagrama de Clases de SimpleMimic Generado con Jgrasp, con clases del JDK ELO-329: Diseño y Programación Orientados a Objetos

ELO-329: Diseño y Programación Orientados a Objetos Diagrama de secuencia Situación: Creación de listener y su registro. Se espera que este tipo de diagramas puedan ser hechos antes de escribir el código. La experiencia ayuda a imaginar este tipo de interacciones que luego son reflejadas en el código. mimic :SimpleMimic Se crea listener gui :SimpleMimicGUI new quote :JTextField new Se registra addActionListener ELO-329: Diseño y Programación Orientados a Objetos

ELO-329: Diseño y Programación Orientados a Objetos Diagrama de secuencia Situación (caso de uso): Usuario ingresa nuevo texto. Esto gatilla el evento esperado. Es recomendable tener bien clara esta inter-acción de objetos. Este diagrama sirve además como documentación. JtextField y Jlabel pertenecen a la API, luego sólo hay que escribir el código para las otras tres clases. Gui :ActionListener Quote :JTextField Label :JLabel Usuario ingresa texto La JVM lo detecta, avisa a la componente Gráfica y ésta envía Mensaje al listener actionPerformed getText setText ELO-329: Diseño y Programación Orientados a Objetos

Entrada en Campo de texto: versión 2 Esta versión separa roles, para este problema simple probablemente no se justifica. La idea es explorar otras situaciones posibles. Ver Mimic.java ELO-329: Diseño y Programación Orientados a Objetos

Diagrama de Clases de Mimic.java ELO-329: Diseño y Programación Orientados a Objetos

ELO-329: Diseño y Programación Orientados a Objetos Diagrama de secuencia Caso de uso: Ingreso de nuevo texto. Esto gatilla el evento esperado. Listener :MimicListener Gui :MimicGUI Quote :JTextField Label :JLabel Usuario ingresa texto actionPerformed updateLabel getText setText ELO-329: Diseño y Programación Orientados a Objetos

Explicación del ejemplo El listener es registrado con el objeto quote de la clase JTextField en el constructor MimicGUI() al ejecutar quote.addActionListener(listener). Cuando listener es registrado, éste es agregado a una lista interna que mantiene los objetos que deben ser notificados cuando ocurre un evento. Podemos tener más de un listener registrado por evento. Cuando el evento ocurre (por ejemplo, presionamos return en la ventana), el método listener.actionPerformed(ActionEvent event) es llamado por el objeto JtextField, el cual se entera por la JVM. Notar que los datos sobre el evento son pasados al método vía el parámetro. El código en el método del listener maneja el evento llamando a gui.updateLabel(), el cual hace eco del contenido del campo texto en el rótulo puesto en la ventana. ELO-329: Diseño y Programación Orientados a Objetos

Algunas recomendaciones No es estrictamente necesario poner la descripción de las componentes de la GUI en una clase separada, pero es buena idea. Incluso puede ser conveniente ponerlas en una archivo separado para así separar la presentación e interacción con el usuario del procesamiento o cálculo interno. La clase JTextField es incluso más completa. Nos permite recibir una notificación cada vez que un caracter es ingresado. Los cambios requeridos para ello se muestras en MimicCharbyChar.java ELO-329: Diseño y Programación Orientados a Objetos