SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

UML: Diagrama de caso de uso
UML: Diagrama de caso de usoUML: Diagrama de caso de uso
UML: Diagrama de caso de usoElvin Hernandez
 
Diagrama de interaccion(secuencia y colaboracion)
Diagrama de interaccion(secuencia y colaboracion)Diagrama de interaccion(secuencia y colaboracion)
Diagrama de interaccion(secuencia y colaboracion)marianela0393
 
UML - Casos de Uso y Diagramas de Clase
UML - Casos de Uso y Diagramas de ClaseUML - Casos de Uso y Diagramas de Clase
UML - Casos de Uso y Diagramas de ClaseGuillermo Díaz
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareRoberth Loaiza
 
Diagramas clases presentacion
Diagramas clases presentacionDiagramas clases presentacion
Diagramas clases presentacionjosebrandon24
 
Diagramas de implementacion
Diagramas de implementacionDiagramas de implementacion
Diagramas de implementacionZonickX
 
Indagación de los requerimientos
Indagación de los requerimientosIndagación de los requerimientos
Indagación de los requerimientosUCATEBA
 
Metodologia del rup
Metodologia del rupMetodologia del rup
Metodologia del ruportizrichard
 
Patrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. graspPatrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. graspJuan Pablo Bustos Thames
 
Plan de Pruebas
Plan de PruebasPlan de Pruebas
Plan de Pruebaschoselin
 

La actualidad más candente (20)

DIAGRAMAS DE CLASE
DIAGRAMAS DE CLASEDIAGRAMAS DE CLASE
DIAGRAMAS DE CLASE
 
UML: Diagrama de caso de uso
UML: Diagrama de caso de usoUML: Diagrama de caso de uso
UML: Diagrama de caso de uso
 
Diagrama de interaccion(secuencia y colaboracion)
Diagrama de interaccion(secuencia y colaboracion)Diagrama de interaccion(secuencia y colaboracion)
Diagrama de interaccion(secuencia y colaboracion)
 
Diagramas de comportamientos
Diagramas de comportamientosDiagramas de comportamientos
Diagramas de comportamientos
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
 
UML - Casos de Uso y Diagramas de Clase
UML - Casos de Uso y Diagramas de ClaseUML - Casos de Uso y Diagramas de Clase
UML - Casos de Uso y Diagramas de Clase
 
UML: CASOS DE USO
UML: CASOS DE USOUML: CASOS DE USO
UML: CASOS DE USO
 
Diseño orientado a objeto
Diseño orientado a objetoDiseño orientado a objeto
Diseño orientado a objeto
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de Software
 
Uml clase 04_uml_clases
Uml clase 04_uml_clasesUml clase 04_uml_clases
Uml clase 04_uml_clases
 
Diagramas clases presentacion
Diagramas clases presentacionDiagramas clases presentacion
Diagramas clases presentacion
 
Casos De Uso
Casos De UsoCasos De Uso
Casos De Uso
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
Diagramas de implementacion
Diagramas de implementacionDiagramas de implementacion
Diagramas de implementacion
 
Indagación de los requerimientos
Indagación de los requerimientosIndagación de los requerimientos
Indagación de los requerimientos
 
Metodologia del rup
Metodologia del rupMetodologia del rup
Metodologia del rup
 
Patrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. graspPatrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. grasp
 
Abstract Factory
Abstract FactoryAbstract Factory
Abstract Factory
 
Ingenieria de software - Unidad 4 seguridad
Ingenieria de software - Unidad 4 seguridadIngenieria de software - Unidad 4 seguridad
Ingenieria de software - Unidad 4 seguridad
 
Plan de Pruebas
Plan de PruebasPlan de Pruebas
Plan de Pruebas
 

Similar 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
 

Similar 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

BLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS..docx
BLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS..docxBLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS..docx
BLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS..docxhellendiaz12
 
TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888ElianaValencia28
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
Trabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalTrabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalEmanuelCastro64
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaYeimys Ch
 
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfTENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfJoseAlejandroPerezBa
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
tecno 2024.pdf sara mineiro palacio 10-6
tecno 2024.pdf sara mineiro palacio 10-6tecno 2024.pdf sara mineiro palacio 10-6
tecno 2024.pdf sara mineiro palacio 10-6SaraMineiropalacio
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskTrabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskbydaniela5
 
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdftecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdflauralizcano0319
 
Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024anasofiarodriguezcru
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxCarolina Bujaico
 
Tecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaTecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaElizabethLpezSoto
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 

Último (18)

BLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS..docx
BLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS..docxBLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS..docx
BLOG, EXCEL AVANZADO, MÉTODOS ESTADÍSTICOS..docx
 
TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
Trabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalTrabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamental
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
 
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfTENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
tecno 2024.pdf sara mineiro palacio 10-6
tecno 2024.pdf sara mineiro palacio 10-6tecno 2024.pdf sara mineiro palacio 10-6
tecno 2024.pdf sara mineiro palacio 10-6
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskTrabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
 
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdftecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
 
Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptx
 
Tecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaTecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestría
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 

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