1 / 43

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

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

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lenguajes de ProgramaciónTema 3. Paradigma Orientado a ObjetosPatrones de diseño Pedro García López pgarcia@etse.urv.es/

  2. La Biblia • Design Patterns. Elements of Reusable Object-Oriented Software • Erich Gamma • Richard Helm • Ralph Johnson • John Vlissides Gang of Four (GoF)

  3. 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

  4. 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

  5. MVC

  6. MVC

  7. Patrones GoF

  8. Creational Patterns • Abstract Factory • Factory Method • Builder • Prototype • Singleton

  9. Ejemplo: Maze

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

  11. Abstract Factory

  12. Ejemplo de Bases de datos

  13. Singleton publicclassSingleton { 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.

  14. 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

  15. Structural Patterns • Adapter • Bridge • Composite • Decorator • Facade • Flyweight • Proxy

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

  17. Ejemplo de Adapter

  18. 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.

  19. 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.

  20. ¿ Es esto un class adapter o un object adapter ?

  21. 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.

  22. Ejemplo Composite

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

  24. Decorator sample

  25. 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

  26. Facade sample

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

  28. Proxy example • Remote proxy • Virtual proxy • Security proxy • Smart reference

  29. 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.

  30. 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

  31. Observer example

  32. 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.

  33. Creando nuestros propios eventos

  34. Interfaz Listener Propia

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

  36. 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.

  37. 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.

More Related