15/06/2010<br />Departamento de Telemática<br />AMBIENTES DE DESARROLLO<br />Patrones<br />
15/06/2010<br />Patrones<br />Los Patrones son estructuras reutilizables en la construcción de aplicaciones.<br />Pueden s...
 De Interfaz
 Arquitectónicos
 otros</li></li></ul><li>15/06/2010<br />Patrones - Introducción<br />Los Patrones de Diseño nos hablan de como construir ...
15/06/2010<br />Orígenes 1/4<br />Los precedentes a los patrones de diseño vienen del campo de la Arquitectura, Christophe...
15/06/2010<br />Orígenes 2/4<br />“Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, para des...
15/06/2010<br />Orígenes 3/4<br /><ul><li>En 1987 Ward Cunningham y Kent Beck utilizan las ideas de Alexander para desarro...
Posteriormente en 1991 JimCoplien publica el libro "Advanced C++ ProgrammingStyles and Idioms", donde realiza un catalogo ...
15/06/2010<br />Clasificación<br /><ul><li>Patrones de Creación
Patrones de Estructura
Patrones de Comportamiento
Patrones de Análisis
Patrones de Arquitectura
Patrones de Interfaces
Patrones de Organización
Patrones de Programación</li></li></ul><li>15/06/2010<br />Características<br /><ul><li>Son soluciones concretas.
Son soluciones técnicas.
Se utilizan en situaciones frecuentes.
Favorecen la reutilización de código.
El uso de un patrón no se refleja en el código.
Es difícil reutilizar la implementación de un patrón.</li></li></ul><li>15/06/2010<br />Formas de Descripción<br /><ul><li...
Intención
Otros Nombres
Motivación
Aplicaciones
Estructura
Participantes
Colaboraciones
Consecuencias
Implementación
Ejemplo
Usos Conocidos
Patrones Relacionados</li></li></ul><li>15/06/2010<br />Ejemplo 1/7<br /><ul><li>Nombre: Builder
Intención: Permite a un cliente crear un objeto especificando tipo y contenido, ocultandose el resto de detalles.
Otros Nombres: Builder, Creador
Motivación: La creación de objetos o instanciación de clases es uno de los temas más frecuentes en la Programación Orienta...
Upcoming SlideShare
Loading in …5
×

Introducción a los patrones de diseño

15,448 views

Published on

Diapositivas curso Ambientes de Desarrollo

Published in: Education, Technology

Introducción a los patrones de diseño

  1. 1. 15/06/2010<br />Departamento de Telemática<br />AMBIENTES DE DESARROLLO<br />Patrones<br />
  2. 2. 15/06/2010<br />Patrones<br />Los Patrones son estructuras reutilizables en la construcción de aplicaciones.<br />Pueden ser:<br /><ul><li> De Diseño
  3. 3. De Interfaz
  4. 4. Arquitectónicos
  5. 5. otros</li></li></ul><li>15/06/2010<br />Patrones - Introducción<br />Los Patrones de Diseño nos hablan de como construir software, de como utilizar las clases y los objetos de forma conocida. <br />Es necesario tener conocimientos previos de Programación Orientada a Objetos para entender los Patrones<br />
  6. 6. 15/06/2010<br />Orígenes 1/4<br />Los precedentes a los patrones de diseño vienen del campo de la Arquitectura, Christopher Alexander a finales de los 70 escribe varios libros acerca de urbanismo y construcción de edificios, y se plantea reutilizar diseños ya aplicados en otras construcciones que cataloga como modelos a seguir.<br />
  7. 7. 15/06/2010<br />Orígenes 2/4<br />“Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, para describir después el núcleo de la solución a ese problema, de tal manera que esa solución pueda ser usada más de un millón de veces sin hacerlo ni siquiera dos veces de la misma forma”<br />Christopher Alexander<br />
  8. 8. 15/06/2010<br />Orígenes 3/4<br /><ul><li>En 1987 Ward Cunningham y Kent Beck utilizan las ideas de Alexander para desarrollar un lenguaje de patrones como guía para los programadores de Smaltalk, dando lugar al libro "UsingPatternLanguajesforObject-OrientedPrograms".
  9. 9. Posteriormente en 1991 JimCoplien publica el libro "Advanced C++ ProgrammingStyles and Idioms", donde realiza un catalogo de "idioms" (especie de patrones) </li></li></ul><li>15/06/2010<br />Orígenes 4/4<br /><ul><li>Entre 1990 y 1994, Erich Gamma, Richard Helm, Ralph Johnson y HohnVlissides realizan el primer catálogo de patrones de diseño, que publican en el libro "DesignPatterns: Elements of Reusable Object-Oriented Software" (Gang of Four) (la pantilla de los cuatro).</li></li></ul><li>15/06/2010<br />Patrones Concepto 1/3<br /><ul><li>Un patrón es una unidad de información nombrada, instructiva e intuitiva que captura la esencia de una familia exitosa de soluciones probadas a un problema recurrente dentro de un proyecto a desarrollar.</li></li></ul><li>15/06/2010<br />Patrones de Diseño Concepto 2/3<br /><ul><li>Un patrón es una solución de diseño de software a un problema, aceptada como correcta, a la que se ha dado un nombre y que puede ser aplicada en otros contextos.</li></li></ul><li>15/06/2010<br />Patrones de Diseño Concepto 3/3<br />Son un mecanismo popular para describir soluciones generales de problemas de diseño que pueden ser reusadas en la construcción de aplicaciones. Cada patrón prescribe una estructura de clases, sus roles y colaboraciones, y una adecuada asignación de métodos para resolver un problema de diseño en una manera flexible y adaptable.<br />
  10. 10. 15/06/2010<br />Clasificación<br /><ul><li>Patrones de Creación
  11. 11. Patrones de Estructura
  12. 12. Patrones de Comportamiento
  13. 13. Patrones de Análisis
  14. 14. Patrones de Arquitectura
  15. 15. Patrones de Interfaces
  16. 16. Patrones de Organización
  17. 17. Patrones de Programación</li></li></ul><li>15/06/2010<br />Características<br /><ul><li>Son soluciones concretas.
  18. 18. Son soluciones técnicas.
  19. 19. Se utilizan en situaciones frecuentes.
  20. 20. Favorecen la reutilización de código.
  21. 21. El uso de un patrón no se refleja en el código.
  22. 22. Es difícil reutilizar la implementación de un patrón.</li></li></ul><li>15/06/2010<br />Formas de Descripción<br /><ul><li>Nombre
  23. 23. Intención
  24. 24. Otros Nombres
  25. 25. Motivación
  26. 26. Aplicaciones
  27. 27. Estructura
  28. 28. Participantes
  29. 29. Colaboraciones
  30. 30. Consecuencias
  31. 31. Implementación
  32. 32. Ejemplo
  33. 33. Usos Conocidos
  34. 34. Patrones Relacionados</li></li></ul><li>15/06/2010<br />Ejemplo 1/7<br /><ul><li>Nombre: Builder
  35. 35. Intención: Permite a un cliente crear un objeto especificando tipo y contenido, ocultandose el resto de detalles.
  36. 36. Otros Nombres: Builder, Creador
  37. 37. Motivación: La creación de objetos o instanciación de clases es uno de los temas más frecuentes en la Programación Orientada a Objetos. Este patrón permite tener una política general para la creación de objetos, centralizandolo en una clase Builder. </li></li></ul><li>15/06/2010<br />Ejemplo 2/7<br /><ul><li>Aplicaciones: Una clase superior Builder se aplica en la creación de clases menores...
  38. 38. Cuando sea necesario crear y agregar instancias de clases.
  39. 39. Cuando sea necesario contener múltiples instancias de clases.
  40. 40. Cuando la clase superior dispone de los datos necesarios para la clase a instanciar.</li></li></ul><li>15/06/2010<br />Director<br />Builder<br />RTFbuilder<br />Ejemplo 3/7<br /><ul><li>Estructura:</li></li></ul><li>15/06/2010<br />Ejemplo 4/7<br /><ul><li>Colaboraciones:</li></li></ul><li>15/06/2010<br />Ejemplo 5/7<br /><ul><li>Consecuencias:
  41. 41. Reduce el acoplamiento.
  42. 42. Permite variar la representación interna de estructuras compleja, respetando la interfaz común de la clase Builder.
  43. 43. Se independiza el código de construcción de la representación.
  44. 44. Las clases concretas que tratan las representaciones internas no forman parte de la interfaz del Builder. </li></li></ul><li>15/06/2010<br />Ejemplo 6/7<br /><ul><li>Consecuencias:
  45. 45. Cada ConcreteBuilder tiene el código especifico para crear y modificar una estructura interna concreta.
  46. 46. Distintos Director con distintas utilidades pueden utilizar el mismo ConcreteBuilder.
  47. 47. Permita un mayor control en el proceso de creación del objeto.
  48. 48. El Director controla la creación paso a paso, solo cuando el Builder ha terminado de construir el objeto lo recupera el Director.</li></li></ul><li>15/06/2010<br />Ejemplo 7/7<br /><ul><li>Implementación: El Builder posee un interfaz concada operación que se puede realizar, el ConcreteBuilder implementa esas operaciones.
  49. 49. Usos Conocidos: Tratamiento de diferentes formatos de archivos. Creación de objetos complejos independientes de los elementos que lo componen
  50. 50. Patrones Relacionados: Composite. Director. Método Factoría.</li></li></ul><li>15/06/2010<br />Patrón Observer<br />
  51. 51. 15/06/2010<br />Patrones de GRASP 1/2<br /><ul><li>Los patrones GRASP (patrones de los principios generales para asignar responsabilidades) describen los principios fundamentales de la asignación de responsabilidades a objetos, expresados en forma estructurada.</li></ul>Libro “ULM y Patrones” de Craig Larman<br />
  52. 52. 15/06/2010<br />Patrones de GRASP 2/2<br /><ul><li>Patrón Experto
  53. 53. Patrón Creador
  54. 54. Patrón Bajo Acoplamiento
  55. 55. Patrón Alta Cohesión
  56. 56. Patrón Controlador</li></li></ul><li>15/06/2010<br />Patrón Experto<br /><ul><li>Problema: ¿Cuál es el principio fundamental en virtud del cual se asignan las responsabilidades en el diseño orientado a objetos?
  57. 57. Solución: Asignar una responsabilidad al experto en información: la clase que cuenta con la información necesaria para cumplirla </li></li></ul><li>15/06/2010<br />Aplicación del Patrón Experto 1/4<br />
  58. 58. 15/06/2010<br />Aplicación del Patrón Experto 2/4<br />
  59. 59. 15/06/2010<br />Aplicación del Patrón Experto 3/4<br />
  60. 60. 15/06/2010<br />Aplicación del Patrón Experto 4/4<br /><ul><li>Clase: Venta
  61. 61. Responsabilidad: conoce el total de la venta
  62. 62. Clase: VentaLineadeProducto
  63. 63. Responsabilidad: conoce el subtotal de la línea de producto
  64. 64. Clase: EspecificaciondeProducto
  65. 65. Responsabilidad: conoce el precio del producto</li></li></ul><li>15/06/2010<br />Beneficios del Patrón Experto<br /><ul><li>Se conserva el encapsulamiento
  66. 66. Bajo acoplamiento
  67. 67. Distribución del comportamiento entre clases que tienen la información necesaria para cumplir con una tarea en conjunto
  68. 68. Alta Cohesión</li></li></ul><li>15/06/2010<br />Servidor de Aplicaciones + Sesiones<br />http<br />Navegador + Cookies<br />Páginas Servidor + Motores del Servicio<br />Páginas HTML + formularios<br />Servidor web +<br />Autentificación +<br />Gestión Cookies<br />Patrones de Arquitectura 1/3<br />
  69. 69. 15/06/2010<br />Servidor de Aplicaciones + Sesiones<br />http<br />Navegador + Cookies<br />Páginas Servidor + Motores del Servicio<br />Scripts + XML + XML + Applets + JavaBeans<br />Páginas HTML + formularios<br />Servidor web +<br />Autentificación +<br />Gestión Cookies<br />Patrones de Arquitectura 2/3<br />
  70. 70. 15/06/2010<br />Servidor de Aplicaciones + Sesiones<br />http<br />DCOM + RMI + CORBA<br />Navegador + Cookies<br />Páginas Servidor + Motores del Servicio<br />Scripts + XML + XML + Applets + JavaBeans<br />Páginas HTML + formularios<br />Servidor web +<br />Autentificación +<br />Gestión Cookies<br />Patrones de Arquitectura 3/3<br />
  71. 71. 15/06/2010<br />Patrones de Interfaz 1/3<br />Algunos ejemplos son:<br /><ul><li>Formatos de Fechas
  72. 72. Vista Previa
  73. 73. Scrollbar
  74. 74. Menú Flotante
  75. 75. y muchos más</li></li></ul><li>15/06/2010<br />Patrones de Interfaz 2/3<br />
  76. 76. 15/06/2010<br />Patrones de Interfaz 3/3<br />
  77. 77. 15/06/2010<br />Organización por<br />Organización en el tiempo<br />Componentes<br />FASES<br />COMPONENTES DEL PROCESO<br />Modelado de la Organización<br />Captura de Requisitos<br />Est_Pre<br />For_Pro<br />Eje_Pro<br />Val_Sol<br />Análisis<br />Diseño<br />Implementación<br />Pruebas<br />Puesta en Servicio<br />COMPONENTES DE SOPORTE<br />Gestión de Configuración y Cambios<br />Gestión del Proyecto<br />Entorno<br />Prep.#1<br />Prep.<br />#2<br />Const.<br />#1<br />Const.<br />#2<br />Const.<br />#N<br />Trans.<br />#1<br />Trans.<br />#2<br />Inicial<br />Iteraciones<br />Procesos de Desarrollo con Patrones<br />
  78. 78. 15/06/2010<br />Preguntas ?<br />

×