Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

43
Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño Pedro García López [email protected] /

description

Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño. Pedro García López [email protected] /. La Biblia. Design Patterns. Elements of Reusable Object-Oriented Software Erich Gamma Richard Helm Ralph Johnson John Vlissides Gang of Four (GoF). Orígenes. - PowerPoint PPT Presentation

Transcript of Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Page 1: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Lenguajes de ProgramaciónTema 3. Paradigma Orientado a

Objetos

Patrones de diseño

Pedro García Ló[email protected]/

Page 2: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño
Page 3: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

La Biblia

• Design Patterns.Elements of Reusable Object-Oriented Software

– Erich Gamma– Richard Helm– Ralph Johnson– John Vlissides

Gang of Four (GoF)

Page 4: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Orígenes

• ... describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice [Alexander]

• Estructura: Contexto, Problema, Solución

Page 5: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Modelo Vista Controlador (MVC)

• Utilizado en Smalltalk para construir interfaces

• Modelo: Estructura de datos o objeto, invisible• Vista: Representación en pantalla• Controlador: responsable de gestionar entradas

del usuario o usuarios, acopla modelos y vistas

Page 6: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

MVC

Page 7: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

MVC

Page 8: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Patrones GoF

Purpose

Creational Structural Behavioral

Class Factory Method Adapter Interpreter

Scope

Object

Abstract Factory

Builder Prototype Singleton

Adapter Bridge Composite Decorator Facade Flyweight Proxy

Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Vistor

Page 9: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Creational Patterns

• Abstract Factory

• Factory Method

• Builder

• Prototype

• Singleton

Page 10: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Ejemplo: Maze

Page 11: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño
Page 12: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Abstract factory

Ofrece una interfaz para crear familias de objetos relacionados sin especificar sus instancias. Ejemplo : Bases de datos.

Page 13: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Abstract Factory

Page 14: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño
Page 15: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño
Page 16: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Ejemplo de Bases de datos

Page 17: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Singleton

return unicaInstancia

Singleton

unicaInstanciadatoSingleton

instancia()operacionSingleton()getSingleton()

public class Singleton {

public static Singleton instancia() { if (unicaInstancia = = null)

{unicaInstancia = new Singleton()}; return unicaInstancia

}; protected Singleton();

private static Singleton unicaInstancia = null;

Ensure a class only has one instance, and provide a global point to access it.

Page 18: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Structural Patterns

• Describen como se combinan las clases para formar estructuras

• Los patrones de clase usan la herencia

• Los patrones de objeto usan la composición de clases

Page 19: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Structural Patterns

• Adapter

• Bridge

• Composite

• Decorator

• Facade

• Flyweight

• Proxy

Page 20: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Adapter

• Convierte la interfaz de una clase en otra interfaz que el cliente espera. Adapter permite que clases inicialmente incompatibles puedan interactuar.

Page 21: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Ejemplo de Adapter

Page 22: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Object Adapter

• El adapter hereda de la interface que el cliente espera (Atarget), mientras que mantiene una instancia del objeto adaptado (Adaptee). Cuando el cliente invoca el método request en el adaptador, la llamada se traduce en la correspondiente llamada en el objeto adaptado.

Page 23: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Class Adapter• Como en el object adapter, el class adapter hereda la

interface de ATarget. Pero también hereda del objeto adaptado en si. Así, la llamada a request es simplemente enrutada al método de la misma clase.

Page 24: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

¿ Es esto un class adapter o un object adapter ?

Page 25: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Composite• Compone objetos en estructuras de arbol que representan

jerarquías. Composite permite a los clientes tratar objetos individuales y grupos de objetos de manera uniforme. Una hoja tiene la misma interfaz que un nodo.

Page 26: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Ejemplo Composite

Page 27: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Decorator

• Añade responsabilidades adicionales a un objeto de forma dinámica. Utilizan la herencia para exteder la funcionalidad de un objeto.

Page 28: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Decorator sample

Page 29: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Facade• Ofrece una interfaz unificada a un conjunto de

interfaces de un sistema. La fachada ofrece una interfaz de alto nivel que permite abstraerse de la complejidad del sistema y lo hace más facild e

Page 30: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Facade sample

Page 31: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Proxy

• Ofrece un sustituto o representante de otro objeto para controlar su acceso o mejorar la interacción.

Page 32: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Proxy example

• Remote proxy

• Virtual proxy

• Security proxy

• Smart reference

Page 33: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Behavioural patterns

• Se encargan de crear algoritmos que establecen el comportamiento o llamadas relacionadas entre un grupo de objetos.

• No solo describen la estructura sino la información o comunicación que fluye entre objetos.

• Permite concentrarse en las formas de interconexión entre objetos.

Page 34: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Observer• Define una relación uno-a-muchos entre objetos,

de forma que cuando un objeto cambia su estado, todos los objetos interesados son notificados y actualizados automáticamente.

• Relacionado con el MVC

Page 35: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Observer example

Page 36: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Interfaces gráficas en Java

• java.awt.event.ActionListener– void actionPerformed(ActionEvent e)

• java.awt.Button–  void addActionListener(ActionListener l)

• Pensad un momento a qué equivale la interfaz ActionListener en el patrón Observer.

Page 37: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño
Page 38: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Creando nuestros propios eventos

Page 39: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Interfaz Listener Propia

Page 40: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño
Page 41: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Iterator

• Ofrece una forma de acceder elementos de un objeto agregado de forma secuencial sin exponer la representación interna del objeto.

Page 42: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Template method• Define el esqueleto de un algoritmo, dejando

abstractas o por definir operaciones a las clases cliente. Template method permite a las subclases redefinir ciertos pasos de un algoritmo sin cambiar la estructura del mismo.

Page 43: Lenguajes de Programación Tema 3. Paradigma Orientado a Objetos Patrones de diseño

Conclusiones

• Los patrones de diseño los utilizan todos los ingenieros en programación orientada a objetos.

• Son recetas que podemos utilizar y que nos ayudarán a entender mejor la orientación a objetos, la herencia y el polimorfismo.