Geykel Raul Moreno Ceballos Sherpa Chairman & Chief Software Architect Adapter (Wrapper) Structural Pattern (Patrón Estructural)

Slides:



Advertisements
Presentaciones similares
Adapter, Bridge, Decorator.
Advertisements

Lenguaje de programación Java
Patrones de Diseño GEYFFER ALEXANDER ACOSTA CRISTHIAN DOUGLAS CASTRO
Encapsulamiento y Abstracción
4.- Orientación a Objetos Justo N. Hidalgo Sanz DEPARTAMENTO DE INGENIERÍA INFORMÁTICA.
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
Diseño de Sistemas. Patrones de Diseño. Geronimo Manso.
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.
Patrones de Diseno Flyweight Observer y Adapter Integrantes:
Javier Juárez González José Carlos Bernárdez Fdez. Alberto Barbosa León.
Lenguajes de Programación Tema 3
Patrones de diseño DECORATOR Mario Rodríguez Martín
Luis Pereda Calvo1 Comportamiento de Objetos Estrategia (Strategy) *Política (Policy)
Son la base para la búsqueda de soluciones o problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
Patrones de Diseño Carolina Perozo Julio Padrón Anthony Accardi.
1 Introducción a Java y Diseño orientado a objetos ELO-329 Diseño y programación orientados a objetos 1s05.
PATRONES DE DISEÑO.
PATRÓN ADAPTER (Adaptador) Elena Moreno Ramírez Laura Sánchez Romero Aroa Solana Ruiz.
1 Introducción a Java y Diseño orientado a objetos ELO-329 Diseño y programación orientados a objetos 1s04.
1 Interfaces y Clases Internas ELO-329: Diseño y programación orientados a objetos Agustín J. González.
1 Entorno en Java y Diseño orientado a objetos ELO-329 Diseño y programación orientados a objetos 1s09.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) LENGUAJES DE PROGRAMACIÓN PARA EL DESARROLLO DE INTERFACES.
Ingeniería de Requisitos
Patrones de diseño equipo n.1
PATRONES DE DISEÑO. Patrones estructurales (Structural patterns)
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Simulación del patrón … (5)
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Patron ESTADO Por : Luis Alberto Silva. Descripción General Permite que un objeto modifique su comportamiento cada vez que cambia su estado interno. Parecera.
OpenGL básico con SDL Alejandro Valenzuela Roca Laboratorio de Investigación y Desarrollo de Software Libre 25 de Abril de 2008.
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos.
UN SISTEMA OPERATIVO EN LA RED ¿que es ? El escritorio virtual es un servicio para usuarios de la red internet. Este servicio se caracteriza por permitir.
Herencia Multiple en Java
Unidad Didáctica 11 Reutilización Versión 1.0.0
Clases y Objetos.
Desarrollo rápido de prototipo
Ingeniería Directa. Generar código a través de modelos se le conoce como ingeniería directa.
Programación orientada a objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Programación Orientada a Objetos
Programación Orientada a Eventos
Fundamentos de la programación orientada a objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Patrones de Diseño Agustín J. González ElO329.
Patrones de Diseño Agustín J. González ElO329.
Google docs.
Programación orientada a objetos
Polimorfismo y Métodos Virtuales
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Programación Orientada a Objetos I Unidad 4 Relaciones entre clases: herencia.
Herencia en C#.
HERENCIA.
Realizado por: Dr. Jean Paul Rojas Chavez
Patrones de diseño Catálogo
FACTORY METHOD Creación a nivel de clases.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
HerraMienta: TAREAS 5 Conceptos
Fundamentos de programación en TIG 4. Aptana y Arcpy
Plantillas (Templates)‏
Fundamentos básicos del lenguaje C#. Parte 1 Introducción a C#
UNIVERSIDAD TECNOLÓGICA EMILIANO ZAPATA
APLICACIONES II ° Patrones De Diseño ° Esteban Omar Mora Delgado
Conceptos básicos de.NET Explorar el entorno de desarrollo Crear un proyecto Visual Basic.NET Use Visual Studio.NET Acceso a datos Depurar e implantar.
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
Class adapter.
OBJETOS.
Patrones de Diseño Agustín J. González ElO329.
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Templates (en español: Pantillas, modelos, patrones)‏
Clases abstractas e interfaces
Transcripción de la presentación:

Geykel Raul Moreno Ceballos Sherpa Chairman & Chief Software Architect Adapter (Wrapper) Structural Pattern (Patrón Estructural)

Intención Convierte la interfaz de una clase en una interfaz que el cliente espera. Adapter permite que clases con interfaces incompatibles puedan trabajar de conjunto.

Motivación En algunas ocasiones un toolkit de clases diseñado de forma tal que se pueda reusar no es reusable debido que su interfaz no se corresponde a la interfaz del dominio especifico que requiere la aplicación. Consideremos por ejemplo un editor de dibujo que permite al usuario dibujar y ordenar elementos graficos (lineas, poligonos, textos, etc.)

Motivación La clave de abstracción del editor son objetos gráficos, que tienen una forma editable y pueden dibujarse ellos mismos. La interfaz para objetos gráficos está definida por la clase abstracta Shape El editor define una subclase de Shape para cada objeto grafico: LineShape para las líneas, PolygonShape para los polígonos, TextShape para texto…

Motivación Por ejemplo TextShape puede mostrar y editar texto, generalmente este tipo de clase es difícil de implementar, supongamos que el toolkit de clases del usuario ya provee una clase TextView que realiza estas acciones, idealmente nos gustaría utilizar TextView para implementar TextShape pero este toolkit no fue diseñado teniendo en cuenta la clase Shape por lo tanto no podemos intercambiarlas.

Motivación ¿Cómo pueden clases desligadas como TextView trabajar en una aplicación que espera clases con interfaces diferentes e incompatibles?

Motivación Podemos cambiar TextView de forma tal que se adapte a la interfaz de Shape, pero esa no es una opcion a menos que tengamos el codigo fuente del toolkit; de lo contrario, podemos definir TextShape de forma tal que adapte la interfaz de TextView a la de Shape. Esto se puede hacer de dos formas:

Motivación 1.Heredando la interfaz de Shape y la implementación de TextView, o 2.Creando una instancia de TextView en TextShape e implementar TextShape en términos de la interfaz de TextView. Llamamos a TextShape como “adapter”

Motivación

Aplicación Usa el patrón Adapter cuando: 1.Deseas usar una clase y su interfaz no se corresponde con la que necesitas. 2.Quieres crear una clase reusable que coopere con clases inesperadas, o sea, clases que no necesariamente tengan interfaces compatibles. 3.Necesitas usar varias subclases existentes, pero no es práctico adaptar sus interfaces subclassing cada una de ellas. Un object adapter puede adaptar las interfaces de su clase progenitora.

Estructura Un class adapter usa herencia múltiple para adaptar una interfaz a otra:

Estructura Un object adapter se apoya en la composición del objeto:

Participantes -Target: Define la interfaz del dominio específico que el cliente usa. -Client: Colabora con objetos de acuerdo a la interfaz de Target. -Adaptee: Define una interfaz existente que necesita ser adaptada. -Adapter: Adapta la interfaz de Adaptee a la de Target.

Colaboración Client llama a las operaciones en la instancia de Adapter. A su vez el adapter llama a las operaciones de Adaptee para que se ocupe del pedido.

Código class Shape { public: Shape(); virtual void BoundingBox( Point& bottomLeft, Point& topRight ) const; virtual Manipulator* CreateManipulator() const; };

Código class TextView { public: TextView(); void GetOrigin(Coord& x, Coord& y) const; void GetExtent(Coord& width, Coord& height ) const; virtual bool IsEmpty() const; };

Código class TextShape : public Shape, private TextView { public: TextShape(); virtual void BoundingBox( Point& bottomLeft, Point& topRight ) const; virtual bool IsEmpty() const; virtual Manipulator* CreateManipulator() const; };

Código void TextShape::BoundingBox ( Point& bottomLeft, Point& topRight) const { Coord bottom, left, width, height; GetOrigin(bottom, left); GetExtent(width, height); bottomLeft = Point(bottom, left); topRight = Point(bottom + height, left + width); } bool TextShape::IsEmpty () const { return TextView::IsEmpty(); }

Patrones Relacionados Bridge Decorator Proxy