Algoritmos y Programación III

Slides:



Advertisements
Presentaciones similares
MODELOS ORIENTADOS A OBJETOS
Advertisements

U.M.L A/Gx. Diego Gutiérrez Application Analysis and Design.
METODOLOGÍA ORIENTADA A OBJETOS CARACTERISTICAS DEL PROCESO
Curso de java básico (scjp)
Red Social: “Un millón de Amigos”.
Red Social: “Un millón de Amigos”.
Observador (observer) Visita (Visitor) Singleton
FACHADA COMPOSITOR MEMENTO
Introducción a LAS Bases de Datos
UML 1.4 Peter Emerson Pinchao Solis.
Servicios Web.
Arquitectura CLARO-TECNOTREE
Introducción a la Orientación a Objetos
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
Arquitectura multicapas orientadas a objetos
Etapas y actividades en el desarrollo OO basado en UML
Aplicación del paradigma orientado a objetos
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
Diseño y programación de
Ingeniería del Software
Aspectos Avanzados de la Tecnología de Objetos
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
Profesor: Miguel Angel Vidal
Ingeniería de Software Orientada a Objetos
 El termino OO, significa que el software es organizado como una colección de objetos. Un objeto es un paquete de software que contiene datos y procedimientos.
Introducción a la programación Orientada a objetos
Conceptos Objeto Clase Atributo / Método Encapsulamiento Mensaje
Contexto: Aplicación gráfica.  Siempre que se piensa en separar la funcionalidad de una aplicación de su interacción con el usuario, bien sea una aplicación.
Algunas Herramientas de Apoyo al Diseño de Software Agustín J. González ELO329: Diseño y programación orientados a objetos.
Patrones de Comportamiento: Patrón de Diseño Observer
Modelado Arquitectónico
DEPARTAMENTO DE INGENIERÍA INFORMÁTICA
FACTORY METHOD Edmundo Álvarez Jiménez Antonio Fernández Alonso
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.
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.
OMAR SANCHEZ ROBLES HECTOR PEREZ GARCIA. “Sistemas de cómputo compuesto por un gran número de CPU´s conectados mediante una red de alta velocidad”, Tanenbaum.
Ingeniería de Software
Ingeniería de Software Orientado a Objetos
ANDRES FELIPE BORRERO SALAZAR COD ALEXANDRA CARREÑO SALAS COD LUCIO ANIBAL CRIOLLO COD ALEJANDRO RUIZ IDROBO COD
DISEÑO DE SOFTWARE 1ª. Parte
Bases de Datos Orientadas a Objetos (BDOO)
Lenguajes de Programación Tema 3
Patrones de Diseño: Command
Algoritmos y Programación III 8. Diseño, patrones, arquitecturas Carlos Fontela, 2004.
CS-432: Ingeniería Moderna de Software Semana 3
Haga clic para modificar el estilo de subtítulo del patrón 28/04/09 Por ARLEDY SARRIA MOLINA NAZLY DIAZ ARIZA JHOANNA MARQUELLA DESARROLLO DE SOFTWARE.
INGENIERIA DE SOFTWARE GUILLERMO OCHOA GAVIRIA Octubre 2006 Factory Method.
Patrones de Diseño Carolina Perozo Julio Padrón Anthony Accardi.
UML 2.0 Integrantes: Diana Carolina Valencia M. Jhon Fernando Lopez T. Carlos Alberto Castillo.
Diseño e Implementación de Sistemas Basados en Conocimiento
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
SOFTWARE PARA PAGOS DE SUELDOS Patrones de Diseño
INSTITUTO TECNOLOGICO DE MINATITLAN ASIGNATURA: FUNDAMENTOS DE PROGRAMACION DOCENTE: JOSE ANGEL TOLEDO ALVAREZ ALUMNA: ALEJANDRA OSORIO ARVISU SEMESTRE:
Algunas Herramientas de Apoyo al Diseño de Software Agustín J. González ELO329: Diseño y programación orientados a objetos.
Importancia en la efectividad del:
TEMA 10: DIAGRAMA DE: OBJETOS, SECUENCIA Y DESPLIEGUE EN UML
Facultad de Ingeniería
Términos y Conceptos Básicos
Diseño de Sistemas.
Introducción a UML Departamento de Informática Universidad de Rancagua
Ingeniería de Requisitos
Patrones de diseño equipo n.1
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
Patrón de Diseño Brigde ( Handle/Body) Calderón Márquez Jorge Alberto Posgrado de Ciencia e Ingeniería en Computación. Tecnología Orientada a Objetos.
Programación Orientada a Objetos: CLASES Y OBJETOS
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Integrantes: Castro José República Bolivariana De Venezuela Ministerio Del Poder Popular Para La Educación Superior Instituto Universitario Tecnológico.
Fundamentos de Ingeniería de Software
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Programación Orientada a Objetos Unidad 5. Los objetos son entidades que combinan estado Contiene toda la información denominados atributos REPASO Cada.
Transcripción de la presentación:

Algoritmos y Programación III 7. Diseño, primeros patrones, MVC Carlos Fontela, 2006

Temario Diseño OO y patrones Presentación de patrones de uso habitual Iterador Factory Method Template Method MVC y Observador

Qué es diseño Es el “cómo” del desarrollo Fase más ingenieril del desarrollo de software Lástima que se lo llame “arquitectura” Concebir una solución para un problema Entre el “qué” de los requerimientos y el producto terminado Propósito: crear una estructura interna clara y lo más simple posible

Patrones Solución exitosa de un problema que aparece con frecuencia “Alguien ya ha resuelto nuestros problemas” Patrones de diseño Para problemas de diseño Patrones de programación Algoritmos “con nombre” Métodos de ordenamiento, búsqueda Incluyen el algoritmo y una estructura de datos

Uso de patrones Enseñanza Aplicación en distintos contextos Comprensión de partes de un sistema Comunicación con un vocabulario común Hay en otras ingenierías

Qué diseñamos Despliegue en hardware Subsistemas o componentes de software y sus interacciones Integración con otros sistemas Interfaz de usuario Estructuras de datos Algoritmos Definiciones tecnológicas Plataforma, lenguaje, base de datos, etc.

Diseño de IU O Diseño externo Usabilidad y demás Ver diapositivas en sitio web ¡Pero verlas!

Diseño interno Arquitectura de componentes Arquitectura de despliegue Arquitectura de conectividad Protocolos y dispositivos a usar Diseño de datos Estructura de las bases de datos y la persistencia Software Lenguajes, herramientas y nomenclatura que se van a utilizar en la programación

Diseño de clases Clases de diseño Clases de implementación Describen conceptos de alto nivel Pertenecen al dominio de la solución Clases de implementación Surgen por necesidades algorítmicas, como un tipo de vector o árbol Para encontrarlas se aplican los conocimientos de algoritmos y estructuras de datos

Patrones: creación de objetos Veamos Iterator i = v.iterator(); while (i.hasNext()) { ... i.next(); ... } ¿Por qué no hacemos: Iterator i = new ... ? Iterator es una interfaz ¿Dónde está la clase? ¿Ventajas?

Iterador en Java

Iterador: consecuencias (I) Simplifica la interfaz de la colección No hay recorridos No expone la estructura de la colección Cumple el principio de Única Responsabilidad Mantiene alta la cohesión

Iterador: consecuencias (II) Soporte de recorridos diferentes O simultáneos Cambiando la clase de iterador No en Java, sí en C++

Iterador: implementación Control externo Cliente maneja el iterador mediante el método next() Muy flexible Control interno Iterador opera sobre los elementos, y controla el proceso Hay que decirle qué operación aplicar a los elementos Uso muy sencillo, implementación compleja

Iterador como patrón La interfaz java.util.Iterator es muy útil Pero se puede extender si se desea También hay iteradores en otros lenguajes Pero si no los hubiera se podrían implementar Como cualquier patrón de diseño

Iterador: UML

Factory Method El caso de iterator() en Java Un método que crea instancias cuyo tipo es una interfaz o una clase abstracta Se mantiene una jerarquía de clases creadoras paralela a la jerarquía de clases a crear

Template Method: polimorfismo Template Method es el uso crudo del polimorfismo Se basa en encapsular trozos de algoritmos Se lo llama también Application Framework: ¿se ve por qué? Ejemplo conocido: clase Thread ¿Por qué redefinimos run() e invocamos a start()?

Template method: UML

Template Method: varios (I) Los métodos a redefinir pueden ser abstractos en la clase plantilla O ser simples ganchos (“hooks”) con una implementación vacía o por defecto El método plantilla debería ser final Controla la lógica del algoritmo Es un marco o framework Los cambios deberían afectar solamente a los métodos redefinibles, que son los que definen los detalles

Template Method: varios (II) La clase plantilla delega en subclases la implementación de los detalles Brinda un marco general, esqueleto o armazón Decide cuándo y cómo utilizar las clases descendientes Granularidad => Flexibilidad Pero más difícil de implementar Salvo que se usen implementaciones por defecto

Template Method: usos Applets de Java Arrays.sort (Comparable[]) Muchos puntos de extensión, con implementaciones por defecto Métodos init(), start(), destroy(), etc. Arrays.sort (Comparable[]) Se debe definir compareTo() Pero no mediante herencia

Patrones: principios Encapsular lo que varía Preferir la composición a la herencia Programar usando interfaces, no implementaciones Bajo acoplamiento en la interacción entre objetos Mantener las clases abiertas para extensión y cerradas para modificación Una sola responsabilidad por clase

Diseño de arquitectura: MVC Se suele combinar con otros Bueno en aplicaciones de mucha IU Ventajas Facilitar cambios Muchas vistas por cada modelo

Observador: presentación (I) Paradigma de publicador - suscriptor. Para manejo de eventos Para MVC Para mensajería Hay dos objetos: Observador (pueden ser varios) Observado o sujeto Cambios en el estado de Observado provocan cambios en Observador

Observador: uso

Observador: estructura

Observador: consecuencias Bajo acoplamiento entre sujeto y observadores El sujeto no se preocupa de los observadores Ni cambia si se registran observadores de tipos diferentes Lo único que sabe es que implementan una determinada interfaz Los observadores se suscriben y desuscriben libremente a una lista de referencias Soporte de broadcasting Agregado y remoción dinámica de observadores

Observador: implementación Lo típico Guardar lista de observadores en sujeto Actualizaciones se materializan al cambiar estado del sujeto Posiblemente provoque muchos update() Ojo Referencias colgadas en lenguajes sin recolección de basura

Observador: variantes (I) Modelo “push” Sujeto envía toda la info que requieren los observadores Mayor acoplamiento: provoca una interfaz de observador específica Se envía información detallada, sin importar la incumbencia para los observadores

Observador: variantes (II) Modelo “pull” Sujeto no envía info, sólo notifica Observadores consultan luego lo que les interesa Puede ser ineficiente Bien desacoplado Modelo con eventos Se registran observadores sólo para ciertos eventos o temas (uno o más)

Observador en java.util (I)

Observador en java.util (II) Definir una clase descendiente de Observable (que es una clase), para hacer de sujeto: que ante determinados cambios, invoque los métodos setChanged y notifyObservers Si no se llamó a setChanged, notifyObservers no invoca los update En general los métodos de Observable no se redefinen Construir una clase que implemente Observer, implementando el método update

Observador en java.util (III) ¡Pero Observable es una clase! Y Java admite herencia simple Imposible extender un sujeto de otra clase de dominio Tampoco se puede implementar los sujetos de otra manera que no sea la de java.util setChanged es protegido Sólo puedo implementarlo en subclases No puedo utilizar composición java.util.Observable no es muy útil Hay alternativas en JavaBeans y en AWT

Resumen El diseño ha sido revalorizado con la OO Incluye diseño de arquitecturas y de clases Diseño debe mantenerse sencillo y claro Observador Desacopla un sujeto observado de observadores MVC Desacopla vista, modelo y controlador

Bibliografía La Web UML y patrones Craig Larman Orientación a objetos con Java y UML Carlos Fontela Enterprise Solution Patterns Using Microsoft .NET En MSDN, Patterns and Practices

Qué sigue Diseño de interfaces de usuario Patrones de diseño Ver en la web ¡verlo! Patrones de diseño Vuelta a programación Concurrencia Buen código OO Aplicaciones distribuidas e integración de aplicaciones

Muchas Gracias. Carlos Fontela, 2006