Paradigmas de Programación



Documentos relacionados
Programación Avanzada Ingeniería Civil en Computación

MANUAL DE LA APLICACIÓN DE ENVÍO DE SMS

Curso de Python Inicial

Programación Orientada a Objetos en Java

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

Tema 7: Fundamentos de la programación sobre MS-Windows.

Agentes con Interfaz Gráfica.

1. Configuración del entorno de usuario

Tema 4. Gestión de entrada/salida

PROGRAMACIÓN WEB I SEMANA 7 ESTE DOCUMENTO CONTIENE LA SEMANA 7

Carlos Castro Grande 1

Introducción a Google Calendar Breve guía sobre algunas de sus funcionalidades destacables.

UNIVERSIDAD DE ANTIOQUIA DIRECCIÓN DE DESARROLLO INSTITUCIONAL GESTIÓN INFORMÁTICA Agosto 24 de 2015

Paradigmas de Programación Práctica II - Curso 2012/13

ASIGNACIÓN (PREROUTING) De las llamadas entrantes en función del número llamante y del número llamado

Programa Presupuestos de Sevillana de Informática.

Curso de Java POO: Programación orientada a objetos

2.2.- Paradigmas de la POO

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

WINDOWS. Iniciando Windows. El mouse

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Introducción a la programación orientada a objetos

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Manual del visor GeoEuskadi 2013 MANUAL DEL VISOR GEOEUSKADI

/05/2009

WINDOWS : TERMINAL SERVER

Arquitectura de Aplicaciones

Introducción a Protégé

Práctica 2 de Microsoft Access


MANUAL PARA EMPRESAS PRÁCTICAS CURRICULARES

PROGRAMACIÓN ORIENTADA A OBJETOS

La pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición.

Trabajar con diapositivas

Tablas y Campos Nuevos

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Clases y Objetos. Informática II Ingeniería Electrónica

CAPITULO V. HERRAMIENTA CASE (Rational Rose, C++)

Manual de usuario investigador

Procedimiento de arranque de Aula Virtual Santillana: alumnos

2.1. Introducción al lenguaje Java

Centro de Capacitación en Informática

Alerta Pulsador. Programa. Configuración

MS_10266 Programming in C# with Microsoft Visual Studio 2010

PROGRAMACIÓN MULTIMEDIA PROGRAMACIÓN EN WINDOWS

Memoria compartida y semáforos r/w. La página del manual que podría servir para describir estas funciones es la siguiente:

2_trabajar con calc I

CIERRE DE PERÍODOS DE LIQUIDACIÓN

Repetir el proceso para cada abstracción identificada hasta que el diseño este expresado en términos sencillos

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

Manual Usuario Manual Usuario

MANUAL DE AYUDA MÓDULOS 2011 MACOS

Error! Nombre desconocido de propiedad de documento.

TRÁMITES DE SEGURIDAD PRIVADA. Manual de usuario para empresas de seguridad v6.0-24/01/2011

Manual de Usuario Internet

VideoSoftPHONE Active Contact

SMS Gestión. manual de uso

INFORMATICA VISUAL BASIC 2008 GRAFICACIÓN I

Configuración de ordenadores portátiles en la red de la Biblioteca con el sistema Windows XP

Práctica 3: Introducción a Word

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

Roles y Características

Herencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases

POWER POINT. Iniciar PowerPoint

GUIA DE USO DEL ACCPRO

UF0513 Gestión auxiliar de archivo en soporte convencional o informático

Benemérita Universidad Autónoma del Estado de Puebla

GENERACIÓN DE ANTICIPOS DE CRÉDITO

SISTEMA DE GESTIÓN DOCUMENTAL QUIPUX MÓDULO DE TAREAS. Manual de Usuario. Septiembre Sistema de Gestión Documental Quipux

Capítulo V. Implementación

Kit de Autenticación con Tarjetas. Guía Técnica de Configuración

Race Manager by Master Timing Guía del usuario GUIA RACE MANAGER. Eventronic, SL

Acceso a la aplicación de solicitud de subvenciones (Planes de Formación 2014)

SINAC - Sistema de Información Nacional de Agua de Consumo MENU PRINCIPAL. Copyright Ministerio de Sanidad y Consumo

Configuración de ordenadores portátiles en la red de la Biblioteca con el sistema Windows 7

2. ÁMBITO Y ALCANCE DEL PROYECTO...

Procesos y Cambios MÓDULOS: HORARIOS DESCRIPCIÓN: Comunicación SAUCE Generadores de Horarios DIRIGIDO A: Centros educativos de Educación Secundaria

Herramientas Informáticas para la Documentación Práctica 1. Introducción al navegador Netscape

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos:

GENERACIÓN DE TRANSFERENCIAS

Manual del Protocolo XML-RPC de Mensajería Negocios

Clases abstractas e interfaces

Sistema de gestión de tareas y proyectos

Traslado de Copias y Presentación de Escritos. Manual de Usuario V.3.1

Curso de Doctorado: Tecnologías de Objetos

4. Programación Paralela

Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC)

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Ley Orgánica de Protección de Datos

Transcripción:

Paradigmas de Programación 3.2. Orientación a Eventos Departamento de Informática Universidad de Valladolid Curso 2010-11 Grado en Ingeniería Informática Grado en Ingeniería Informática de Sistemas 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 1

Prog. Orientada a Eventos Es un paradigma de programación en el que el flujo del programa está determinado por eventos: Acciones del usuario. Mensajes de otros programas. Activación de sensores.... Bajo este paradigma un programa consiste en un conjunto de bloques de código (subrutinas, métodos) que son invocados al producirse un tipo evento y que pueden acceder a un estado común. 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 2

Arquitectura Orient. a Eventos En una arquitectura orientada a eventos, existe una entidad externa al programa (el controlador), que se encarga de: Detectar eventos. Determinar los programas que están interesados en ellos y/o pueden manejarlos. Enviar mensajes a esos programas o invocar al código del programa encargado de manejarlos. Arquitecturas típicas O.E.: Interfaces Gráficos de Usuario (GUIs). Entornos Web Gestores de Bases de Datos Distribuidos Sistemas Empotrados 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 3

Interfaces Gráficas de Usuario En una GUI, pueden existir múltiples aplicaciones ejecutándose simultaneamente: Cada una de ellas tiene asignada una zona de la pantalla (ventana) y no deben dibujar fuera de sus límites. Todas usan una serie de controles cuya apariencia y funcionalidad debe ser similar. El acceso a recursos del sistema y a la entrada por parte del usuario (ratón, teclado) no puede dejarse a cargo de cada aplicación. Solución: El sistema operativo es el que tiene el control sobre la entrada del usuario, los recursos, la visualización y funcionamiento de controles y el acceso a la pantalla. Informa a las aplicaciones de los eventos relevantes. 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 4

Paso de Mensajes (I) En esta variante cada evento es traducido por el controlador en un mensaje (tipicamente un registro u objeto) que encapsula los datos relevantes. Cada aplicación (proceso activo) tiene asociada una cola de mensajes. El mensaje se añade a las colas de mensajes de las aplicaciones a las que afecta el evento. Porque estas aplicaciones han registrado su interés por el evento. Porque el estado del sistema determina que es la aplicación relevante (foco del teclado, pulsación del ratón en región ocupada por la ventana) Porque se han producido cambios que la afectan (redibujado por desplazamiento de otra ventana) 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 5

Ejemplo de mensaje Definición de un mensaje en Win32s (C): typedef struct tagmsg { HWND hwnd; // Identificador de ventana (control) UINT message; // Tipo de mensaje WPARAM wparam; // Datos del mensaje LPARAM lparam; // Datos del mensaje DWORD time; // Momento en que se ha producido POINT pt; // Posición en pantalla MSG; WM_CHAR Carácter pulsado (en wparam) WM_CLOSE Pulsado botón de cierre de ventana WM_COMMAND Acción sobre control (tipo e identificador en wparam) WM_DROPFILES Arrastre de fichero sobre control WM_GETTEXT Copiar texto de un control en buffer lparam... (500 tipos más) 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 6

Paso de Mensajes (II) Una aplicación consiste en un bucle (bucle de mensajes) donde se accede (mediante una llamada a una subrutina del controlador) a la cola de mensajes y se ejecuta el código adecuado para tratarle. Mientras se trata un mensaje, el controlador puede añadir nuevos mensajes a la cola. El bucle termina cuando se recibe un mensaje de finalización. En sistemas de multitarea cooperativa, si al acceder a la cola ésta está vacía, se transfiere el control a otras aplicaciones (la llamada no retorna hasta tener mensajes). La aplicación puede enviar mensajes al controlador para obtener información o comunicarse con otras aplicaciones. 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 7

Estructura de una aplicación Una aplicación Win32s consiste en: Una función (WinMain) que define el punto de entrada del programa, y que realiza las siguientes tareas: Registra la ventana principal (RegisterClass) indicando una subrutina (WndProc) encargada del proceso de cada mensaje. Se crea y muestra la ventana principal y sus controles hijos (CreateWindow, ShowWindow, UpdateWindow). Se ejecuta el bucle de proceso de mensajes: MSG msg; while( GetMessage( &msg, NULL, 0, 0 ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); Llama a la subrutina pasada en RegisterClass 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 8

Manejadores de Eventos En esta otra variante, la aplicación registra pares (evento, manejador) al controlador para indicarle que invoque al manejador cuando se produzca un evento de ese tipo. Un manejador suele consistir en una subrutina o método con unos parámetros predeterminados que reciben datos relevantes sobre el evento. El bucle de mensajes, si existe, está oculto al programador (suele usarse en frameworks que establecen una capa sobre el código nativo): Entornos de desarrollo visuales (Delphi, Visual X) Librerías AWT y Swing de Java Framework GTK (llamada a connect) 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 9

Ejemplo (Python GTK)... def crea_interfaz(self): # Creación del control boton = GTK.Button(.. ); # Registro de evento <-> manejador boton.connect( clicked,self.pulsado);... def pulsado(self, widget, data = None): # Manejador del evento de pulsación del ratón... 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 10

Ejemplo (Java Swing) public class Aplicacion implements ActionListener { JButton boton; public void creainterfaz() { // Creación del control boton = new JButton(.. ); // Registro de evento <-> manejador boton.addactionlistener(this); // Método especificado en ActionListener public void ActionPerformed(ActionEvent e) { // Manejador del evento de pulsación del ratón if(e.getsource() == boton) {... 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 11

Técnicas para P.O.E. Para implementar la programación orientada a eventos es conveniente poder enviar referencias a código de la aplicación a otras entidades (controlador). Callbacks: Se puede almacenar referencias a subrutinas en variables (parámetros) de forma que se puedan invocar las subrutinas mediante ellas. Orientación a Objetos: Un objeto encapsula datos (atributos) y código (métodos). Es posible enviar código haciendo enviando un objeto y señalando uno de sus métodos como el manejador, usando herencia y polimorfismo. 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 12

Callbacks Tipos Procedurales Un Tipo procedural es un tipo de datos que representa referencias a subrutinas con una determinada cabecera (parámetros y resultado). type TProcFila = procedure(var Fil: TFila; I,N: integer); procedure proc1(var Fil: TFila; I,N: integer); begin... end; var f: TFila; p: TProcFila; begin p := proc1; p(f,1,5); // Igual que proc1(f,1,5) end. 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 13

Orientación a Objetos (I) La orientación a objetos permite enviar un objeto como parámetro con el objetivo de que se ejecute un método del objeto enviado. El problema de un enfoque directo es que entre la aplicación y el controlador se produce una agregación cruzada: APLICACIÓN CONTROLADOR c + manejador(..) + registrador() { c.registra(this); CONTROLADOR APLICACION a + registra(aplicacion app) { a = app; + control(..) { a.manejador(..); 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 14

Orientación a Objetos (II) La solución es usar herencia y polimorfismo para que el controlador no conozca los detalles del objeto que son irrelevantes para su tarea. LLAMABLE (abstracta) + manejador(..) APLICACIÓN hereda LLAMABLE CONTROLADOR c + manejador(..) + registrador() { c.registra(this); CONTROLADOR LLAMABLE a + registra(llamable p) { a = p; + control(..) { a.manejador(..); 11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 15