Patrones de Diseño GEYFFER ALEXANDER ACOSTA CRISTHIAN DOUGLAS CASTRO

Slides:



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

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Observador (observer) Visita (Visitor) Singleton
FACHADA COMPOSITOR MEMENTO
Adapter, Bridge, Decorator.
Curso de Java Capitulo 7: Continuación Poo Profesor:
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Definición de Clases y Variables de referencia.
POLIMORFISMO UNIDAD 4.
Herencia en C#.
Lenguaje de programación Java
Tomado de:
UML 1.4 Peter Emerson Pinchao Solis.
Arquitectura CLARO-TECNOTREE
Lección 1 Introducción a la POO
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
DIAGRAMAS DE CLASES Completando los diagramas de interacción, es posible identificar la especificación de las clases que participarán en la solución indicando.
Diseño y programación de
Encapsulamiento y Abstracción
Programación Orientada a Objetos en Java
HERENCIA.
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos UML: Lenguaje de Modelamiento Unificado Toma de Requerimientos.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
SISTEMAS DE LA INFORMACIÓN
Modificadores.
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Introducción a Java II.
Lic. Rosemary Torrico Bascopé
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.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Diseño de Sistemas. Patrones de Diseño. Geronimo Manso.
Semana 5 Subprogramas..
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
FACTORY METHOD Edmundo Álvarez Jiménez Antonio Fernández Alonso
Diagramas de Clase Angela Carrillo R..
Programación Orientada a Aspectos (POA)
Patrones Creacionales
DISEÑO DE SOFTWARE 1ª. Parte
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
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)
Juan Manuel Perdigón Mario Felipe Monsalve
PATRON PROTOTYPE Cristina Merino Héctor Carbajo Alicia Arroyo.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
SOFTWARE PARA PAGOS DE SUELDOS Patrones de Diseño
Programanción I Ing. Cristhian Garita Fonseca
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
PATRÓN ADAPTER (Adaptador) Elena Moreno Ramírez Laura Sánchez Romero Aroa Solana Ruiz.
Sara Isabel Osorio Alacraz Ana Isabel Vallejo Grisales
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
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.
Introducción a UML DIAGRAMA DE CLASES Departamento de Informática
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Clasificación de Diagramas
Patrones de diseño equipo n.1
Capítulo 2 “Subprogramas/Funciones - Arreglos”
UML Casos de Uso (repaso) y Diagramas de Clase
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,
Patrones de Diseño Agustín J. González ElO329.
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
Diagrama de Clases.
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.
2015-BM5A. Introducción Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos.
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 GEYFFER ALEXANDER ACOSTA CRISTHIAN DOUGLAS CASTRO JESSICA MANRIQUE MOLINA YORLEY REYES GARCIA CARLOS ALBERTO VERGARA

PATRONES DE DISEÑO GoF INTRODUCCIÓN Lo importante es mostrar como utilizar Los patrones GoF y los Grasp más básicos.

PATRONES DE DISEÑO GoF Patrones: Son principios y estilos que sirven Para diseñar los objetos. Los patrones se pueden clasificar según su proposito: Patrones de Creacion Patrones de Comportamiento Patrones estructurales

Patrones de Creación Abstraen la forma en la que se crean los objetos, permitiendo la creacion de las clases de forma genérica dejando para más tarde la decisión de qué clases crear o cómo crearlas (Factory, Singleton y Prototype).

Patrones de Creación Según donde se tome dicha decisión podemos clasificar a los patrones de creación en patrones de creación de clase (la decisión se toma en los constructores de las clases y usan la herencia para determinar la creación de las instancias) y patrones de creación de objeto (se modifica la clase desde el objeto).

Patrones de Comportamiento Los patrones de comportamiento estudian las relaciones entre llamadas entre los diferentes objetos, normalmente ligados con la dimensión temporal (Observador y Estrategia).

Patrones estructurales Hacen relación a como las clases y los objetos se combinan para dar lugar a estructuras más complejas. Se puede hablar de patrones estructurales asociados a clases (Adapter) y asociados a objetos (Composite, Decorator, Facade), los primeros utilizarán la herencia, los segundos la composición.

Patrones estructurales Los patrones estructurales asociados con objetos describen formas de componer los objetos para conseguir nueva funcionalidad. La flexibilidad de la composición de objetos viene de la posibilidad de cambiar la composición en tiempo de ejecución, lo que es imposible con la composición estática de clases.

Patrones de la Pandilla de los Cuatro (GoF) Reciben el nombre de pandilla de los cuatro, puesto que el libro Design Patterns fue escrito por cuatro autores Estos patrones son: Adaptador Factoria Singleton

Adapter(Patrón Adaptador) Problema Comó resolver interfaces incompatibles, o proporcionar una interfaz estable para componentes parecidos con diferentes interfaces? Solución Convertir la interfaz original de un componente en otra interfaz, mediante un objeto adaptador intermedio.

Adapter(Patrón Adaptador) El diagrama general

Adapter(Patrón Adaptador) A continuación explicamos cada uno de los Roles del diagrama Client : Clase que llama metodos de otra clase a travéz de una interfaz(target) , sin asumir que el objeto que implementa el método al que llama, pertenezca a una clase específica.

Adapter(Patrón Adaptador) Target: Esta interfaz declara el método que una clase Client llama, es dependiente del dominio que utiliza el cliente.

Adapter(Patrón Adaptador) Esta clase implementa la interfaz. Implementa el método que el cliente llama, haciendo un llamado a un método de la clase Adaptee, la cual no implementa la interfaz.

Adapter(Patrón Adaptador) Adaptee: Esta clase no implementa el método de la interfaz, pero tiene algún método que la clase cliente quiere llamar.

Adapter(Patrón Adaptador) Una clase Adaptador implementa una interfaz conocida para sus clientes, y provee acceso a una instancia de una clase no conocida. Un objeto Adaptador provee la funcionalidad prometida por una interfaz, sin tener que asumir qué clase es usada para implementar la interfaz.

Factory(Patrón Factoria) Problema ¿Quién debe ser el responsable para la creación de objetos, se desea separar las responsabilidades de creación para mejorar la cohesión? Solución Crear un objeto factoría que maneje la creación de objetos.

Factory(Patrón Factoria) La idea que se esconde detrás de este patrón es la de centralizar el sitio donde se crean los objetos, normalmente donde se crean objetos de una misma "familia", como podría ser componentes visuales, componentes de la lógica del negocio, o objetos concurrentes en el tiempo.

Factory(Patrón Factoria) La clase factoría devuelve una instancia de un objeto según los datos que se le pasan como parámetros. Para que la creación centralizada de objetos sea útil y eficaz todos los objetos creados deben descender de la misma clase o implementar el mismo interface (es decir, hagan una operación similar pero de distintas formas), asi podemos usarlos todos de la misma manera, con los mismos métodos (polimorfismo).

Factory(Patrón Factoria) Los objetos Factoria tienen ventajas como: Separan la responsabilidad de la crecion compleja en objetos de apoyo (helpers). Ocultan la logica de creacion potencialmente compleja. Permiten introducir estrategias para mejorar el rendimiento de la gestion de la memoria, objetos cache o de reciclaje.

Factory(Patrón Factoria) Suponiendo la clase base figura para un conjunto de figuras geometricas: public abstract Figura { int lado = 0 public figura (int lado) { this.lado = lado; } public abstract int getArea (); public abstract void dibujar (Graphics g, int x, int y);

Factory(Patrón Factoria) Ahora una clase hija cuadrado: public Cuadrado { public Cuadrado (int lado) { super (lado); } public int getArea () { return (lado x lado); public void dibujar (Graphics g, int x, int y) { g.setColor (Color.black); g.setDrawRect (x, y, lado, lado);

Factory(Patrón Factoria) Ahora otra clase hija, circulo: public Circulo { public Circulo (int lado) { super (lado); } public int getArea () { return (Math.PI x lado x lado); public void dibujar (Graphics g, int x, int y) { g.setColor (Color.black); g.setDrawArc (x, y, lado, lado, 0, 360);

Factory(Patrón Factoria) Esta factoría funciona recibiendo un argumento que determina que clase de figura crear: public void FactoriaDeFiguras { public static final int CUADRADO = 0 public static final int CIRCULO = 1 public Figura getFigura (int tipo, int lado) { if (tipo == this.CUADRADO) { return (new Cuadrado (lado)) } else { return (new Circulo (lado))

Singleton (Patrón Unitario) ¿Qué es un Singletón? Un singleton es una clase que tiene una lógica que solamente le permite instanciarse una vez en un objeto, es decir, que solamente se podrá llamar a su constructor una sola vez.

Singleton (Patrón Unitario) En Computación, el patrón de diseño singleton (patrón unitario) está diseñado para restringir la instanciación de una clase o valor de un tipo a un solo o eventualmente muy pocos objetos. Resulta muy útil cuando por ejemplo se necesita un único objeto que coordina acciones en un sistema. Algunas veces se utiliza también en aplicaciones en donde resulta más eficiente trabajar con uno o muy pocos objetos.

Singleton (Patrón Unitario) Es importante para algunas clases tener exactamente una sola instancia. Por ejemplo: Aunque puede haber muchas impresoras en un sistema, debe haber solo una cola de impresora. Deberá haber sólo un sistema de archivos y un manejador de ventanas. Una cuenta de sistema estará dedicada a servir a una compañía

Singleton (Patrón Unitario) El propósito de este patrón es asegurar que una clase solo tenga una instancia, y proveer un punto global de acceso a ella. Se debe usar el patrón Singleton cuando: Debe haber exactamente una instancia de la clase, y debe ser accesible a los clientes desde un punto de acceso bien conocido.

Singleton (Patrón Unitario) Cuando la única instancia debe ser extensible solo por subclase, y los clientes deben ser capaces de usar una instancia extendida sin modificar su código. El sistema solo necesita emplear una única instancia de una clase. La clase debe ser accesible desde diferentes partes del sistema.

Singleton (Patrón Unitario) Las clases que cumplen estas características suelen tener alguna de estas funciones: Controlar el acceso a un recurso que por su naturaleza no admite el acceso concurrente (impresora, socket, fichero). Obtener referencias de clases que actúan como servidoras de recursos (pool de conexiones).

Singleton (Patrón Unitario) Ejecutar código carente de estado (si el estado no cambia solo necesitamos una instancia). Mantener un estado que debe ser globalmente único.

Singleton (Patrón Unitario) El patrón singleton se implementa creando una clase con un método que crea una instancia del objeto sólo si todavía no existe alguna. Para asegurar que la clase no puede ser instanciada nuevamente se regula el alcance del constructor (con atributos como protegido o privado).

Singleton (Patrón Unitario) La instrumentación del patrón puede ser delicada en programas con múltiples hilos de ejecución. Si dos hilos de ejecución intentan crear el valor único al mismo tiempo y éste no existe todavía, sólo uno de ellos debe lograr crear el objeto. La solución clásica para este problema es utilizar exclusión mutua en método de creación de la clase que implementa el patrón.

Singleton (Patrón Unitario) Esta es una implementación en el lenguaje de programación Java de una clase Singleton: /** *Clase que implementa el patrón singleton * *Para obtener el valor de la clase, ejecutar *Singleton.getInstance() */

Singleton (Patrón Unitario) public class Singleton { /** *Para permitir la extensión de la clase, el *constructor se define como protegido. */ protected Singleton() { // ... }

Singleton (Patrón Unitario) /** *Acceso privado al único objeto de la clase */ static private Singleton instance = null; * @return El único objeto de la clase. static public Singleton getInstance() { if(null == instance) { instance = new Singleton(); } return instance;