Patrones de Diseño Carolina Perozo Julio Padrón Anthony Accardi.

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Curso de java básico (scjp)
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Observador (observer) Visita (Visitor) Singleton
FACHADA COMPOSITOR MEMENTO
Herencia en C#.
Lenguaje de programación Java
Arquitectura CLARO-TECNOTREE
Programación Orientada a Objetos
La Programación Orientado a Objetos
Framework Hexápodo PHP fácil, rápido y sin dolor
UNIVERSIDAD LATINA (UNILA)
Aplicación del paradigma orientado a objetos
Diseño y programación de
Encapsulamiento y Abstracción
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Lic. Rosemary Torrico Bascopé
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
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.
Conceptos Objeto Clase Atributo / Método Encapsulamiento Mensaje
Tema 10: Interfaces Antonio J. Sierra.
Técnicas avanzadas de programación Interfaces
Diseño de Sistemas. Patrones de Diseño. Geronimo Manso.
Patrones de Comportamiento: Patrón de Diseño Observer
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.
Abstract Factory Diseño y Aplicaciones Patricia Cano Fernández Rocío González García Irene Zamora del Río.
(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.
ESTRUCTURA DE DATOS EN JAVA
Patrones Creacionales
ANDRES FELIPE BORRERO SALAZAR COD ALEXANDRA CARREÑO SALAS COD LUCIO ANIBAL CRIOLLO COD ALEJANDRO RUIZ IDROBO COD
Bases de Datos Orientadas a Objetos (BDOO)
Introducción A Las Bases De Datos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Presentado por Alfredo de la Mora Díaz Catedrático Dr. Jesús Favela
Análisis y Diseño Orientado a Objetos utilizando UML
Patrones de diseño DECORATOR Mario Rodríguez Martín
Patrones de Diseño: Command
Template Method Patrón de comportamiento. Propósito Definir el esqueleto de un algoritmo en una operación, dejando algunos pasos para las subclases. Permite.
Luis Pereda Calvo1 Comportamiento de Objetos Estrategia (Strategy) *Política (Policy)
INGENIERIA DE SOFTWARE GUILLERMO OCHOA GAVIRIA Octubre 2006 Factory Method.
PATRON PROTOTYPE Cristina Merino Héctor Carbajo Alicia Arroyo.
UML 2.0 Integrantes: Diana Carolina Valencia M. Jhon Fernando Lopez T. Carlos Alberto Castillo.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos.
Interfaces ELO329: Diseño y Programación Orientados a Objetos.
PATRONES DE DISEÑO. A lo largo de los años diseñadores con experiencia en programación orientada a objetos han desarrollado soluciones que sirven para.
1 Interfaces y Clases Internas ELO-329: Diseño y programación orientados a objetos Agustín J. González.
Patrón Iterator Santiago García Sánchez Rebeca Marcos Salcedo Mª Cristina Zapatero Gironda.
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.
El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño posterior del sistema. Dependiendo del.
Presentado por: PABLO ANDRES DIAZ SAIN HASSAM CAICEDO
Programación Orientada a Objeto
PROGRAMACION ORIENTADA A OBJETOS
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) LENGUAJES DE PROGRAMACIÓN PARA EL DESARROLLO DE INTERFACES.
Patrones de diseño equipo n.1
Algoritmos y Programación III
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
Programación Orientada a Objetos: CLASES Y OBJETOS
La Programación Orientado a Objetos
Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera.
Fundamentos de Ingeniería de Software
Herencias Conceptos básicos i
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.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Transcripción de la presentación:

Patrones de Diseño Carolina Perozo Julio Padrón Anthony Accardi

Factory Method

Factory Method Virtual Constructor Patrón de Creación Propósito: Define una interfaz para crear un objeto pero deja que sean las subclases quienes decidan la clase del objeto a crear Tambien conocido como Virtual Constructor

Motivación Factory Method Sea un framework para la construcción de editores de documentos de distintos tipos Clases abstractas Application y Document Los clientes deberán heredar de ellas para implementar los detalles de cada aplicación concreta Por ejemplo DrawingApplication y DrawingDocument ¿Como se implementa la opción New del menú? ¿Como sabe la clase Application qué tipo concreto de documento debe crear?

Motivación Factory Method ¿Cuál es el problema? Se nos presenta el dilema de que el framework es quien sabe, a través de su clase Application, cuándo se debe crear un nuevo documento, pero no sabe qué documento crear (sólo conoce a la clase abstracta o interfaz Document) Solución: Encapsular el conocimiento de cuál es la subclase concreta del documento a crear y mover ese conocimiento fuera del framework

Motivación Ejemplo Factory Method

Aplicabilidad Factory Method Útil cuando: Una clase no puede anticipar la clase de objetos que debe crear. Una clase quiere que sus subclases especifiquen los objetos a crear.

Estructura UML Factory Method

Actores Factory Method Product (Document) Define la interfaz de los objetos creados por el método de fabricación. Concrete Product (MyDocument) Implementa la interfaz Product. Creator (Application) Declara el método de fabricación, que devuelve un objetode tipo Product. Puede definir una implementación que devuelva el producto concreto predeterminado. Puede llamar a dicho método para crear un objeto producto. ConcreteCreator (MyApplication) Redefine el método de fabricación para devolver un objeto ConcreteProduct.

Colaboración Factory Method El creador se apoya en sus subclases para definir el método de fabricación que devuelve el objeto apropiado

Consecuencias Factory Method Elimina la necesidad de enlazar clases especificas de la aplicación en el código Sólo maneja la interfaz Product Por lo que permite añadir cualquier clase ConcreteProduct definida por el usuario. Permite escribir algoritmos genéricos que funcionan con cualquier ConcrteProduct Inconveniente: Tener que crear una subclase de Creator en los casos en los que esta no fuese necesaria de no aplicar el patrón

Abstract Factory

Abstract Factory El patrón Abstract Factory ofrece una interfaz para la creación de familias de productos relacionados o dependientes sin especificar las clases concretas a las que pertenecen. Problema Aborda el problema de la creación de familias de objetos (como por ejemplo iterfaces gráficos) que comparten toda una serie de características comunes. Aplicabilidad El uso de este patrón está recomendado para situaciones en las que tenemos una familia de productos concretos y prevemos la inclusión de distintas familias de productos en un futuro.

Estructura Abstract Factory

Participantes Abstract Factory AbstractFactory (WidgetFactory): Declara un interfaz para las operaciones de creación de objetos de productos abstractos. ConcreteFactory (MotifWidgetFactory, PMWidgetFactory): Implementa las operaciones para la creación de objetos de productos concretos. AbstractProduct (Window, ScrollBar): Declara una interfaz para los objetos de un tipo de productos. ConcreteProduct (MotifWindow, MotifScrollBar): Define un objeto de producto que creará la correspondiente Concrete Factory, a la vez que implementa la interfaz de AbstractProduct. Client: Usa solamente las interfaces declaradas por las clases AbstractFactory y AbstractProduct.

Aplicabilidad Abstract Factory Usar cuando: Un sistema debe ser independiente de cómo se crean, componen y representan sus productos. Un sistema debe ser configurado con una familia de productos entre varias. Una familia de objetos producto relacionados está diseñada para ser usada conjuntamente y es necesario hacer cumplir esa restricción. Se quiere proporcionar una biblioteca de clases de productos y sólo se quiere revelar sus interfaces, no sus implementaciones.

Ejemplo Abstract Factory

Consecuencias Abstract Factory Ventajas: Aisla las clases de implementacion: ayuda a controlar los objetos que se creen y encapsula la responsabilidad de creación. Hace fácil el intercambio de familias de productos sin mezclarse, permitiendo configurar un sistema con una de entre varias familias de productos: Cambio de factory  Cambio de familia. Fomenta la consistencia entre productos.

Consecuencias Abstract Factory Desventajas: Puede ser difícil incorporar nuevos tipos de productos (cambiar AbstractFactory y sus factorias concretas).

Iterator

Iterator Definición El patrón ITERATOR define una interfaz que declara los métodos necesarios para acceder de forma secuencial a una colección de objetos. Las clases que utilizan esta interfaz para acceder a los objetos lo hacen de forma independiente de la clase que implementa la interfaz. El acceso a la estructura interna de la colección a través de la interfaz del iterador hace que ésta permanezca oculta. Objetivo Proveer una forma de tener acceso secuencial a los elementos de un objeto agregado sin tener que exponer su representación interna.

Iterator Aplicaciones Tipos Para acceder a los contenidos de los objetos incluidos en un agregado sin exponer su estructura. Para poder soportar diversas formas de recorrer un agregado de objetos. Para ofrecer una interfaz uniforme para recorrer distintos tipos de estructuras de agregación. Tipos Iteradores externos: el cliente avanza solicitando una operación de cada elemento. Iteradores internos: el cliente le proporciona al iterador la operación que debe aplicar sobre todos los elementos.

Estructura Iterator

Iterator Participantes Consecuencias Iterador: Define la interfaz para acceder y recorrer los elementos de un agregado. IteradorConcreto: Implementa la interfaz del iterador y guarda la posición actual del recorrido en cada momento. Agregado: Define una interfaz para crear un objeto iterador. AgregadoConcreto: Implementa la interfaz de creación de iteradores devolviendo una instancia del iterador concreto apropiado. Consecuencias Soporta distintas formas de recorrer un agregado. Los iteradores simplifican la interfaz de los agregados. Es posible recorrer un mismo agregado utilizando más de un iterador al mismo tiempo

Iterator

class List { public:   List ();   int Count() const;   int &Get(int index) {return info[index];}   int Read(int index);   ~List() {delete info;} private:   int *info; }; class Iterator{ public:         virtual void First(){}         virtual void Next(){}         virtual int IsDone(){ return 0; }         virtual int CurrentItem(){ return 0; } }; class BackIterator: virtual public Iterator { public:         BackIterator(List* aBack);         BackIterator(List* aBack,int c=0);         void First();         void Next();         int IsDone();         int CurrentItem(); private:         List* _back;         int _current; }; class ListIterator: virtual public Iterator { public:         ListIterator(List* aList,int c=0);         void First();         void Next();         int IsDone();         int CurrentItem(); private:         List* _list;         int _current; };

Iterator Cuando un cliente desee recorrer una lista hacia adelante o hacia atrás crea una instancia de ListIterator o de BackIterator y realiza el recorrido de la siguiente manera: (Suponiendo que la instancia es iter)                 for (iter->First() ; !iter->IsDone() ; iter->Next())           {                    // Aquí se realizan las operaciones que se deseen              }