programación visual & arquitectura en tres capas

84
Tecnología de la Programación Javier Nieves Acedo Programación Visual & Arquitectura en Tres Capas

Upload: galena-ferguson

Post on 01-Jan-2016

43 views

Category:

Documents


1 download

DESCRIPTION

Programación Visual & Arquitectura en Tres Capas. Tecnología de la Programación Javier Nieves Acedo. Una imagen vale más que mil palabras. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programación Visual & Arquitectura en Tres Capas

Tecnología de la Programación

Javier Nieves Acedo

Programación Visual & Arquitectura en Tres Capas

Page 2: Programación Visual & Arquitectura en Tres Capas

Una imagen vale más que mil palabras

Page 3: Programación Visual & Arquitectura en Tres Capas

La superación de una persona llega a límites inimginables. Gente que no puede andar consigue desplazarse de

formas alternativas. Gente que no puede oír consigue

comunicarse de formas alternativas.

Page 4: Programación Visual & Arquitectura en Tres Capas

La superación humana llega a

límites inimaginables

Page 5: Programación Visual & Arquitectura en Tres Capas

De lo más

antiguo pasamos a…

Page 6: Programación Visual & Arquitectura en Tres Capas

… a algo más

moderno y amigable

Page 7: Programación Visual & Arquitectura en Tres Capas

Pero conozcamos como

empezó todo…

Page 8: Programación Visual & Arquitectura en Tres Capas

Un poco de historia

GUI – Grafical User Interface

Datan de los años 70Xerox PARC pioneros

Popularizado por Apple ComputerLisa – Macintosh (1984)

Después llegó Microsoft

Page 9: Programación Visual & Arquitectura en Tres Capas

Y ¿cómo funciona la programación visual?

Page 10: Programación Visual & Arquitectura en Tres Capas

Conceptos y Razonamiento de GUI (1)

Actualmente se utiliza la “metáfora del escritorio”

Los programas en Windows no acceden directamente a los dispositivos.Para eso están los Drivers

Cada aplicación que se ejecuta es una tarea

Tarea en proceso vs Tarea ejecutándose vs Tarea Activa

Page 11: Programación Visual & Arquitectura en Tres Capas

Conceptos y Razonamiento de GUI (y 2)

Multitarea gracias a administración de memoria

Memoria Real – Memoria VirtualAdemás se puede compartir códigoDLLs – Librería de Enlace Dinámico

Se proporciona el sistema para insertar este código y comenzar a utilizarlo.

Page 12: Programación Visual & Arquitectura en Tres Capas

Pero los afectados lo

visualizan de formas diferentes

Page 13: Programación Visual & Arquitectura en Tres Capas

Perspectiva de Programador (1)

Cuando se programan GUIs se puede hacer con LOO.

Ventanas:Usuario

Ve las ventanasInteracciona con las ventanas

ProgramadorEntradas y comunicaciones en forma de “mensajes”

Page 14: Programación Visual & Arquitectura en Tres Capas

Perspectiva de Programador (2)

Barra de TítuloMen

ús

Barra de Estado

Desplazamiento

Page 15: Programación Visual & Arquitectura en Tres Capas

Perspectiva de Programador (3)

Programas en ConsolaEjecución secuencialPrograma controla al usuario

Programas de VentanasEjecución dirigida por eventosEl usuario controla el programaRealiza la secuencia de pasos según le parece

Page 16: Programación Visual & Arquitectura en Tres Capas

Perspectiva de Programador (4)

Programación Orientada por EventosBasada en la generación y procesamiento de mensajes.

Mensaje:“Información de que ha ocurrido un evento”

Debido a que el usuario controla el flujo de ejecución debemos tener más cuidado en nuestro programas

Page 17: Programación Visual & Arquitectura en Tres Capas

Perspectiva de Programador (y 5)

El núcleo de la programación en Windows son las API (Application Program Interface)

Tiene diversas funciones:Ejemplo: CreateWindow()

Declaradas en Windows.hUtilización similar a string.h (strcpy())

.EXE actuales se basan en enlaces dinámicos

Page 18: Programación Visual & Arquitectura en Tres Capas

… y se basa en una

arquitectura ya desarrollada

Page 19: Programación Visual & Arquitectura en Tres Capas

Arquitectura Gestionada por Mensajes (1)

Cuando se modifica el tamaño de una ventana:Se reformatea el texto para acoplarlo al tamaño

Parece que el Sistema Operativo se encarga de ello

¿Cómo sabemos que ha pasado algo en nuestra ventana?SO manda un mensaje a la ventana

Page 20: Programación Visual & Arquitectura en Tres Capas

Arquitectura Gestionada por Mensajes (2)

La comunicación es gracias al sistema de mensajes

Para una aplicación el mensaje es una notificación de que un evento ha sucedido

Cuando la aplicación recibe un mensaje se le cede el procesador para que lo atienda

Page 21: Programación Visual & Arquitectura en Tres Capas

Arquitectura Gestionada por Mensajes (3)

Page 22: Programación Visual & Arquitectura en Tres Capas

Arquitectura Gestionada por Mensajes (4)

Todos los mensajes pasan a través de Windows

El Origen de los Mensajes:Usuario: teclas, botones…Windows: restaurar aplicación minimizada…

Aplicación: cambia el estado y se necesita el redibujado,…

Otras aplicaciones: intercambio dinámico de datos entre aplicaciones,…

Page 23: Programación Visual & Arquitectura en Tres Capas

Arquitectura Gestionada por Mensajes (5)

Una aplicación recibe todos los mensajes posibles

Windows envía todos porque no puede conocer cuáles le interesa a la aplicación

La aplicación ignorará todos los que no sean relevantes para ella

Page 24: Programación Visual & Arquitectura en Tres Capas

Arquitectura Gestionada por Mensajes (6)

La prioridad de los mensajes (1):Normalmente Windows los sitúa en la cola de aplicación en el orden en el que son generados

Otros se mantienen en la cola mientras queden otros mensajes (timer, paint y quit)

Mensajes que se manda la aplicación o a otra se colocan al principio de la cola

Page 25: Programación Visual & Arquitectura en Tres Capas

Arquitectura Gestionada por Mensajes (y 7)

La prioridad de los mensajes (y 2):¿Si hay mensajes pendientes en varias aplicaciones?

Windows cede el procesador a la que tenga más prioridadComienza en 0 y puede cambiar de [-15, 15]

Si tienen la misma, se cede a la que tiene mayores mensajes

Page 26: Programación Visual & Arquitectura en Tres Capas

… y para programarlo …

Page 27: Programación Visual & Arquitectura en Tres Capas

Entornos de Desarrollo en C++ (1)

Diferentes bibliotecas de clasesObject Windows Library (OWL)

De BorlandUsada en Borland C++ 3.0La versión 5.0 encapsula muchos controles de Win32

Compleja para iniciarse en su uso

Page 28: Programación Visual & Arquitectura en Tres Capas

Entornos de Desarrollo en C++ (2)

Microsoft Fundation Class (MFC)Apareció entre las versiones 1 y 2 de OWL

Existen versiones para diferentes compiladoresMuy relacionada con las API s de Windows

No tiene programación orientada a objetos

Page 29: Programación Visual & Arquitectura en Tres Capas

Entornos de Desarrollo en C++ (3)

Visual Component Library (VCL)Desarrollo rápido basado en componentes

Componentes llevados a un formulario y modificados a través de propiedades y métodos

No se parece a nada anteriorProgramada en Object Pascal pero se puede utilizar desde C++

Page 30: Programación Visual & Arquitectura en Tres Capas

Entornos de Desarrollo en C++ (4)

Microsoft Visual Studio .NetPermite múltiples lenguajes (C++, C#)

Nueva biblioteca de componentes (WinForms)

Tiene la misma potencia que VLC y permite construir aplicaciones con la misma facilidad y atractivo.

Page 31: Programación Visual & Arquitectura en Tres Capas

Entornos de Desarrollo en C++ (y 4)

QT CreatorAplicación multiplataformaDispone de sus propias librerías con portabilidad entre Sistemas Operativos

Desarrollada por TolltrechAdquirida por Nokia

Page 32: Programación Visual & Arquitectura en Tres Capas

… pero los componentes se basan en…

Page 33: Programación Visual & Arquitectura en Tres Capas

El Modelo Propiedad-Método-Evento (1)

La base de las aplicaciones con C++ Builder

Se utilizan componentes softwareTienen

Propiedades que definen su estadoMétodos que permiten manipularloLos cambios de estado disparan un evento al que la aplicación puede asignarle una acción

Page 34: Programación Visual & Arquitectura en Tres Capas

El Modelo Propiedad-Método-Evento (2)

VCL permite hacer visualmente lo que antes se realizaba mediante la codificación de clases.

Java estándar no dispone de está facilidad. Hay que ir a aplicaciones de terceros para que den está facilidad.

Page 35: Programación Visual & Arquitectura en Tres Capas

El Modelo Propiedad-Método-Evento (y 3)

Los programadores no tienen que crearse o manipular estos componentes mediante código fuente.

Todos los componentes están ya en la VCL

Page 36: Programación Visual & Arquitectura en Tres Capas

Componentes vs Clases

Page 37: Programación Visual & Arquitectura en Tres Capas

Componentes vs Clases (1)

Son parecidos pero hay diferencias (I1):Todos los componentes descienden de la clase Tcomponent

Normalmente se utilizan como están, no son utilizados como una clase base. Si se hereda es porque se quiere añadir algo de código a funciones miembro que gestionan un evento

Page 38: Programación Visual & Arquitectura en Tres Capas

Componentes vs Clases (y 2)

Son parecidos pero hay diferencias (y 2):Los objetos creados a partir de la VCL solo pueden crearse en memoria dinámica (new)

Se pueden crear controles nuevos y añadirlos a las paletas de los ya existentes

Page 39: Programación Visual & Arquitectura en Tres Capas

Analicemos un poco más a fondo los componentes

Page 40: Programación Visual & Arquitectura en Tres Capas

Componentes (1)

Componentes VCL son objetos que ejecutan una tarea específica de programación

Page 41: Programación Visual & Arquitectura en Tres Capas

Componentes (2)

Propiedades:Controlan como opera el componente

Muchos tienen propiedades comunes

La ventana ObjectInspector muestra las propiedades del componente en orden alfabético.

Page 42: Programación Visual & Arquitectura en Tres Capas

Componentes (3)

Propiedades:Pueden ser modificadas en tiempo de diseño y de ejecución

No todas la propiedades tienen efectos visibles asociados

En tiempo de ejecución se modifican los valores haciendo una asignación del nuevo valor

Page 43: Programación Visual & Arquitectura en Tres Capas

Componentes (4)

Propiedades:Al cambiar una propiedad se llamarán a los métodos asociados o necesarios

Las propiedades pueden tener dos especificadores de acceso (read / write specifier)

Los especificadores son llamados de forma automática

Algunas propiedades solo pueden ser leídas y otras solo escritas

Page 44: Programación Visual & Arquitectura en Tres Capas

Componentes (5)

Propiedades:Una propiedad puede ser un objeto de otra clase VCL

Otras son grupos de propiedades (Font) en el ObjectInspector tiene un +

Otras pueden ser enumeraciones (lista de posibles opciones). En el ObjectInspector tienen un desplegable

Page 45: Programación Visual & Arquitectura en Tres Capas

Componentes (6)

Métodos:Son funciones que pueden ser llamadas para que un componente ejecute ciertas acciones

Ejemplo: Ventana->Show(); // Visualiza en pantallaVentana->Hide(); // Oculta en pantalla

Como forman parte de una clase pueden ser públicos, privados o protegidos

Page 46: Programación Visual & Arquitectura en Tres Capas

Componentes (8)

Eventos:Cada componente VCL está diseñado para responder a ciertos eventos

Si se responde a un evento se dice que se dispone de un handle.

Las funciones a las que se llama son handlers

Page 47: Programación Visual & Arquitectura en Tres Capas

Componentes (8)

Eventos:Los eventos de un componente se ven en el ObjectInspector

Si no se da respuesta el mensaje es ignorado o se ejecuta un handler por defecto de la VCL

Page 48: Programación Visual & Arquitectura en Tres Capas

Componentes (9)

Eventos:Todos los eventos tienen preparada su función a ejecutar.

El programador tiene que rellenarla con el código necesario.

Los argumentos que se reciben dependen del evento y nos dan la información relevante de lo sucedido

Page 49: Programación Visual & Arquitectura en Tres Capas

Componentes (10)

Al arrastrar los elementos se genera el código de creación automáticamente

Pero si generamos componentes en tiempo de ejecución deben ser creados en memoria dinámica

No tienen constructores sobrecargadosNo tienen funciones con parámetros por defecto

No soportan herencia múltiple

Page 50: Programación Visual & Arquitectura en Tres Capas

Componentes (11)

Page 51: Programación Visual & Arquitectura en Tres Capas

Componentes (12)

Se organizan en Clases de ComponentesStandard: Controles comunes de WindowsWindows: Encapsulan controles de Windows (TProgressBar, TTabControl…)

Bases de Datos: Gestión de bases de datos

Common Dialog: Típicos diálogos de Windows (guardar, imprimir…)

System: Mezcla de componentes visuales y no visuales

GDI: típicas para el dibujo, manejar bitmaps, letras, pinceles…

Page 52: Programación Visual & Arquitectura en Tres Capas

Componentes (13)

Proyectos y Formularios:En la creación de un proyecto hay varios ficheros:Fichero fuente del proyecto (WinMain())Fuente y Cabecera del formulario principalEl resto de los formularios con su fuente y

cabeceraFicheros de recurso de la aplicación y del

formulario principalFichero de texto make que contiene

opciones de compilación, nombres de ficheros fuente y bibliotecas

Page 53: Programación Visual & Arquitectura en Tres Capas

Componentes (y 14)

Proyectos y Formularios:

Para irse de un ordenador a otro solo se necesita llevar los siguientes ficheros:.cpp: ficheros fuente C++.h: ficheros de cabecera.dfm: fichero de formularios.bpr: makefile del proyecto

Page 54: Programación Visual & Arquitectura en Tres Capas

Y unas pautas para el diseño de formularios y menús…

Page 55: Programación Visual & Arquitectura en Tres Capas

Diseño de Formularios y Menús (1)

Formulario Principal de la Aplicación:Toda aplicación de tipo GUI dispone al menos de un formulario

Es una pantalla lisa que puede contener componentes y controles dentro de ella

Suele tener un menú, diversos accesorios (barras de herramientas, de estado)

Page 56: Programación Visual & Arquitectura en Tres Capas

Diseño de Formularios y Menús (2)

Formulario de Cuadro de Diálogo (1):No son formularios normales. Hay un tipo específico

Suelen ejecutar una función específica y no se necesita modificar su tamaño

La navegación entre controles se hace con la tecla Tab.

Suelen tener botón de Aceptar – Cancelar – Ayuda – OK.

Page 57: Programación Visual & Arquitectura en Tres Capas

Diseño de Formularios y Menús (3)

Formulario de Cuadro de Diálogo (y 2):No tienen botones de maximizar ni de minimizar

Son modales cuando hay que cerrarlos antes de volver al formulario de segundo plano

Se crean igual que otros formularios pero se modifica su propiedad BorderStyle

Modal (ShowModal()) – Normal (Show())

Page 58: Programación Visual & Arquitectura en Tres Capas

Diseño de Formularios y Menús (2)

Aplicaciones SDI vs MDI (1):SDI – Una única ventana y cuadros de diálogo

MDI – Tienen un formulario padre y varios hijos que se pueden mover dentro del padre.Suelen tener un menú pop up con

opciones de ver las ventanas en cascada, divididas en horizontal, en vertical…

Page 59: Programación Visual & Arquitectura en Tres Capas

Diseño de Formularios y Menús (5)

Aplicaciones SDI vs MDI (2):MDI – Las ventanas pueden ser de varios tipos:Ventana MDI padre: contiene al resto y

el menú principal Ventana MDI hija: muestran información

y son con las que interactúa el usuario. Ventanas modales: ventanas para dar

información y para recibir datos del usuario

Page 60: Programación Visual & Arquitectura en Tres Capas

Diseño de Formularios y Menús (6)

Aplicaciones SDI vs MDI (y 3):

Page 61: Programación Visual & Arquitectura en Tres Capas

Diseño de Formularios y Menús (7)

Aplicaciones SDI vs MDI (IV):MDI – Padre – Construcción:

Form Style: fsMDIForm. MDI – Hija – Construcción:

Form Style: fsMDIChildAñadir un evento “FormClose” con la siguiente línea

Action = caFree;Para evitar que aparezcan desde el principio comentar en el .cpp la línea:

// Application->CreateForm(__classid(TVentanaHija), &VentanaHija);

Page 62: Programación Visual & Arquitectura en Tres Capas

Diseño de Formularios y Menús (y 8)

En la documentación de la asignatura hay información detallada de la clase TFormPropiedadesMétodos

Page 63: Programación Visual & Arquitectura en Tres Capas

Información y un breve resumen de los componentes

de Windows…

Page 64: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (1)

Componentes Visuales y No VisualesVisuales: se visualizan en tiempo de diseño

No Visuales: No se visualizan, trabajan para ejecutar tareas (ej. timer)Cuando el programador inserta este tipo de objetos se visualiza un icono en diseño para indicar que puede acceder a sus propiedades

Page 65: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (2)

Propiedad Name:Cuando se crea un objeto se le asigna un nombre a través de la propiedad name.

Este nombre es el nombre de la variable a través de la que se va a acceder.

El nombre también se utiliza en el nombre de los gestores de eventos.

Si se modifica en diseño, se modifica en todos los lugares.

No hay que cambiarla en tiempo de ejecución.

Page 66: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (3)

Algunos Componentes (1):ListBox: Cuadro con las posibles elecciones

ComboBox: Versión especializada.

Page 67: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (4)

Algunos Componentes - Botones (2):ModalResult: Cuando una ventana modal se cierra se puede asignar el valor a ModalResult.

Se puede consultar con constantes:

Page 68: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (5)

Algunos Componentes - Botones (3):Default: si está a true será el botón por defecto.

Cancel: Será el botón por defecto para las cancelaciones

Enabled: permite habilitar o deshabilitar el control (común a muchos)

Page 69: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (6)

Algunos Componentes - Botones (4):Button: Botón clasicoBitBtn: Botón clásico con una pequeña imagen

SpeedButton: Botón con una imagenSe pueden agruparY se puede preguntar si están pulsadosComo los botones de negrita, cursiva… del

Word

Page 70: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (7)

Algunos Componentes (5):RadioButton – CheckBox

Tienen propiedad checkedRadioButtons normalmente van

agrupados para seleccionar una opción de todas ellas. Si se quieren varios grupos en el mismo formulario hay que usar RadioGroup

Page 71: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (8)

Algunos Componentes (6):RadioButton – CheckBox

Page 72: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (9)

Algunos Componentes (7):Label

Muestra texto en un formularioPuede ser definido en tiempo de

diseño y cambiado durante la ejecución

ScrollBarBarra de desplazamiento

independiente de otros controlesUso poco frecuente

Page 73: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (10)

Algunos Componentes (y 7):Panel

Es un contenedor de objetosLos controles que van en el Panel son hijos

suyosCuadros de Diálogo

File Open, File Save, Font, Color, Print, print Setup, Find, Replace

Metodo Execute() para crearlos y mostrarlos retorna true cuando ha hecho algo y false cuando ha cancelado

Page 74: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (11)

Propiedades Habituales (1)

Align: determina cómo se sitúa el control con respecto a su contenedor alNone: permanece donde se ha colocado alTop: parte superior del padre, se redimensiona la

anchura para adaptarse al padre, no la altura alBotton: parte inferior del padre, se redimensiona

la anchura para adaptarse al padre, no la altura alLeft: parte izquierda del padre, se redimensiona

la altura para adaptarse al padre, no la anchura alRight: parte derecha del padre, se redimensiona

la altura para adaptarse al padre, no la anchura alClient: se redimensiona para ocupar toda la parte

del padre posible

Page 75: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (12)

Propiedades Habituales (2)

Color: color de fondo o del caption del control

Cursor: tipo de cursor cuando pasa por el control crDefault crNone crArrow crCross crHourGlass crHandPoint

Enabled: indica si el control responde a eventos

Page 76: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (13)

Propiedades Habituales (3)

Visible: determina si el control es visible Parent: establece el contenedor del control TabStop: indica si se puede tabular al control

TabOrder: índice de la tabulación (0…N) Tag: almacena un entero como parte del control

Name: nombre del control (para el código) Caption: texto que identifica el control (usuario)

Height: altura

Page 77: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (14)

Propiedades Habituales (y 4)

Width: anchura Left: coordenada horizontal desde la izquierda al padre

Top: coordenada vertical desde la parte superior al padre

PopupMenu: especifica el menú popUp a mostrar junto con el control

Hint: texto de ayuda, aparece cuando el cursor pasa sobre el control

ShowHint: indica si se debe mostrar el hint o no

Page 78: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (15)

Métodos HabitualesClick: simula el click del ratón DblClick: simula el doble click del ratón Hide: hace el control invisible Refresh: redibuja el control en la pantalla (llama a Repaint)

SendToBack: enviar al fondo Show: hace visible un control SetBounds: establece la posición y tamaño del control

SetFocus: el control “escucha” los eventos

Page 79: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (16)

Eventos Habituales (1)

OnClick : clic del ratón OnDblClick: doble clic en el ratón OnDragDrop: Arrastrado y soltando para destino.

OnDragOver: Arrastrar pasa por intermedios.

OnEndDrag: Arrastrar y soltado para origen. OnMouseMove: el puntero del ratón se mueve sobre un control.

OnMouseDown: Se pulsa un botón OnMouseUp: Se libera el botón pulsado

Page 80: Programación Visual & Arquitectura en Tres Capas

Componentes de Windows (y 17)

Eventos Habituales (y 2)

OnEnter: el control recibe el foco.

OnExit: el control pierde el foco. OnKeyDown: Alguna/s tecla/s pulsada/s.

OnKeyPress: Una tecla pulsada. OnKeyUp: Se libera la/s tecla/s pulsada/s

Page 81: Programación Visual & Arquitectura en Tres Capas

Y para montar un arquitectura en varias capas…

Page 82: Programación Visual & Arquitectura en Tres Capas

“Divide y Vencerás”Julio César

Page 83: Programación Visual & Arquitectura en Tres Capas

… 10, 9, 8, 7…

Page 84: Programación Visual & Arquitectura en Tres Capas

Tecnología de la Programación

Javier Nieves Acedo

Programación Visual & Arquitectura en Tres Capas