SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
CLASE 9:
DISEÑO CON PATRONES

       Universidad Simón Bolívar. Ing. de Software.
                           Prof. Ivette C. Martínez
Diseño de Objetos
  Identificar requerimientos, crear un modelo del
   dominio, agregar métodos a las clases de software,
   definir mensajes para cumplir los requerimientos…
  Simple?!?
       Quémétodos pertenecen a cada clase?
       Como asignamos responsabilidades a las clases

    La herramienta crítica de diseño de software es una
     mente bien educada en los principios de diseño y en
     patrones de diseño
Diseño de Objetos: entradas
    PDV entradas al proyecto:
      Texto   del Caso de Uso Procesar Venta
        Definir   el comportamiento
      Diagrama      de Secuencia del Sistema
        Identificar   los mensajes del sistema
      Los   contratos de las operaciones
        Establecer los eventos a diseñar y detallar las post-
         condiciones a satisfacer
Diseño de Objetos: entradas
    PDV entradas al proyecto:
      Especificaciones    adicionales
        Define   objetivos no-funcionales
      Glosario
        Formato  de los datos, datos relacionados con la interfaz de
         usuario y la base de datos.
      Modelo     del Dominio
        Esquema  inicial de los objetos de software en la capa del
         dominio de la arquitectura del software
Diseño Dirigido por Responsabilidades

    Una responsabilidad es un contrato u obligación de una clase.
    Qué debe “conocer” una clase? [responsabilidad de
     conocimiento]
       Datos encapsulados privados
       Objetos relacionados
       Cosas que puede derivar o calcular

    Qué debe “hacer” una clase? [responsabilidad de acción]
       Realizar una acción (crear un objeto, realizar un cálculo)
       Iniciar una acción en otros objetos
       Controlar/coordinar acciones en otros objetos

    Las responsabilidades se le asignan a los objetos durante el
     diseño de objetos
Ejemplos de Responsabilidades
    “Una venta es responsable de crear una
     VentaLineaDeProducto” (hacer)
    “Una venta es responsable de conoces su total” (conocer)
    Las responsabilidades de conocimiento están relacionadas con
     los atributos y las asociaciones en el modelo del dominio.
    Las responsabilidades de acción pueden ser expresadas en
     diferentes granularidades.
    Las responsabilidades de acción son implementadas mediante
     métodos.
Modelo del Dominio y
Responsabilidades
  El modelo del Dominio ilustra los atributos y las
   asociaciones => inspira las responsabilidades de
   “conocimiento”
  Los métodos cumplen las responsabilidades

      Solo(dentro del objeto mismo)
      Mediante la colaboración con otros objetos y métodos
Patrones de Aprendizaje

    Las soluciones exitosas en muchas áreas del
     esfuerzo humano tienen sus raices en patrones.
         Un objetivo importante de la educación es transmitir
        patrones de aprendizaje de generación en generación.
  Ejemplos: Patrones usados para aprender ajedrez
  Aprende a desarrollar buen software es parecido

   a aprender a jugar bien ajedrez.
Qué es un patrón ?

•    Cada Patrón describe un problema que
     ocurre una y otra vez en nuestro ambiente, y
     luego describe el núcleo de la solución a ese
     problema, de forma tal que esa solución
     puede ser usada un millón de veces, sin
     hacerlo de la misma manera dos veces.

     C. Alexander, “The Timeless Way of Building”, 1979
Visión de patrones de Alexander

   Regla de tres partes que expresa una relación
    entre cierto contexto, un problema y una solución.
   Elemento del mundo – una relación entre

        un contexto
        un sistema de fuerzas que ocurren repetidamente
         en el contexto
        una configuración espacial que permite que las
         fuerzas se resuelvan ellas mismas
Visión de patrones de Alexander

     Elemento de lenguaje – una instrucción
        Describe como la configuración espacial puede se
         usada repetitivamente.
        para resolver el sistema de fuerzas dado
        en cualquier lugar en que el contexto la hace
         relevante
     La dualidad “objeto – proceso”
        Un objeto que ocurre en el mundo
        Un proceso (regla) que genera ese objeto
Por qué usar patrones ?

 “Los patrones te ayudan a aprender de
  los éxitos de otros en lugar de aprender
  de tus errores”
  Mark Johnson (citado por B. Eckel)
Por qué usar patrones ?

    Una capa de abstracción adicional
      Separar  las cosas que cambian de las cosas que
       permanecen iguales
      Extraer los factores comunes entre una familia de
       problemas similares
    Una forma inteligente y profunda de resolver
     una clase particular de problemas
      Soluciones   más generales y flexibles
Patrones de diseño

    Los patrones de diseño representan
     soluciones a problemas que surgen cuando
     se desarrolla software en un contexto
     particular.
      Patrones= par Problema/Solución dentro de
       un Contexto
Patrones de Diseño
    Capturan la estructura estática y dinámica, y la
     colaboración entre los participantes claves del
     diseño del software
       participante  clave – abstracción principal que ocurre
        en un problema de diseño
       Útil para articular el cómo y el por qué resolver las
        fuerzas no funcionales.
    Facilita la reutilización de arquitecturas y diseños
     de software exitoso
Ejemplo: Vistas de datos, problema
de consistencia
El patrón Observer
    Propósito
       Definir
              una dependencia de uno-a-muchos entre objetos
       de manera que cuando un objeto cambia de estado,
       todas sus dependencias son notificadas y actualizadas
       automáticamente.
    Fuerzas
       Puede  haber muchos observadores
       Cada observador puede reaccionar de forma diferente
        a la misma notificación
       La fuente de datos (sujeto) debe estar tan desacoplada
        como sea posible del observador.
Estructura del patrón Observer
Colaboración en el patrón Observer
Qué lo hace un patrón?

    Un patrón debe:
       Resolver   un problema, i.e., debe ser útil
       Tener un contexto, i.e., describir cuando la solución puede
        ser utilizada
       Reutilizarse, i.e., debe ser relevante en otras situaciones

       Enseñar, i.e, debe proporcionar suficiente información
        para la elaboración de la solución
       Tener un nombre, para referirse a él de forma
        consistente.
Formato GoF de un Patrón de Diseño

Nombre del patrón y clasificación
Propósito qué hace el patrón
También conocido como
  otros nombres del patrón (opcional)
Motivación el problema de diseño
Aplicabilidad situaciones donde el patrón puede
  ser aplicado
Formato GoF de un Patrón de Diseño
Estructura
   Una representación gráfica de las clases dentro
   del patrón
Participantes
   Las clases y objetos participantes y sus
   responsabilidades
Colaboraciones
   De los participantes para llevar a cabo sus
   responsabilidades
Consecuencias
   trade-offs, preocupaciones, …
Formato GoF de un Patrón de
Diseño
Implementación
  Hints, Técnicas
Código de Ejemplo
  Fragmento de código que muestra una
  implementación posible
Usos conocidos
  Patrones que se encuentran en sistemas reales
Patrones relacionados
  Patrones estrechamente relacionados
Diseño con patrones
 Patrones de diseño GRASP
 Patrones de diseño GoF

 Enterprise patterns
Diseño con patrones
    Patrones de diseño GRASP
      General   Responsability Assignment Software
       Patterns.
      Patrones de Principios Generales para Asignar
       Responsabilidades
      “Describen los principios fundamentales de diseño
       de objetos y la asignación de responsabilidades,
       expresados como patrones”. Craig Larman.
      Constituyen la base del CÓMO se diseñará el
       sistema.
      Se aplican en los primeros momentos del diseño
Patrones GRASP
    Responsabilidades
       UML   define una responsabilidad como “un contrato u
        obligación de un clasificador”.
       Las responsabilidades están relacionadas con las obligaciones
        de un objeto en cuanto a su comportamiento.
       Básicamente, estas responsabilidades son de los siguientes
        dos tipos:
         Conocer:
             Conocer los datos privados encapsulados;
             Conocer los objetos relacionados
             Conocer las cosas que puede derivar o calcular.
         Hacer:
             Hacer algo él mismo, como crear un objeto o hacer un cálculo;
             Iniciar una acción en otros objetos;
             Controlar y coordinar actividades en otros objetos.
Patrones GRASP
    Patrones de diseño GRASP
       Experto   en información
       Creador
       Alta cohesión
       Bajo Acoplamiento

       Controlador
       Polimorfismo
       Fabricación Pura
       Indirección
       Variaciones Protegidas
Patrones GRASP
 Experto en información
 
       Problema:
        ¿ Cuál es el principio general para asignar responsabilidades
        a los objetos ?
       Solución :
        Asignar una responsabilidad al experto en información – la
        clase que tiene la información necesaria para realizar la
        responsabilidad.
        Un Experto es una clase que tiene toda la información
        necesaria para implementar una responsabilidad.
       Ventajas:
          Encapsulamiento de la información;
          Distribución del comportamiento del manejo de la
           información
Patrones GRASP

    Experto en información
Patrones GRASP
    Creador
       Problema:
        ¿Quién debería ser el responsable de la creación de una
        nueva instancia de alguna clase?
       Solución:
        B es un Creador de A si se asigna a la clase B la
        responsabilidad de crear una instancia de la clase A y si
        se cumple uno o más de los casos siguientes:
         B agrega objetos de A;
         B contiene objetos de A;
         B registra instancias de objetos de A;
         B utiliza más estrechamente objetos de A;
         B tiene los datos de inicialización que se pasarán a un objeto de A
          cuando sea creado( por lo tanto, B es un Experto con respecto a la
          creación de A)
Patrones GRASP
    Creador
       El patrón Creador guía la asignación de responsabilidades
        relacionadas con la creación de objetos (una tarea muy
        común). La intención básica del patrón es encontrar un
        creador que necesite conectarse al objeto creado en alguna
        situación.
       Ventajas:
          Bajo acoplamiento logrando mayor mantenibilidad y
           reutilización.
       Desventajas:
          Puede ser muy compleja la operación de creación de
           instancia. Se puede aplicar el patrón de diseño Factory.
Patrones GRASP
    Creador
Patrones GRASP
 Bajo Acoplamiento
 
      Problema:
       ¿Cómo soportar bajas dependencias, bajo impacto
       del cambio e incremento de la reutilización?
      Solución:
       Asignar una responsabilidad de manera que el
       acoplamiento permanezca bajo.
      El acoplamiento es una medida de la fuerza con
       que un elemento está conectado a, tiene
       conocimiento de, confía en, otros elementos.
       Un elemento con bajo (o débil) acoplamiento no
       depende demasiado de otros elementos.
Patrones GRASP
    Bajo Acoplamiento
      El patrón Bajo Acoplamiento es un principio a tener
       en mente en todas las decisiones de diseño. Es un
       principio evaluativo que aplica un diseñador
       mientras evalúa todas las decisiones de diseño.
      El Bajo Acoplamiento soporta clases más
       independientes
      Ventajas:
        No afectan los cambios en otros componentes;
        Fácil de entender de manera aislada;
        Conveniente para reutilizar
Patrones GRASP
    Bajo Acoplamiento
       ¿Quédiseño, basado en la asignación de
       responsabilidades, soporta Bajo Acoplamiento?
Patrones GRASP
    Bajo Acoplamiento
       ¿Qué  diseño, basado en la asignación de
        responsabilidades, soporta Bajo Acoplamiento?
       Desde el punto de vista puramente del acoplamiento, es
        preferible el segundo diseño porque mantiene el
        acoplamiento global más bajo.
       Este es un ejemplo en el que dos patrones- Bajo
        Acoplamiento y Creador – podrían sugerir soluciones
        diferentes.
Patrones GRASP
    Alta cohesion
      Problema:
       ¿Cómo mantener la complejidad manejable?
      Solución:
       Asignar una responsabilidad de manera que la
       cohesión permanezca alta.
      En cuanto al diseño de objetos, la cohesión
       (cohesión funcional) es una medida de la fuerza con
       la que se relacionan y del grado de focalización de
       las responsabilidades de un elemento.
Patrones GRASP
 Alta cohesion
 


      Una clase con baja cohesión hace muchas cosas no
      relacionadas, o hace demasiado trabajo:
       Clases difíciles de entender;
       Difíciles de reutilizar;
       Difíciles de mantener;
       Delicadas, constantemente afectadas por los
        cambios.
Patrones GRASP
 Alta cohesion
 
      Como    regla empírica, una clase con alta cohesión
      tiene:
       Un  número relativamente pequeño de métodos, con
        funcionalidad altamente relacionada,
       No realiza mucho trabajo.
       Colabora con otros objetos para compartir el esfuerzo si
        la tarea es extensa.

      No es conveniente recargar el trabajo o incluir
      funcionalidad en la clase que responde a los
      eventos del sistema.
Patrones GRASP
    Alta cohesion
      Ventajas:

        Incrementa   la claridad y facilita la comprensión
         del diseño;
        Simplifica el mantenimiento y las mejoras;
        Soporta a menudo bajo acoplamiento
        Incrementa la reutilización
Patrones GRASP
    Controlador
       Problema:
        ¿Quién debe ser el responsable de gestionar un evento de
        entrada del sistema?
       Solución:
        Asignar la responsabilidad de recibir o manejar un
        mensaje de evento del sistema a una clase que
        representa una de las siguientes operaciones:
         Representa  el sistema global, dispositivo o subsistema (Controlador
          de Fachada);
         Representa un escenario de caso de uso en el que tiene lugar el
          evento del sistema (controlador de Sesión de Caso de Uso).
             Utilizar la misma clase controlador para todos los eventos del sistema
              en el mismo escenario de caso de uso;
             Una sesión es una instancia de una conversación con un actor
Patrones GRASP
    Controlador
       Las clases “ventana”, “applet”, “vista”, etc., no están en la
        lista debido a que tales clases no deben abordar las tareas
        asociadas con los eventos del sistema, sino que, reciben
        estos eventos y los delegan a un controlador.
       Evento del sistema de entrada
          Esun evento generado por un actor externo. Se asocian con
          operaciones del sistema – operaciones del sistema como respuesta a
          los eventos del sistema -, tal como se relacionan los mensajes y los
          métodos.
       Un   Controlador
          Esun objeto que no pertenece a la interfaz de usuario, responsable
          de recibir o manejar un evento del sistema. Un Controlador define
          los métodos para las operaciones del sistema.
Patrones GRASP
Patrones GRASP
    Controlador
      Normalmente    un controlador delega en otros
       objetos el trabajo que se necesita hacer; coordina
       o controla la actividad. No realiza mucho trabajo
       por sí mismo.
      Tipos de controladores:
        Controlador de Fachada:
           Representa    al sistema global, dispositivo o
            subsistema.
        Controlador   de casos de uso:
           Construcción  artificial para dar soporte al sistema.
            Se utilizan cuando los Controladores de Fachada
            conduce a diseños con baja cohesión o alto
            acoplamiento.
Patrones GRASP

    Controlador
      Ventajas:
        Aumenta  el potencial para reutilizar las interfaces;
        Razonamiento sobre el estado (secuencia de pasos) de los
         casos de uso.
Patrones GRASP
    Controlador

Mais conteúdo relacionado

Mais procurados

Agentes Inteligentes
Agentes  InteligentesAgentes  Inteligentes
Agentes Inteligentesguestcd9e5e
 
Ejemplos de proyectos al modelo en cascada
Ejemplos de proyectos  al modelo en cascadaEjemplos de proyectos  al modelo en cascada
Ejemplos de proyectos al modelo en cascadaaics-1986-13-saraguro
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetoshector_h30
 
Unidad 9 Patrones De DiseñO
Unidad 9 Patrones De DiseñOUnidad 9 Patrones De DiseñO
Unidad 9 Patrones De DiseñOSergio Sanchez
 
Cuestionario uml y objetos zuli
Cuestionario uml y objetos zuliCuestionario uml y objetos zuli
Cuestionario uml y objetos zuliyuliethces
 
Diagrama de actividades
Diagrama de actividadesDiagrama de actividades
Diagrama de actividadesElvisAR
 
Diagramas de colaboracion
Diagramas de colaboracionDiagramas de colaboracion
Diagramas de colaboraciond-draem
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relaciónjosecuartas
 
Analisis y diseño de sistemas kendall y kendall, preguntas de repaso
Analisis y diseño de sistemas kendall y kendall,  preguntas de repasoAnalisis y diseño de sistemas kendall y kendall,  preguntas de repaso
Analisis y diseño de sistemas kendall y kendall, preguntas de repasoAlejandro Rivera Santander
 
Diagramas Analisis
Diagramas AnalisisDiagramas Analisis
Diagramas Analisisinnovalabcun
 
UML. un analisis comparativo para la diagramación de software
UML.  un analisis comparativo para la diagramación de softwareUML.  un analisis comparativo para la diagramación de software
UML. un analisis comparativo para la diagramación de softwareYaskelly Yedra
 
Qué es uml, PARA QUE SIRVE, PASOS
Qué es uml, PARA QUE SIRVE, PASOSQué es uml, PARA QUE SIRVE, PASOS
Qué es uml, PARA QUE SIRVE, PASOSmyle22
 
Unidad 3 Modelo De Negocio
Unidad 3 Modelo De NegocioUnidad 3 Modelo De Negocio
Unidad 3 Modelo De NegocioSergio Sanchez
 

Mais procurados (20)

Diagrama de Componentes
Diagrama de ComponentesDiagrama de Componentes
Diagrama de Componentes
 
Agentes Inteligentes
Agentes  InteligentesAgentes  Inteligentes
Agentes Inteligentes
 
Ejemplos de proyectos al modelo en cascada
Ejemplos de proyectos  al modelo en cascadaEjemplos de proyectos  al modelo en cascada
Ejemplos de proyectos al modelo en cascada
 
Patrones GRASP
Patrones GRASPPatrones GRASP
Patrones GRASP
 
Patrones GRASP
Patrones GRASPPatrones GRASP
Patrones GRASP
 
Prueba de aplicaciones
Prueba de aplicacionesPrueba de aplicaciones
Prueba de aplicaciones
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
 
Unidad 9 Patrones De DiseñO
Unidad 9 Patrones De DiseñOUnidad 9 Patrones De DiseñO
Unidad 9 Patrones De DiseñO
 
Cuestionario uml y objetos zuli
Cuestionario uml y objetos zuliCuestionario uml y objetos zuli
Cuestionario uml y objetos zuli
 
Cuestionario uml
Cuestionario umlCuestionario uml
Cuestionario uml
 
Bases de datos orientadas a objetos
Bases de datos orientadas a objetosBases de datos orientadas a objetos
Bases de datos orientadas a objetos
 
Diagrama de actividades
Diagrama de actividadesDiagrama de actividades
Diagrama de actividades
 
Diagramas de colaboracion
Diagramas de colaboracionDiagramas de colaboracion
Diagramas de colaboracion
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relación
 
Analisis y diseño de sistemas kendall y kendall, preguntas de repaso
Analisis y diseño de sistemas kendall y kendall,  preguntas de repasoAnalisis y diseño de sistemas kendall y kendall,  preguntas de repaso
Analisis y diseño de sistemas kendall y kendall, preguntas de repaso
 
Diagramas Analisis
Diagramas AnalisisDiagramas Analisis
Diagramas Analisis
 
UML. un analisis comparativo para la diagramación de software
UML.  un analisis comparativo para la diagramación de softwareUML.  un analisis comparativo para la diagramación de software
UML. un analisis comparativo para la diagramación de software
 
Prueba software orientado a objetos
Prueba software orientado a objetosPrueba software orientado a objetos
Prueba software orientado a objetos
 
Qué es uml, PARA QUE SIRVE, PASOS
Qué es uml, PARA QUE SIRVE, PASOSQué es uml, PARA QUE SIRVE, PASOS
Qué es uml, PARA QUE SIRVE, PASOS
 
Unidad 3 Modelo De Negocio
Unidad 3 Modelo De NegocioUnidad 3 Modelo De Negocio
Unidad 3 Modelo De Negocio
 

Semelhante a Diseño de patrones

Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Ozzy Bull
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ikaolong
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ikaolong
 
2.4 DISEÑO BASADO EN PATRONES.pptx
2.4 DISEÑO BASADO EN PATRONES.pptx2.4 DISEÑO BASADO EN PATRONES.pptx
2.4 DISEÑO BASADO EN PATRONES.pptxGonzaloMartinezSilve
 
12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptxGonzaloMartinezSilve
 
Taller campus party .net
Taller campus party .netTaller campus party .net
Taller campus party .netcampus party
 
Taller campus party
Taller campus partyTaller campus party
Taller campus partycampus party
 
Conceptos y definiciones de poo. alumno.juan manuel osorio baruch
Conceptos y definiciones de poo. alumno.juan manuel osorio baruchConceptos y definiciones de poo. alumno.juan manuel osorio baruch
Conceptos y definiciones de poo. alumno.juan manuel osorio baruchJuan Osorio Baruch
 
Introduccion a la poo
Introduccion a la pooIntroduccion a la poo
Introduccion a la pooXavii Torres
 
DiseñO De Sitemas
DiseñO De SitemasDiseñO De Sitemas
DiseñO De Sitemaslincoln25
 
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)Avanet
 
Introduccion a la POO
Introduccion a la POOIntroduccion a la POO
Introduccion a la POOLibertad25
 
Patrones de Diseño en e-learning
Patrones de Diseño en e-learningPatrones de Diseño en e-learning
Patrones de Diseño en e-learningJosé Miguel Ruiz
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetosyoiner santiago
 
Semanas01y02
Semanas01y02Semanas01y02
Semanas01y02luisortiz
 

Semelhante a Diseño de patrones (20)

Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
2.4 DISEÑO BASADO EN PATRONES.pptx
2.4 DISEÑO BASADO EN PATRONES.pptx2.4 DISEÑO BASADO EN PATRONES.pptx
2.4 DISEÑO BASADO EN PATRONES.pptx
 
Introducción Patrones de Diseño
Introducción Patrones de DiseñoIntroducción Patrones de Diseño
Introducción Patrones de Diseño
 
Clase ii patrones de diseño
Clase ii patrones de diseñoClase ii patrones de diseño
Clase ii patrones de diseño
 
12.diseño basado en patrones
12.diseño basado en patrones12.diseño basado en patrones
12.diseño basado en patrones
 
12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx
 
Taller campus party .net
Taller campus party .netTaller campus party .net
Taller campus party .net
 
Taller campus party
Taller campus partyTaller campus party
Taller campus party
 
Conceptos y definiciones de poo. alumno.juan manuel osorio baruch
Conceptos y definiciones de poo. alumno.juan manuel osorio baruchConceptos y definiciones de poo. alumno.juan manuel osorio baruch
Conceptos y definiciones de poo. alumno.juan manuel osorio baruch
 
Introduccion a la poo
Introduccion a la pooIntroduccion a la poo
Introduccion a la poo
 
DiseñO De Sitemas
DiseñO De SitemasDiseñO De Sitemas
DiseñO De Sitemas
 
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
 
Introduccion a la POO
Introduccion a la POOIntroduccion a la POO
Introduccion a la POO
 
Patrones de Diseño en e-learning
Patrones de Diseño en e-learningPatrones de Diseño en e-learning
Patrones de Diseño en e-learning
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
 
PRESENTACION
PRESENTACIONPRESENTACION
PRESENTACION
 
Semanas01y02
Semanas01y02Semanas01y02
Semanas01y02
 
Semanas01y02
Semanas01y02Semanas01y02
Semanas01y02
 

Último

Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 

Último (11)

Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 

Diseño de patrones

  • 1. CLASE 9: DISEÑO CON PATRONES Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez
  • 2. Diseño de Objetos   Identificar requerimientos, crear un modelo del dominio, agregar métodos a las clases de software, definir mensajes para cumplir los requerimientos…   Simple?!?   Quémétodos pertenecen a cada clase?   Como asignamos responsabilidades a las clases   La herramienta crítica de diseño de software es una mente bien educada en los principios de diseño y en patrones de diseño
  • 3. Diseño de Objetos: entradas   PDV entradas al proyecto:  Texto del Caso de Uso Procesar Venta  Definir el comportamiento  Diagrama de Secuencia del Sistema  Identificar los mensajes del sistema  Los contratos de las operaciones  Establecer los eventos a diseñar y detallar las post- condiciones a satisfacer
  • 4. Diseño de Objetos: entradas   PDV entradas al proyecto:  Especificaciones adicionales  Define objetivos no-funcionales  Glosario  Formato de los datos, datos relacionados con la interfaz de usuario y la base de datos.  Modelo del Dominio  Esquema inicial de los objetos de software en la capa del dominio de la arquitectura del software
  • 5. Diseño Dirigido por Responsabilidades   Una responsabilidad es un contrato u obligación de una clase.   Qué debe “conocer” una clase? [responsabilidad de conocimiento]   Datos encapsulados privados   Objetos relacionados   Cosas que puede derivar o calcular   Qué debe “hacer” una clase? [responsabilidad de acción]   Realizar una acción (crear un objeto, realizar un cálculo)   Iniciar una acción en otros objetos   Controlar/coordinar acciones en otros objetos   Las responsabilidades se le asignan a los objetos durante el diseño de objetos
  • 6. Ejemplos de Responsabilidades   “Una venta es responsable de crear una VentaLineaDeProducto” (hacer)   “Una venta es responsable de conoces su total” (conocer)   Las responsabilidades de conocimiento están relacionadas con los atributos y las asociaciones en el modelo del dominio.   Las responsabilidades de acción pueden ser expresadas en diferentes granularidades.   Las responsabilidades de acción son implementadas mediante métodos.
  • 7. Modelo del Dominio y Responsabilidades   El modelo del Dominio ilustra los atributos y las asociaciones => inspira las responsabilidades de “conocimiento”   Los métodos cumplen las responsabilidades  Solo(dentro del objeto mismo)  Mediante la colaboración con otros objetos y métodos
  • 8. Patrones de Aprendizaje   Las soluciones exitosas en muchas áreas del esfuerzo humano tienen sus raices en patrones.   Un objetivo importante de la educación es transmitir patrones de aprendizaje de generación en generación.   Ejemplos: Patrones usados para aprender ajedrez   Aprende a desarrollar buen software es parecido a aprender a jugar bien ajedrez.
  • 9. Qué es un patrón ? •  Cada Patrón describe un problema que ocurre una y otra vez en nuestro ambiente, y luego describe el núcleo de la solución a ese problema, de forma tal que esa solución puede ser usada un millón de veces, sin hacerlo de la misma manera dos veces. C. Alexander, “The Timeless Way of Building”, 1979
  • 10. Visión de patrones de Alexander   Regla de tres partes que expresa una relación entre cierto contexto, un problema y una solución.   Elemento del mundo – una relación entre   un contexto   un sistema de fuerzas que ocurren repetidamente en el contexto   una configuración espacial que permite que las fuerzas se resuelvan ellas mismas
  • 11. Visión de patrones de Alexander   Elemento de lenguaje – una instrucción   Describe como la configuración espacial puede se usada repetitivamente.   para resolver el sistema de fuerzas dado   en cualquier lugar en que el contexto la hace relevante   La dualidad “objeto – proceso”   Un objeto que ocurre en el mundo   Un proceso (regla) que genera ese objeto
  • 12. Por qué usar patrones ?  “Los patrones te ayudan a aprender de los éxitos de otros en lugar de aprender de tus errores” Mark Johnson (citado por B. Eckel)
  • 13. Por qué usar patrones ?   Una capa de abstracción adicional  Separar las cosas que cambian de las cosas que permanecen iguales  Extraer los factores comunes entre una familia de problemas similares   Una forma inteligente y profunda de resolver una clase particular de problemas  Soluciones más generales y flexibles
  • 14. Patrones de diseño   Los patrones de diseño representan soluciones a problemas que surgen cuando se desarrolla software en un contexto particular.  Patrones= par Problema/Solución dentro de un Contexto
  • 15. Patrones de Diseño   Capturan la estructura estática y dinámica, y la colaboración entre los participantes claves del diseño del software   participante clave – abstracción principal que ocurre en un problema de diseño   Útil para articular el cómo y el por qué resolver las fuerzas no funcionales.   Facilita la reutilización de arquitecturas y diseños de software exitoso
  • 16. Ejemplo: Vistas de datos, problema de consistencia
  • 17. El patrón Observer   Propósito   Definir una dependencia de uno-a-muchos entre objetos de manera que cuando un objeto cambia de estado, todas sus dependencias son notificadas y actualizadas automáticamente.   Fuerzas   Puede haber muchos observadores   Cada observador puede reaccionar de forma diferente a la misma notificación   La fuente de datos (sujeto) debe estar tan desacoplada como sea posible del observador.
  • 19. Colaboración en el patrón Observer
  • 20. Qué lo hace un patrón?   Un patrón debe:   Resolver un problema, i.e., debe ser útil   Tener un contexto, i.e., describir cuando la solución puede ser utilizada   Reutilizarse, i.e., debe ser relevante en otras situaciones   Enseñar, i.e, debe proporcionar suficiente información para la elaboración de la solución   Tener un nombre, para referirse a él de forma consistente.
  • 21. Formato GoF de un Patrón de Diseño Nombre del patrón y clasificación Propósito qué hace el patrón También conocido como otros nombres del patrón (opcional) Motivación el problema de diseño Aplicabilidad situaciones donde el patrón puede ser aplicado
  • 22. Formato GoF de un Patrón de Diseño Estructura Una representación gráfica de las clases dentro del patrón Participantes Las clases y objetos participantes y sus responsabilidades Colaboraciones De los participantes para llevar a cabo sus responsabilidades Consecuencias trade-offs, preocupaciones, …
  • 23. Formato GoF de un Patrón de Diseño Implementación Hints, Técnicas Código de Ejemplo Fragmento de código que muestra una implementación posible Usos conocidos Patrones que se encuentran en sistemas reales Patrones relacionados Patrones estrechamente relacionados
  • 24. Diseño con patrones  Patrones de diseño GRASP  Patrones de diseño GoF  Enterprise patterns
  • 25. Diseño con patrones   Patrones de diseño GRASP  General Responsability Assignment Software Patterns.  Patrones de Principios Generales para Asignar Responsabilidades  “Describen los principios fundamentales de diseño de objetos y la asignación de responsabilidades, expresados como patrones”. Craig Larman.  Constituyen la base del CÓMO se diseñará el sistema.  Se aplican en los primeros momentos del diseño
  • 26. Patrones GRASP   Responsabilidades   UML define una responsabilidad como “un contrato u obligación de un clasificador”.   Las responsabilidades están relacionadas con las obligaciones de un objeto en cuanto a su comportamiento.   Básicamente, estas responsabilidades son de los siguientes dos tipos:   Conocer:   Conocer los datos privados encapsulados;   Conocer los objetos relacionados   Conocer las cosas que puede derivar o calcular.   Hacer:   Hacer algo él mismo, como crear un objeto o hacer un cálculo;   Iniciar una acción en otros objetos;   Controlar y coordinar actividades en otros objetos.
  • 27. Patrones GRASP   Patrones de diseño GRASP   Experto en información   Creador   Alta cohesión   Bajo Acoplamiento   Controlador   Polimorfismo   Fabricación Pura   Indirección   Variaciones Protegidas
  • 28. Patrones GRASP Experto en información     Problema: ¿ Cuál es el principio general para asignar responsabilidades a los objetos ?   Solución : Asignar una responsabilidad al experto en información – la clase que tiene la información necesaria para realizar la responsabilidad. Un Experto es una clase que tiene toda la información necesaria para implementar una responsabilidad.   Ventajas:  Encapsulamiento de la información;  Distribución del comportamiento del manejo de la información
  • 29. Patrones GRASP   Experto en información
  • 30. Patrones GRASP   Creador   Problema: ¿Quién debería ser el responsable de la creación de una nueva instancia de alguna clase?   Solución: B es un Creador de A si se asigna a la clase B la responsabilidad de crear una instancia de la clase A y si se cumple uno o más de los casos siguientes:   B agrega objetos de A;   B contiene objetos de A;   B registra instancias de objetos de A;   B utiliza más estrechamente objetos de A;   B tiene los datos de inicialización que se pasarán a un objeto de A cuando sea creado( por lo tanto, B es un Experto con respecto a la creación de A)
  • 31. Patrones GRASP   Creador   El patrón Creador guía la asignación de responsabilidades relacionadas con la creación de objetos (una tarea muy común). La intención básica del patrón es encontrar un creador que necesite conectarse al objeto creado en alguna situación.   Ventajas:  Bajo acoplamiento logrando mayor mantenibilidad y reutilización.   Desventajas:  Puede ser muy compleja la operación de creación de instancia. Se puede aplicar el patrón de diseño Factory.
  • 33. Patrones GRASP Bajo Acoplamiento    Problema: ¿Cómo soportar bajas dependencias, bajo impacto del cambio e incremento de la reutilización?  Solución: Asignar una responsabilidad de manera que el acoplamiento permanezca bajo.  El acoplamiento es una medida de la fuerza con que un elemento está conectado a, tiene conocimiento de, confía en, otros elementos. Un elemento con bajo (o débil) acoplamiento no depende demasiado de otros elementos.
  • 34. Patrones GRASP   Bajo Acoplamiento  El patrón Bajo Acoplamiento es un principio a tener en mente en todas las decisiones de diseño. Es un principio evaluativo que aplica un diseñador mientras evalúa todas las decisiones de diseño.  El Bajo Acoplamiento soporta clases más independientes  Ventajas:  No afectan los cambios en otros componentes;  Fácil de entender de manera aislada;  Conveniente para reutilizar
  • 35. Patrones GRASP   Bajo Acoplamiento   ¿Quédiseño, basado en la asignación de responsabilidades, soporta Bajo Acoplamiento?
  • 36. Patrones GRASP   Bajo Acoplamiento   ¿Qué diseño, basado en la asignación de responsabilidades, soporta Bajo Acoplamiento?   Desde el punto de vista puramente del acoplamiento, es preferible el segundo diseño porque mantiene el acoplamiento global más bajo.   Este es un ejemplo en el que dos patrones- Bajo Acoplamiento y Creador – podrían sugerir soluciones diferentes.
  • 37. Patrones GRASP   Alta cohesion  Problema: ¿Cómo mantener la complejidad manejable?  Solución: Asignar una responsabilidad de manera que la cohesión permanezca alta.  En cuanto al diseño de objetos, la cohesión (cohesión funcional) es una medida de la fuerza con la que se relacionan y del grado de focalización de las responsabilidades de un elemento.
  • 38. Patrones GRASP Alta cohesion    Una clase con baja cohesión hace muchas cosas no relacionadas, o hace demasiado trabajo:  Clases difíciles de entender;  Difíciles de reutilizar;  Difíciles de mantener;  Delicadas, constantemente afectadas por los cambios.
  • 39. Patrones GRASP Alta cohesion    Como regla empírica, una clase con alta cohesión tiene:  Un número relativamente pequeño de métodos, con funcionalidad altamente relacionada,  No realiza mucho trabajo.  Colabora con otros objetos para compartir el esfuerzo si la tarea es extensa.  No es conveniente recargar el trabajo o incluir funcionalidad en la clase que responde a los eventos del sistema.
  • 40. Patrones GRASP   Alta cohesion  Ventajas:  Incrementa la claridad y facilita la comprensión del diseño;  Simplifica el mantenimiento y las mejoras;  Soporta a menudo bajo acoplamiento  Incrementa la reutilización
  • 41. Patrones GRASP   Controlador   Problema: ¿Quién debe ser el responsable de gestionar un evento de entrada del sistema?   Solución: Asignar la responsabilidad de recibir o manejar un mensaje de evento del sistema a una clase que representa una de las siguientes operaciones:   Representa el sistema global, dispositivo o subsistema (Controlador de Fachada);   Representa un escenario de caso de uso en el que tiene lugar el evento del sistema (controlador de Sesión de Caso de Uso).   Utilizar la misma clase controlador para todos los eventos del sistema en el mismo escenario de caso de uso;   Una sesión es una instancia de una conversación con un actor
  • 42. Patrones GRASP   Controlador   Las clases “ventana”, “applet”, “vista”, etc., no están en la lista debido a que tales clases no deben abordar las tareas asociadas con los eventos del sistema, sino que, reciben estos eventos y los delegan a un controlador.   Evento del sistema de entrada   Esun evento generado por un actor externo. Se asocian con operaciones del sistema – operaciones del sistema como respuesta a los eventos del sistema -, tal como se relacionan los mensajes y los métodos.   Un Controlador   Esun objeto que no pertenece a la interfaz de usuario, responsable de recibir o manejar un evento del sistema. Un Controlador define los métodos para las operaciones del sistema.
  • 44. Patrones GRASP   Controlador  Normalmente un controlador delega en otros objetos el trabajo que se necesita hacer; coordina o controla la actividad. No realiza mucho trabajo por sí mismo.  Tipos de controladores:  Controlador de Fachada:  Representa al sistema global, dispositivo o subsistema.  Controlador de casos de uso:  Construcción artificial para dar soporte al sistema. Se utilizan cuando los Controladores de Fachada conduce a diseños con baja cohesión o alto acoplamiento.
  • 45. Patrones GRASP   Controlador  Ventajas:  Aumenta el potencial para reutilizar las interfaces;  Razonamiento sobre el estado (secuencia de pasos) de los casos de uso.
  • 46. Patrones GRASP   Controlador