SlideShare une entreprise Scribd logo
1  sur  35
Metodologías de Análisis y Diseño Unidad VII Diseño O.O – Diagramas de Interacción “ Patrones de Diseño” Sergio Sánchez Rios. Ingeniero en Informática – Licenciado en Informática Docente Jornada Parcial Universidad Viña del Mar
Diagramas de Interacción GRASP – Patrones de asignación de Responsabilidades Patrones Los diseñadores expertos en orientación a objetos, van formando un amplio repertorio de principios generales que los guían  al crear software. Estos principios son llamados  Patrones. Los patrones se codifican en un formato estructurado que describe el problema y su solución . Cada patrón tiene un nombre. Los patrones no se proponen descubrir ni expresar principios nuevos en Ingeniería de Software. Todo lo contrario, intentan codificar el conocimiento y los principios ya existentes: cuanto más generalizados y usados mejor.
Diagramas de Interacción Patrones En consecuencia, los patrones GRASP no establecen nuevas ideas: son una codificación de principios básicos ampliamente utilizados. Para un experto en objetos, los patrones GRASP – por su idea y por su nombre – parecerán muy elementales y familiares. ¡Eso es lo importante!.  GRASP – Patrones de asignación de Responsabilidades
Diagramas de Interacción ,[object Object],[object Object],[object Object],[object Object],[object Object],GRASP – Patrones de asignación de Responsabilidades
Diagramas de Interacción GRASP Es importante  entender y ser capaz de aplicar estos principios  durante la creación de los diagramas de interacción porque un desarrollador de software con poca experiencia en la tecnología de objetos necesita dominar estos principios tan rápido como sea posible; constituyen la base de cómo diseñara el sistema. GRASP es un acrónimo de  G eneral  R esponsibility  A ssignment  S oftware  P atterns (patrones generales de software para asignar responsabilidades). GRASP – Patrones de asignación de Responsabilidades
Diagramas de Interacción El patrón  Experto  [Larman 98] Principales Patrones - GRASP Experto Nombre Asignar una responsabilidad al experto en información: la clase que cuenta con la información necesaria para cumplir la responsabilidad. Solución ¿Cuál es el principio fundamental en virtud del cual se asignan las responsabilidades en el diseño O.O? Un modelo de clases puede definir n clases de software, y una aplicación tal vez requiera el cumplimiento de n responsabilidades. Durante el Diseño O.O, cuando se definen las interacciones entre los objetos se toman decisiones sobre la asignación de responsabilidades a clases. Si se hacen en forma adecuada, los sistemas tienden a ser más fáciles de entender, mantener y ampliar, y nos presentan la oportunidad de reutilizar componentes en futuras aplicaciones. Problema
Diagramas de Interacción El patrón  Experto  [Larman 98] Principales Patrones - GRASP En la aplicación del punto de venta, alguna clase necesita conocer el gran total de venta. Ejemplo -Se  conserva el encapsulamiento , ya que los objetos se valen de su propia información para hacer lo que se les pide. Esto provee un  bajo nivel acoplamiento , lo que favorece al hecho de tener sistemas mas robustos y fáciles de mantener. -El comportamiento se distribuye entre las clases que cuentan con la información requerida, lo que ayuda a definir  “clases sencillas” y más cohesivas , que son mas faciles de comprender y mantener.  Beneficios
Diagramas de Interacción El patrón  Experto  [Larman 98] (Ejemplo) Para el ejemplo del Punto de Venta. ¿Quién es el responsable de conocer el gran total de la venta?. Desde el punto de vista del patrón  Experto ,  deberíamos buscar la clase de objetos que posee la información necesaria para calcular el total. Por ejemplo: Principales Patrones - GRASP
Diagramas de Interacción El patrón  Experto  [Larman 98] (Ejemplo) ¿Qué información hace falta para calcular el gran total?. Hay que conocer todas las instancias  VentaLineadeProducto  de una venta, y la suma de sus subtotales, y esto lo conoce únicamente la instancia  Venta.  Por tanto, desde el punto de vista del Experto,  Venta  es la clase de objetos correcta para asumir esta responsabilidad.  Venta es el experto de información. Principales Patrones - GRASP
Diagramas de Interacción El patrón  Experto  [Larman 98] (Ejemplo) Todavía no terminamos. ¿Qué información hace falta para determinar el subtotal de la línea de productos?. Se necesitan  VentasLineasProducto.cantidad  y  EspecificacióndeProductos.precio .  VentasLineaProducto  conoce su cantidad y su correspondiente  EspecificaciondeProducto . Por tanto, desde la perspectiva patrón experto,  VentasLineaProducto  debería calcular el subtotal  Principales Patrones - GRASP
Diagramas de Interacción El patrón  Experto  [Larman 98] (Ejemplo) VentasLineaProducto  no puede cumplir la responsabilidad de conocer y dar el subtotal, si no conoce el precio del producto.  EspecificaciondeProducto  es un Experto de información para contestar su precio. Por tanto, habrá que enviarle un mensaje preguntándole el precio.  Principales Patrones - GRASP
Diagramas de Interacción El patrón  Experto  [Larman 98] (Ejemplo) En conclusión, para cumplir con la responsabilidad de conocer y dar el total de venta, se asignaron responsabilidades a tres clases de objetos: El cumplimiento de una responsabilidad requiere a menudo información distribuida en varias clases de objetos. (“Expertos Parciales” que colaboran en la tarea). Principales Patrones - GRASP Conoce el precio del producto EspecificacióndeProducto Conoce subtotal de la línea de producto VentasLineadeProducto Conocer Total de la Venta Venta Responsabilidad Clase
Diagramas de Interacción El patrón  Creador  [Larman 98] El patrón Creador guía la asignación de responsabilidades relacionadas con la creación de objetos  tarea muy frecuente  en los sistemas orientados a objetos. El objetivo de este patrón es encontrar  un creador que debemos conectar con el objeto producido en cualquier evento. Principales Patrones - GRASP
Diagramas de Interacción El patrón  Creador  [Larman 98] Principales Patrones - GRASP Creador Nombre Asignar a la clase B la responsabilidad de crear una instancia de la clase A en uno de los siguientes casos: Solución ¿Quién debería ser responsable de crear una nueva instancia de alguna clase? La creación de objetos es una de las actividades más frecuentes en un sistema orientado a objetos. En consecuencia, conviene contar con un principio general para asignar las responsabilidades concernientes a ella. El diseño, bien asignado, puede apoyar un bajo acoplamiento, una mayor claridad, el encapsulamiento y la reutilización.  Problema
Diagramas de Interacción El patrón  Creador  [Larman 98] Principales Patrones - GRASP ¿Quién debería encargarse una instancia de VentasLineadeProductos? Ejemplo ,[object Object],[object Object],[object Object],[object Object],[object Object],Solución Se brinda apoyo al bajo acoplamiento, lo cual supone menos dependencias respecto al mantenimiento y mejores oportunidades de reutilización  Beneficios
Diagramas de Interacción El patrón  Creador  [Larman 98] (Ejemplo) En la aplicación del punto de venta ¿quién debería encargarse de crear una instancia de VentasLineadeProducto?. Desde el punto de vista del patrón Creador, deberíamos buscar una clase que agregue, contenga, y realice otras operaciones sobre este tipo de instancias. Una Venta (en realidad, agrega) muchos objetos VentasLIneadeProducto. Es  por esto que Venta es la clase idónea para asumir la responsabilidad de crear las instancias de VentaLineadeProducto. Esta asignación de responsabilidad requiere definir en Venta un método para hacerLineadeProducto. Principales Patrones - GRASP
Diagramas de Interacción El patrón  Creador  [Larman 98] (Ejemplo) Principales Patrones - GRASP
Diagramas de Interacción El patrón  Controlador Principales Patrones - GRASP Controlador Nombre ¿Quién debería encargarse de atender un nuevo evento del sistema? Un  evento del sistema  es un evento de alto nivel generado por un actor externo. Es un evento de entrada externa. Se asocia a operaciones del sistema: las que se emiten en respuesta a los eventos del sistema. Por ejemplo: cuando un cajero que usa una terminal de punto de venta oprime el botón “terminar Venta”, está generando un evento sistematico que indica que la “venta a terminado”. Un  controlador  es un objeto de interfaz que se encarga de manejar un evento del sistema. Define además el método de su operación. Problema
Diagramas de Interacción El patrón  Controlador Principales Patrones - GRASP En la aplicación del punto de venta se dan varias operaciones del sistema, como terminarVenta(), pasarProducto(), efectuarPago(). Ejemplo Asignar la responsabilidad del manejo de mensajes de los eventos del sistema a una clase que represente alguna de las siguientes opciones: -El “sistema” global (controlador de fachada) -La empresa u organización global (controlador de fachada) -Algo en el mundo real que es activo (por ejemplo el rol de una persona) y que puede participar en la tarea (controlador de tareas). -Un manejador artificial de todos los eventos del sistema de un caso de uso (controlador de casos de uso). Utilice la misma clase controlador con todos los eventos del sistema en el mismo caso de uso. Solución Garantiza que la empresa o los procesos de dominio sean manejados por la capa de los objetos del dominio y no por la interfaz. Beneficios
El patrón  Controlador  (Ejemplo) Durante el análisis del comportamiento del sistema, sus operaciones son asignada al tipo de Sistema, para indicar que son operaciones del Sistema.  Pero esto no significa que una clase llamada Sistema las ejecute durante el diseño. Durante el diseño, a la clase  Controlador   se le asigna la responsabilidad de las operaciones del sistema. Diagramas de Interacción Principales Patrones - GRASP
Diagramas de Interacción El patrón  Controlador  (Ejemplo) ¿Quien debería ser el Controlador de eventos sistemáticos como pasarProducto y terminarVenta? Según el patrón Controlador, disponemos de las siguientes opciones: Principales Patrones - GRASP Representa un manejador artificial de todas las operaciones del sistema de un caso de uso. ManejadordeComprarProducto Representa algo en el mundo real que está activo y que puede intervenir en la tarea Cajero  Representa la empresa u organización Tienda Representa al “sistema” global TPDV (Registro)
Diagramas de Interacción El patrón  Controlador  (Ejemplo) Mensaje de evento del sistema Principales Patrones - GRASP :Cajero Articulo ID Cantidad Introducir Articulo Etc... Presiona Botón : JFrameVenta actionPerfomed(actionEvent) Capa Interfaz :??????? Capa Dominio introducirArticulo(articuloID,cant)
Diagramas de Interacción El patrón  Controlador  (Ejemplo)   Durante el diseño, se asignan a una o más clases controlador las operaciones del sistema que se identificaron durante el análisis del comportamiento del sistema, como  Registro  Principales Patrones - GRASP :ProcesarVentaManejador IntroduccirArticulo(id,cantidad) : Registro IntroduccirArticulo(id,cantidad)
Diagramas de Interacción El patrón  Controlador  (Ejemplo) La primera categoría de controladores es un controlador de  Fachada,  que representa al “sistema” global. Es un clase, que para el diseñador, representa de alguna manera el diseño completo. Si se recurre a la cuarta categoría de controlador (un “manejador artificial de casos de uso”), habrá entonces un controlador para cada caso. Este no es un objeto del dominio, es un concepto artificial. Por ejemplo, si la aplicación de punto de venta contiene casos como “Comprar Productos” y “Devolver Productos”, habrá un ManejadordeComprarProductos y una clase ManejadordeDevolverProductos.  Principales Patrones - GRASP
Diagramas de Interacción El patrón  Controlador  (Ejemplo) Un controlador de casos de uso es una buena alternativa cuando hay muchos eventos de sistema entre varios procesos: asigna su manejo a clases individuales controlables. Principales Patrones - GRASP
Diagramas de Interacción El patrón  Bajo Acoplamiento  [Larman 98] Principales Patrones - GRASP ¿Cómo dar soporte a una mínima dependencia y aún aumento en la reutilización? El acoplamiento mide qué tan fuerte está una clase conectada con otras (es decir, cuántas clases conoce y necesita). Una clase con bajo o débil acoplamiento no depende de muchas otras clases. Una clase con alto (o fuerte) acoplamiento recurre a muchas otras clases. Este tipo de clase no es conveniente, pues: cambios en las clases relacionadas ocasionan cambios en la clase local; son más difíciles de entender; son más difíciles de reutilizar.  Problema Bajo Acoplamiento Nombre Asignar una responsabilidad para mantener bajo acoplamiento. Solución
Diagramas de Interacción El patrón  Bajo Acoplamiento  [Larman 98] Principales Patrones - GRASP -No afecta los cambios en otros componentes. -Fácil de entender de manera aislada. -Conveniente para reutilizar.  Beneficios
Diagramas de Interacción El patrón  Bajo Acoplamiento  [Larman 98] (Ejemplo) Tres de las clases de aplicación de punto de venta era: Pago, TPV y Venta. Supongamos que necesitamos crear una instancia de Pago y asociarla a Venta. Como TPV “registra” un pago en el mundo real, es un buen candidato para crearlo.  Está asignación de responsabilidades acopla la clase TPV al conocimiento de la clase Pago. Principales Patrones - GRASP
Diagramas de Interacción El patrón  Bajo Acoplamiento  [Larman 98] (Ejemplo) Una solución alterna sería crear Pago y asociarlo a la Venta. Este último diseño es mejor porque conserva un menor acoplamiento global. El ejemplo es una situación donde patrones distintos (Bajo Acoplamiento y Creador) pueden surgir decisiones distintas. Principales Patrones - GRASP
Diagramas de Interacción ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Principales Patrones - GRASP
Diagramas de Interacción El patrón  Bajo Acoplamiento  [Larman 98] (Ejemplo) El bajo acoplamiento apoya al diseño de clases mas independientes, que reduce el impacto de los cambios, así como clases más reutilizables. El acoplamiento no es importante sino se busca la reutilización.  Principales Patrones - GRASP
Diagramas de Interacción El patrón  Alta Cohesión Principales Patrones - GRASP ¿Cómo mantener la complejidad manejable? En cuanto al diseño de objetos, la  cohesión  (o de manera más especifica la cohesión funcional) es una medida de fuerza con la que se relacionan y del grado de focalización de las responsabilidades de un elemento. Un elemento con responsabilidad altamente relacionada, y que no hace una gran cantidad de trabajo, tiene alta cohesión.  A menudo, las clases con baja cohesión representan un “grano grande” de abstracción, o se les ha asignado responsabilidades que debería haberse delegado en otros objetos. Problema Alta Cohesión Nombre Asignar una responsabilidad de manera que la cohesión permanezca alta. Solución
Diagramas de Interacción El patrón  Alta Cohesión Como regla empírica, una clase con alta cohesión tiene un número relativamente pequeño de métodos, con funcionalidades altamente relacionada, y no realiza mucho trabajo. Colabora con otros objetos para compartir el esfuerzo si la tarea es extensa. Principales Patrones - GRASP -Se incrementa la claridad y facilita la comprensión del diseño. -Se simplifica el mantenimiento y las mejoras. -Se soporta a menudo bajo acoplamiento. -El grano fino de funcionalidad altamente relacionada incrementa la reutilización porque una clase cohesiva se puede utilizar para un propósito muy especifico. Beneficios
Diagramas de Interacción ,[object Object],[object Object],[object Object],[object Object],[object Object],Elaboración
[object Object],[object Object],[object Object],[object Object],[object Object],Bibliografía

Contenu connexe

Tendances

Ejemplo de Normalización
Ejemplo de Normalización Ejemplo de Normalización
Ejemplo de Normalización Martha
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesjmachado614
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de DatosVannesa Salazar
 
Diagramas de Flujos de Datos
Diagramas de Flujos de DatosDiagramas de Flujos de Datos
Diagramas de Flujos de DatosRenny Batista
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacionalLuis Jherry
 
Dependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de DatosDependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de DatosEsteban Andres Diaz Mina
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datosSergio Sanchez
 
Comandos básicos para bases de datos mysql y workbench
Comandos básicos para bases de datos mysql y workbenchComandos básicos para bases de datos mysql y workbench
Comandos básicos para bases de datos mysql y workbenchRobedgar MX
 
Componentes de un sistema de base de datos
Componentes de un sistema de base de datosComponentes de un sistema de base de datos
Componentes de un sistema de base de datosIsabel
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a ObjetosRafael Miranda
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejerciciostestgrupocomex
 

Tendances (20)

Ejemplo de Normalización
Ejemplo de Normalización Ejemplo de Normalización
Ejemplo de Normalización
 
Diagrama de casos de usos
Diagrama de casos de usosDiagrama de casos de usos
Diagrama de casos de usos
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Estimación Software por Puntos de Función
Estimación Software por Puntos de FunciónEstimación Software por Puntos de Función
Estimación Software por Puntos de Función
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 
Base de datos distribuidas
Base de datos distribuidasBase de datos distribuidas
Base de datos distribuidas
 
Diagramas de Flujos de Datos
Diagramas de Flujos de DatosDiagramas de Flujos de Datos
Diagramas de Flujos de Datos
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Casos De Uso
Casos De UsoCasos De Uso
Casos De Uso
 
Patrones GRASP de tipo de bajo acoplamiento
Patrones GRASP de  tipo de bajo acoplamientoPatrones GRASP de  tipo de bajo acoplamiento
Patrones GRASP de tipo de bajo acoplamiento
 
Dependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de DatosDependencias Funcionales en Bases de Datos
Dependencias Funcionales en Bases de Datos
 
Transaccion
TransaccionTransaccion
Transaccion
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datos
 
Comandos básicos para bases de datos mysql y workbench
Comandos básicos para bases de datos mysql y workbenchComandos básicos para bases de datos mysql y workbench
Comandos básicos para bases de datos mysql y workbench
 
Diagrama de Componentes
Diagrama de ComponentesDiagrama de Componentes
Diagrama de Componentes
 
Componentes de un sistema de base de datos
Componentes de un sistema de base de datosComponentes de un sistema de base de datos
Componentes de un sistema de base de datos
 
Introducción a PostgreSql
Introducción a PostgreSqlIntroducción a PostgreSql
Introducción a PostgreSql
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a Objetos
 
Ejercicio no. 10 gym
Ejercicio no. 10 gymEjercicio no. 10 gym
Ejercicio no. 10 gym
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
 

En vedette

P H P, M Y S Q L Y A P A C H E
P H P,  M Y S Q L  Y  A P A C H EP H P,  M Y S Q L  Y  A P A C H E
P H P, M Y S Q L Y A P A C H ERONALD LEIVA PEÑA
 
Sesion1 Introducción Ingeniería Software
Sesion1 Introducción Ingeniería SoftwareSesion1 Introducción Ingeniería Software
Sesion1 Introducción Ingeniería SoftwareOscar López
 
Unidad 3.1 Prueba De Sistemas
Unidad 3.1 Prueba De SistemasUnidad 3.1 Prueba De Sistemas
Unidad 3.1 Prueba De SistemasSergio Sanchez
 
Unidad 6 Mad Modelado Analsis Diagrama De Secuencia Del Sistema
Unidad 6 Mad Modelado Analsis    Diagrama De Secuencia Del SistemaUnidad 6 Mad Modelado Analsis    Diagrama De Secuencia Del Sistema
Unidad 6 Mad Modelado Analsis Diagrama De Secuencia Del SistemaSergio Sanchez
 
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso Reales
Unidad 7 Mad Modelado DiseñO    Contratos Y Casos De Uso RealesUnidad 7 Mad Modelado DiseñO    Contratos Y Casos De Uso Reales
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso RealesSergio Sanchez
 
Unidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasUnidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasSergio Sanchez
 
Unidad 1.1 Que Es La Ing. De Software
Unidad 1.1 Que Es La Ing. De SoftwareUnidad 1.1 Que Es La Ing. De Software
Unidad 1.1 Que Es La Ing. De SoftwareSergio Sanchez
 
Unidad 1.2 A IntroduccióN A Los Proceso De Software Modelos Tradicionales
Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos TradicionalesUnidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales
Unidad 1.2 A IntroduccióN A Los Proceso De Software Modelos TradicionalesSergio Sanchez
 
Unidad 1.2 B Metodos Agiles 1
Unidad 1.2 B Metodos Agiles  1Unidad 1.2 B Metodos Agiles  1
Unidad 1.2 B Metodos Agiles 1Sergio Sanchez
 
Unidad 8 Diagramas De InteraccióN
Unidad 8 Diagramas De InteraccióNUnidad 8 Diagramas De InteraccióN
Unidad 8 Diagramas De InteraccióNSergio Sanchez
 
Unidad 2.2 Escribiendo El Programa
Unidad 2.2 Escribiendo El ProgramaUnidad 2.2 Escribiendo El Programa
Unidad 2.2 Escribiendo El ProgramaSergio Sanchez
 
Unidad 2 Modelo De Datos
Unidad 2 Modelo De DatosUnidad 2 Modelo De Datos
Unidad 2 Modelo De DatosSergio Sanchez
 
Unidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De ClasesUnidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De ClasesSergio Sanchez
 
Unidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De UsoUnidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De UsoSergio Sanchez
 

En vedette (20)

Diseño de patrones
Diseño de patronesDiseño de patrones
Diseño de patrones
 
Norma tecnica peruana
Norma tecnica peruanaNorma tecnica peruana
Norma tecnica peruana
 
I N G S O F T W A R E
I N G  S O F T W A R EI N G  S O F T W A R E
I N G S O F T W A R E
 
Ing del Software part1
Ing del Software part1Ing del Software part1
Ing del Software part1
 
P H P, M Y S Q L Y A P A C H E
P H P,  M Y S Q L  Y  A P A C H EP H P,  M Y S Q L  Y  A P A C H E
P H P, M Y S Q L Y A P A C H E
 
NTP
NTPNTP
NTP
 
Sesion1 Introducción Ingeniería Software
Sesion1 Introducción Ingeniería SoftwareSesion1 Introducción Ingeniería Software
Sesion1 Introducción Ingeniería Software
 
Unidad 3.1 Prueba De Sistemas
Unidad 3.1 Prueba De SistemasUnidad 3.1 Prueba De Sistemas
Unidad 3.1 Prueba De Sistemas
 
Unidad 6 Mad Modelado Analsis Diagrama De Secuencia Del Sistema
Unidad 6 Mad Modelado Analsis    Diagrama De Secuencia Del SistemaUnidad 6 Mad Modelado Analsis    Diagrama De Secuencia Del Sistema
Unidad 6 Mad Modelado Analsis Diagrama De Secuencia Del Sistema
 
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso Reales
Unidad 7 Mad Modelado DiseñO    Contratos Y Casos De Uso RealesUnidad 7 Mad Modelado DiseñO    Contratos Y Casos De Uso Reales
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso Reales
 
Modelos evolutivos
Modelos evolutivosModelos evolutivos
Modelos evolutivos
 
Unidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasUnidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De Programas
 
Unidad 1.1 Que Es La Ing. De Software
Unidad 1.1 Que Es La Ing. De SoftwareUnidad 1.1 Que Es La Ing. De Software
Unidad 1.1 Que Es La Ing. De Software
 
Unidad 1.2 A IntroduccióN A Los Proceso De Software Modelos Tradicionales
Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos TradicionalesUnidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales
Unidad 1.2 A IntroduccióN A Los Proceso De Software Modelos Tradicionales
 
Unidad 1.2 B Metodos Agiles 1
Unidad 1.2 B Metodos Agiles  1Unidad 1.2 B Metodos Agiles  1
Unidad 1.2 B Metodos Agiles 1
 
Unidad 8 Diagramas De InteraccióN
Unidad 8 Diagramas De InteraccióNUnidad 8 Diagramas De InteraccióN
Unidad 8 Diagramas De InteraccióN
 
Unidad 2.2 Escribiendo El Programa
Unidad 2.2 Escribiendo El ProgramaUnidad 2.2 Escribiendo El Programa
Unidad 2.2 Escribiendo El Programa
 
Unidad 2 Modelo De Datos
Unidad 2 Modelo De DatosUnidad 2 Modelo De Datos
Unidad 2 Modelo De Datos
 
Unidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De ClasesUnidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De Clases
 
Unidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De UsoUnidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De Uso
 

Similaire à Unidad 9 Patrones De DiseñO

Similaire à Unidad 9 Patrones De DiseñO (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
 
Simulación y BSC
Simulación y BSCSimulación y BSC
Simulación y BSC
 
Jon Cartier
Jon CartierJon Cartier
Jon Cartier
 
Analisis de requerimiento
Analisis de requerimientoAnalisis de requerimiento
Analisis de requerimiento
 
Clase 29
Clase 29Clase 29
Clase 29
 
Patrones GRASP
Patrones GRASPPatrones GRASP
Patrones GRASP
 
Modelos de dominio
Modelos de dominioModelos de dominio
Modelos de dominio
 
Modelos de dominio
Modelos de dominioModelos de dominio
Modelos de dominio
 
las nuevas 7 herramientas de la calidad
las nuevas 7 herramientas de la calidadlas nuevas 7 herramientas de la calidad
las nuevas 7 herramientas de la calidad
 
Tecnologias de información ebc
Tecnologias de información ebcTecnologias de información ebc
Tecnologias de información ebc
 
Minería de datos
Minería de datosMinería de datos
Minería de datos
 
Tecnologias de información ebc
Tecnologias de información ebcTecnologias de información ebc
Tecnologias de información ebc
 
Machine learning for business
Machine learning for businessMachine learning for business
Machine learning for business
 
Presentac..
Presentac..Presentac..
Presentac..
 
I de o
 I de o I de o
I de o
 
Investigación de Operaciones
Investigación de OperacionesInvestigación de Operaciones
Investigación de Operaciones
 
Unidad II
Unidad IIUnidad II
Unidad II
 
6.modelado de los requerimientos escenarios y clases
6.modelado de los requerimientos  escenarios y clases6.modelado de los requerimientos  escenarios y clases
6.modelado de los requerimientos escenarios y clases
 
Programación 1: modularización
Programación 1: modularizaciónProgramación 1: modularización
Programación 1: modularización
 
Seis sigma in09102 2013
Seis sigma in09102 2013Seis sigma in09102 2013
Seis sigma in09102 2013
 

Plus de Sergio Sanchez

Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)Sergio Sanchez
 
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Sergio Sanchez
 
Unidad 6 Lenguaje Sql 2
Unidad 6 Lenguaje Sql 2Unidad 6 Lenguaje Sql 2
Unidad 6 Lenguaje Sql 2Sergio Sanchez
 
Unidad 5 TransformacióN Er A Relacional NormalizacióN
Unidad 5 TransformacióN Er A Relacional   NormalizacióNUnidad 5 TransformacióN Er A Relacional   NormalizacióN
Unidad 5 TransformacióN Er A Relacional NormalizacióNSergio Sanchez
 
Unidad 4 Modelo De Datos Para La ImplementacióN
Unidad 4 Modelo De Datos Para La ImplementacióNUnidad 4 Modelo De Datos Para La ImplementacióN
Unidad 4 Modelo De Datos Para La ImplementacióNSergio Sanchez
 
Unidad 3 Modelamiento De Datos Conceptual
Unidad 3 Modelamiento De Datos ConceptualUnidad 3 Modelamiento De Datos Conceptual
Unidad 3 Modelamiento De Datos ConceptualSergio Sanchez
 
Unidad 1 IntroduccióN A Las Bases De Datos
Unidad 1 IntroduccióN A Las Bases De DatosUnidad 1 IntroduccióN A Las Bases De Datos
Unidad 1 IntroduccióN A Las Bases De DatosSergio Sanchez
 
Unidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De SistemasUnidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De SistemasSergio Sanchez
 
Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosSergio Sanchez
 
Unidad 5 Mad Modelado Analisis Modelo Conceptual
Unidad 5 Mad Modelado Analisis   Modelo ConceptualUnidad 5 Mad Modelado Analisis   Modelo Conceptual
Unidad 5 Mad Modelado Analisis Modelo ConceptualSergio Sanchez
 
Unidad 3 Modelo De Negocio
Unidad 3 Modelo De NegocioUnidad 3 Modelo De Negocio
Unidad 3 Modelo De NegocioSergio Sanchez
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Sergio Sanchez
 
Unidad 1 Mad IntroduccióN
Unidad 1 Mad IntroduccióNUnidad 1 Mad IntroduccióN
Unidad 1 Mad IntroduccióNSergio Sanchez
 
Melado de Proceso de Negocios con UML
Melado de Proceso de Negocios con UMLMelado de Proceso de Negocios con UML
Melado de Proceso de Negocios con UMLSergio Sanchez
 

Plus de Sergio Sanchez (15)

Unidad 6 Lenguaje Sql
Unidad 6 Lenguaje SqlUnidad 6 Lenguaje Sql
Unidad 6 Lenguaje Sql
 
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
 
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
 
Unidad 6 Lenguaje Sql 2
Unidad 6 Lenguaje Sql 2Unidad 6 Lenguaje Sql 2
Unidad 6 Lenguaje Sql 2
 
Unidad 5 TransformacióN Er A Relacional NormalizacióN
Unidad 5 TransformacióN Er A Relacional   NormalizacióNUnidad 5 TransformacióN Er A Relacional   NormalizacióN
Unidad 5 TransformacióN Er A Relacional NormalizacióN
 
Unidad 4 Modelo De Datos Para La ImplementacióN
Unidad 4 Modelo De Datos Para La ImplementacióNUnidad 4 Modelo De Datos Para La ImplementacióN
Unidad 4 Modelo De Datos Para La ImplementacióN
 
Unidad 3 Modelamiento De Datos Conceptual
Unidad 3 Modelamiento De Datos ConceptualUnidad 3 Modelamiento De Datos Conceptual
Unidad 3 Modelamiento De Datos Conceptual
 
Unidad 1 IntroduccióN A Las Bases De Datos
Unidad 1 IntroduccióN A Las Bases De DatosUnidad 1 IntroduccióN A Las Bases De Datos
Unidad 1 IntroduccióN A Las Bases De Datos
 
Unidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De SistemasUnidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De Sistemas
 
Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De Requerimientos
 
Unidad 5 Mad Modelado Analisis Modelo Conceptual
Unidad 5 Mad Modelado Analisis   Modelo ConceptualUnidad 5 Mad Modelado Analisis   Modelo Conceptual
Unidad 5 Mad Modelado Analisis Modelo Conceptual
 
Unidad 3 Modelo De Negocio
Unidad 3 Modelo De NegocioUnidad 3 Modelo De Negocio
Unidad 3 Modelo De Negocio
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
 
Unidad 1 Mad IntroduccióN
Unidad 1 Mad IntroduccióNUnidad 1 Mad IntroduccióN
Unidad 1 Mad IntroduccióN
 
Melado de Proceso de Negocios con UML
Melado de Proceso de Negocios con UMLMelado de Proceso de Negocios con UML
Melado de Proceso de Negocios con UML
 

Unidad 9 Patrones De DiseñO

  • 1. Metodologías de Análisis y Diseño Unidad VII Diseño O.O – Diagramas de Interacción “ Patrones de Diseño” Sergio Sánchez Rios. Ingeniero en Informática – Licenciado en Informática Docente Jornada Parcial Universidad Viña del Mar
  • 2. Diagramas de Interacción GRASP – Patrones de asignación de Responsabilidades Patrones Los diseñadores expertos en orientación a objetos, van formando un amplio repertorio de principios generales que los guían al crear software. Estos principios son llamados Patrones. Los patrones se codifican en un formato estructurado que describe el problema y su solución . Cada patrón tiene un nombre. Los patrones no se proponen descubrir ni expresar principios nuevos en Ingeniería de Software. Todo lo contrario, intentan codificar el conocimiento y los principios ya existentes: cuanto más generalizados y usados mejor.
  • 3. Diagramas de Interacción Patrones En consecuencia, los patrones GRASP no establecen nuevas ideas: son una codificación de principios básicos ampliamente utilizados. Para un experto en objetos, los patrones GRASP – por su idea y por su nombre – parecerán muy elementales y familiares. ¡Eso es lo importante!. GRASP – Patrones de asignación de Responsabilidades
  • 4.
  • 5. Diagramas de Interacción GRASP Es importante entender y ser capaz de aplicar estos principios durante la creación de los diagramas de interacción porque un desarrollador de software con poca experiencia en la tecnología de objetos necesita dominar estos principios tan rápido como sea posible; constituyen la base de cómo diseñara el sistema. GRASP es un acrónimo de G eneral R esponsibility A ssignment S oftware P atterns (patrones generales de software para asignar responsabilidades). GRASP – Patrones de asignación de Responsabilidades
  • 6. Diagramas de Interacción El patrón Experto [Larman 98] Principales Patrones - GRASP Experto Nombre Asignar una responsabilidad al experto en información: la clase que cuenta con la información necesaria para cumplir la responsabilidad. Solución ¿Cuál es el principio fundamental en virtud del cual se asignan las responsabilidades en el diseño O.O? Un modelo de clases puede definir n clases de software, y una aplicación tal vez requiera el cumplimiento de n responsabilidades. Durante el Diseño O.O, cuando se definen las interacciones entre los objetos se toman decisiones sobre la asignación de responsabilidades a clases. Si se hacen en forma adecuada, los sistemas tienden a ser más fáciles de entender, mantener y ampliar, y nos presentan la oportunidad de reutilizar componentes en futuras aplicaciones. Problema
  • 7. Diagramas de Interacción El patrón Experto [Larman 98] Principales Patrones - GRASP En la aplicación del punto de venta, alguna clase necesita conocer el gran total de venta. Ejemplo -Se conserva el encapsulamiento , ya que los objetos se valen de su propia información para hacer lo que se les pide. Esto provee un bajo nivel acoplamiento , lo que favorece al hecho de tener sistemas mas robustos y fáciles de mantener. -El comportamiento se distribuye entre las clases que cuentan con la información requerida, lo que ayuda a definir “clases sencillas” y más cohesivas , que son mas faciles de comprender y mantener. Beneficios
  • 8. Diagramas de Interacción El patrón Experto [Larman 98] (Ejemplo) Para el ejemplo del Punto de Venta. ¿Quién es el responsable de conocer el gran total de la venta?. Desde el punto de vista del patrón Experto , deberíamos buscar la clase de objetos que posee la información necesaria para calcular el total. Por ejemplo: Principales Patrones - GRASP
  • 9. Diagramas de Interacción El patrón Experto [Larman 98] (Ejemplo) ¿Qué información hace falta para calcular el gran total?. Hay que conocer todas las instancias VentaLineadeProducto de una venta, y la suma de sus subtotales, y esto lo conoce únicamente la instancia Venta. Por tanto, desde el punto de vista del Experto, Venta es la clase de objetos correcta para asumir esta responsabilidad. Venta es el experto de información. Principales Patrones - GRASP
  • 10. Diagramas de Interacción El patrón Experto [Larman 98] (Ejemplo) Todavía no terminamos. ¿Qué información hace falta para determinar el subtotal de la línea de productos?. Se necesitan VentasLineasProducto.cantidad y EspecificacióndeProductos.precio . VentasLineaProducto conoce su cantidad y su correspondiente EspecificaciondeProducto . Por tanto, desde la perspectiva patrón experto, VentasLineaProducto debería calcular el subtotal Principales Patrones - GRASP
  • 11. Diagramas de Interacción El patrón Experto [Larman 98] (Ejemplo) VentasLineaProducto no puede cumplir la responsabilidad de conocer y dar el subtotal, si no conoce el precio del producto. EspecificaciondeProducto es un Experto de información para contestar su precio. Por tanto, habrá que enviarle un mensaje preguntándole el precio. Principales Patrones - GRASP
  • 12. Diagramas de Interacción El patrón Experto [Larman 98] (Ejemplo) En conclusión, para cumplir con la responsabilidad de conocer y dar el total de venta, se asignaron responsabilidades a tres clases de objetos: El cumplimiento de una responsabilidad requiere a menudo información distribuida en varias clases de objetos. (“Expertos Parciales” que colaboran en la tarea). Principales Patrones - GRASP Conoce el precio del producto EspecificacióndeProducto Conoce subtotal de la línea de producto VentasLineadeProducto Conocer Total de la Venta Venta Responsabilidad Clase
  • 13. Diagramas de Interacción El patrón Creador [Larman 98] El patrón Creador guía la asignación de responsabilidades relacionadas con la creación de objetos tarea muy frecuente en los sistemas orientados a objetos. El objetivo de este patrón es encontrar un creador que debemos conectar con el objeto producido en cualquier evento. Principales Patrones - GRASP
  • 14. Diagramas de Interacción El patrón Creador [Larman 98] Principales Patrones - GRASP Creador Nombre Asignar a la clase B la responsabilidad de crear una instancia de la clase A en uno de los siguientes casos: Solución ¿Quién debería ser responsable de crear una nueva instancia de alguna clase? La creación de objetos es una de las actividades más frecuentes en un sistema orientado a objetos. En consecuencia, conviene contar con un principio general para asignar las responsabilidades concernientes a ella. El diseño, bien asignado, puede apoyar un bajo acoplamiento, una mayor claridad, el encapsulamiento y la reutilización. Problema
  • 15.
  • 16. Diagramas de Interacción El patrón Creador [Larman 98] (Ejemplo) En la aplicación del punto de venta ¿quién debería encargarse de crear una instancia de VentasLineadeProducto?. Desde el punto de vista del patrón Creador, deberíamos buscar una clase que agregue, contenga, y realice otras operaciones sobre este tipo de instancias. Una Venta (en realidad, agrega) muchos objetos VentasLIneadeProducto. Es por esto que Venta es la clase idónea para asumir la responsabilidad de crear las instancias de VentaLineadeProducto. Esta asignación de responsabilidad requiere definir en Venta un método para hacerLineadeProducto. Principales Patrones - GRASP
  • 17. Diagramas de Interacción El patrón Creador [Larman 98] (Ejemplo) Principales Patrones - GRASP
  • 18. Diagramas de Interacción El patrón Controlador Principales Patrones - GRASP Controlador Nombre ¿Quién debería encargarse de atender un nuevo evento del sistema? Un evento del sistema es un evento de alto nivel generado por un actor externo. Es un evento de entrada externa. Se asocia a operaciones del sistema: las que se emiten en respuesta a los eventos del sistema. Por ejemplo: cuando un cajero que usa una terminal de punto de venta oprime el botón “terminar Venta”, está generando un evento sistematico que indica que la “venta a terminado”. Un controlador es un objeto de interfaz que se encarga de manejar un evento del sistema. Define además el método de su operación. Problema
  • 19. Diagramas de Interacción El patrón Controlador Principales Patrones - GRASP En la aplicación del punto de venta se dan varias operaciones del sistema, como terminarVenta(), pasarProducto(), efectuarPago(). Ejemplo Asignar la responsabilidad del manejo de mensajes de los eventos del sistema a una clase que represente alguna de las siguientes opciones: -El “sistema” global (controlador de fachada) -La empresa u organización global (controlador de fachada) -Algo en el mundo real que es activo (por ejemplo el rol de una persona) y que puede participar en la tarea (controlador de tareas). -Un manejador artificial de todos los eventos del sistema de un caso de uso (controlador de casos de uso). Utilice la misma clase controlador con todos los eventos del sistema en el mismo caso de uso. Solución Garantiza que la empresa o los procesos de dominio sean manejados por la capa de los objetos del dominio y no por la interfaz. Beneficios
  • 20. El patrón Controlador (Ejemplo) Durante el análisis del comportamiento del sistema, sus operaciones son asignada al tipo de Sistema, para indicar que son operaciones del Sistema. Pero esto no significa que una clase llamada Sistema las ejecute durante el diseño. Durante el diseño, a la clase Controlador se le asigna la responsabilidad de las operaciones del sistema. Diagramas de Interacción Principales Patrones - GRASP
  • 21. Diagramas de Interacción El patrón Controlador (Ejemplo) ¿Quien debería ser el Controlador de eventos sistemáticos como pasarProducto y terminarVenta? Según el patrón Controlador, disponemos de las siguientes opciones: Principales Patrones - GRASP Representa un manejador artificial de todas las operaciones del sistema de un caso de uso. ManejadordeComprarProducto Representa algo en el mundo real que está activo y que puede intervenir en la tarea Cajero Representa la empresa u organización Tienda Representa al “sistema” global TPDV (Registro)
  • 22. Diagramas de Interacción El patrón Controlador (Ejemplo) Mensaje de evento del sistema Principales Patrones - GRASP :Cajero Articulo ID Cantidad Introducir Articulo Etc... Presiona Botón : JFrameVenta actionPerfomed(actionEvent) Capa Interfaz :??????? Capa Dominio introducirArticulo(articuloID,cant)
  • 23. Diagramas de Interacción El patrón Controlador (Ejemplo) Durante el diseño, se asignan a una o más clases controlador las operaciones del sistema que se identificaron durante el análisis del comportamiento del sistema, como Registro Principales Patrones - GRASP :ProcesarVentaManejador IntroduccirArticulo(id,cantidad) : Registro IntroduccirArticulo(id,cantidad)
  • 24. Diagramas de Interacción El patrón Controlador (Ejemplo) La primera categoría de controladores es un controlador de Fachada, que representa al “sistema” global. Es un clase, que para el diseñador, representa de alguna manera el diseño completo. Si se recurre a la cuarta categoría de controlador (un “manejador artificial de casos de uso”), habrá entonces un controlador para cada caso. Este no es un objeto del dominio, es un concepto artificial. Por ejemplo, si la aplicación de punto de venta contiene casos como “Comprar Productos” y “Devolver Productos”, habrá un ManejadordeComprarProductos y una clase ManejadordeDevolverProductos. Principales Patrones - GRASP
  • 25. Diagramas de Interacción El patrón Controlador (Ejemplo) Un controlador de casos de uso es una buena alternativa cuando hay muchos eventos de sistema entre varios procesos: asigna su manejo a clases individuales controlables. Principales Patrones - GRASP
  • 26. Diagramas de Interacción El patrón Bajo Acoplamiento [Larman 98] Principales Patrones - GRASP ¿Cómo dar soporte a una mínima dependencia y aún aumento en la reutilización? El acoplamiento mide qué tan fuerte está una clase conectada con otras (es decir, cuántas clases conoce y necesita). Una clase con bajo o débil acoplamiento no depende de muchas otras clases. Una clase con alto (o fuerte) acoplamiento recurre a muchas otras clases. Este tipo de clase no es conveniente, pues: cambios en las clases relacionadas ocasionan cambios en la clase local; son más difíciles de entender; son más difíciles de reutilizar. Problema Bajo Acoplamiento Nombre Asignar una responsabilidad para mantener bajo acoplamiento. Solución
  • 27. Diagramas de Interacción El patrón Bajo Acoplamiento [Larman 98] Principales Patrones - GRASP -No afecta los cambios en otros componentes. -Fácil de entender de manera aislada. -Conveniente para reutilizar. Beneficios
  • 28. Diagramas de Interacción El patrón Bajo Acoplamiento [Larman 98] (Ejemplo) Tres de las clases de aplicación de punto de venta era: Pago, TPV y Venta. Supongamos que necesitamos crear una instancia de Pago y asociarla a Venta. Como TPV “registra” un pago en el mundo real, es un buen candidato para crearlo. Está asignación de responsabilidades acopla la clase TPV al conocimiento de la clase Pago. Principales Patrones - GRASP
  • 29. Diagramas de Interacción El patrón Bajo Acoplamiento [Larman 98] (Ejemplo) Una solución alterna sería crear Pago y asociarlo a la Venta. Este último diseño es mejor porque conserva un menor acoplamiento global. El ejemplo es una situación donde patrones distintos (Bajo Acoplamiento y Creador) pueden surgir decisiones distintas. Principales Patrones - GRASP
  • 30.
  • 31. Diagramas de Interacción El patrón Bajo Acoplamiento [Larman 98] (Ejemplo) El bajo acoplamiento apoya al diseño de clases mas independientes, que reduce el impacto de los cambios, así como clases más reutilizables. El acoplamiento no es importante sino se busca la reutilización. Principales Patrones - GRASP
  • 32. Diagramas de Interacción El patrón Alta Cohesión Principales Patrones - GRASP ¿Cómo mantener la complejidad manejable? En cuanto al diseño de objetos, la cohesión (o de manera más especifica la cohesión funcional) es una medida de fuerza con la que se relacionan y del grado de focalización de las responsabilidades de un elemento. Un elemento con responsabilidad altamente relacionada, y que no hace una gran cantidad de trabajo, tiene alta cohesión. A menudo, las clases con baja cohesión representan un “grano grande” de abstracción, o se les ha asignado responsabilidades que debería haberse delegado en otros objetos. Problema Alta Cohesión Nombre Asignar una responsabilidad de manera que la cohesión permanezca alta. Solución
  • 33. Diagramas de Interacción El patrón Alta Cohesión Como regla empírica, una clase con alta cohesión tiene un número relativamente pequeño de métodos, con funcionalidades altamente relacionada, y no realiza mucho trabajo. Colabora con otros objetos para compartir el esfuerzo si la tarea es extensa. Principales Patrones - GRASP -Se incrementa la claridad y facilita la comprensión del diseño. -Se simplifica el mantenimiento y las mejoras. -Se soporta a menudo bajo acoplamiento. -El grano fino de funcionalidad altamente relacionada incrementa la reutilización porque una clase cohesiva se puede utilizar para un propósito muy especifico. Beneficios
  • 34.
  • 35.