Diseño Dirigido por Responsabilidades con los patrones GRASP. Pearson Educación, S.A. Todos los derechos reservados.



Documentos relacionados
Capítulo 17 Modelo de Diseño: realización de los casos de uso con los patrones GRASP

CLASE 9: DISEÑO CON PATRONES. Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez

Patrones de Software para la Asignación de Responsabilidades

CLASE 9: DISEÑO CON PATRONES. Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez

Alumnos BAJO ACOPLAMIENTO Y ALTA COHESION. Un patrón intenta codificar el conocimiento, expresiones y los principios existentes.

Tienda Online: WebCine. Jose Luis Del Hoyo Fernández Consultor: Antoni Oller Arcas 13/01/2014

Programación 4. Diseño Criterios de Asignación de Responsabilidades GRASP

PRUEBA DE NIVEL DE ACCES

Programación Orientada a Objetos. Sesión 4: Herencia

CC61J / CC Taller de UML Apuntes de Clase

360ºde la gestión del expediente. José Novillo Especialista Técnico en Gestión Documental #START013, 6 Noviembre 2012

DaVinciTEXTIL. Codificación de artículos

La sintaxis básica para definir una clase es la que a continuación se muestra:

Arbol de Decisiones-Investigación de Operaciones II

Tema 2. Divisibilidad. Múltiplos y submúltiplos.

TEMA I PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN N ORIENTADA A OBJETOS OBJETOS (I) OBJETOS (II)

ANEXO Nº 1 MATRIZ DE CONGRUENCIA

frente a controles robóticos de OEM

PENSAMIENTO ESTRATÉGICO

INGENIERÍA TELEINFORMÁTICA

Técnicas de planeación y control

Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar.

Tema 6. Patrones de diseño.

REGLAS DE CODD DEL MODELO RELACIONAL

SIIGO Pyme. Parámetros Gestión de Recaudos. Cartilla I

Capítulo 16. Diagrama de Clases UML

Técnicas de planeación y control

Fibroline El presente proyecto

Conversión de unidades: factores de conversión vs. reglas de tres

Curso JAVA EE

Polinomios. 1.- Funciones cuadráticas

Construcción de gráficos:

MANUAL DE SEGURIDAD. Definiciones. Objetivos. Proceso de elaboración de un manual de seguridad

Presentación del Centro Demostrador de Nuevas Tecnologías Aplicadas al Back Office de la Venta de Moda.

En el panel aparece el botón desplegable Agregar efecto donde seleccionamos el tipo de efecto que queremos aplicar

Exámenes de febrero de 2005 Enunciados y soluciones

Excel 2007 Completo. Duración: Objetivos: Contenido: 75 horas

PATRONES DE SOMBRA EJEMPLO DE CÁLCULO. José Carlos Martínez Tascón. V1.0 Mayo 2.013

Manual del Usuario de Microsoft Access Consultas - Página 1. Tema IV: Consultas. IV.1. Creación de Consultas

CAPÍTULO II LA CADENA DE SUMINISTRO

Sistemas Operativos. Clase 2: Administración de procesos.

Los números naturales

Zapatero a tus zapatos

Gráficamente: una función es continua en un punto si en dicho punto su gráfica no se rompe. Función continua en x = 0 Función no continua en x = 0

Preguntas más frecuentes:

La planificación estratégica

EJERCICIO 2 DE ACCESS ACCESS EJERCICIO 2 CONSULTAS SENCILLAS. Una consulta en Access sólo tiene sentido cuando se quiere:

Patrones. Patrones GRASP GRASP GRASP. Curso de Arquitecturas de Software. Programación Orientada a Objetos Patrones GRASP

Lección 10: Representación gráfica de algunas expresiones algebraicas

Placa E/S del activador para accionador de pistola LogiComm

Funciones. Resumen del contenido

CLAVE ASIGNATURA REQUISITOS HORA/SEMANA CREDITOS TI-8 PROGRAMACION II 80% DE ASISTENCIA 4 6

PLANEACIÓN ESTRATÉGICA

Caja. Pin. Triángulo. Flanco de carga. Flanco de enchufe Diagrama del perfil general de la rosca Buttress. Longitud a la base del triángulo

BASES DE DATOS DOCUMENTOS O INSTRUMENTOS? DEBEN SOMETERSE A VALORACIÓN?

Tema 4: Diagramas de Casos de Uso

RELACIONES ACCESS TIPOS DE RELACIONES QUE PODEMOS UTILIZAR

Declaración de variables (integer, single, double, boolean, etc.) en Visual Basic. Dim. Ejemplos. (CU00309A)

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

Su empresa Está preparada para un ERP?

CLASE Nº7. Patrones, series y regularidades numéricas

Contabilidad General. Sesión 7: Registro de las transacciones de una entidad

Atributos Los atributos son las columnas de un relación y describen características particulares de ella.

DISEÑO DE ESTRUCTURAS ADMINISTRATIVAS. CAPITULO II

USO DE GRÁFICOS. Creación de un gráfico. Herramientas Informáticas para el trabajo en Aula y la Gestión Escolar

Curso Completo de Electrónica Digital Simplificación de funciones booleanas

Pasos para la creación de un gráfico en Excel 2007

Contabilidad de Costos

On The Minute 4.0 Profesional

Análisis de los reactivos de la Evaluación de Concepciones Físicas (Efraín Soto Apolinar)

LECCIÓN 4 BALANCED SCORECARD

VALORES EXACTOS DE FUNCIONES TRIGONOMÉTRICAS (SENO Y COSENO)

Sesión No. 3. Contextualización. Nombre: 2. El aprendizaje mixto (b-learning) APRENDIZAJE VIRTUAL 1

LabVIEW en la Enseñanza del Control: Laboratorios Virtuales y Remotos de Automática

Diagramación. A base de retículas

Gestión de los datos en una base de datos.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD. ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Gerencia de Proyectos Informáticos

Diagramas de Estructura

Mapeo entre los requisitos de ISO 9001:2008 e ISO 9001:2015 Guía de Mapeo

Gestión de datos con STATGRAPHICS

Unidad 2. Componentes de LibreOffice. CURSO: Introducción LibreOffice

Excel - Fórmulas y Funciones

Programando el Evento Start, Click o De usuario en un Web Panel

FUNCIONES CONDICIONALES EN EXCEL

Gestión y organización de artículos Clasificación en secciones, categorías y subcategorías Joomla. Ejemplos. (CU00422A)

Contabilidad de Costos

MANUAL FONDOS DE INVERSION. Cuarta EDICION, revisada y actualizada con los últimos cambios fiscales*

MODELO DE CASCADA PURA. Son métodos que indican cómo hacer más eficiente el desarrollo de sistemas de

Manual avanzado Excel 2007

Tema 3. Medidas de tendencia central Ejercicios resueltos 1

Semana 7. Gastos, deudas y costos (parte 3) Semana Gastos, deudas 8 y costos (parte 2) Empecemos! Qué sabes de...? El reto es...

Cuál es la frecuencia de acceso de una memoria de acceso aleatorio con un tiempo de acceso de 80 nseg. y un tiempo de ciclo de 100 nseg.?.

Medimos los perímetros de los nidos de las aves

4.2 COMBINAR CORRESPONDENCIA UTILIZANDO OTROS ORÍ-

3.1 Conflictos de Esquema

CLASIFICACIÓN DE SERVICIOS EN SOA CONTENIDO

SUBCONJUNTOS y CONJUNTO POTENCIA. COMP 2501: Estructuras Computacionales Discretas I Dra. Madeline Ortiz Rodríguez 3 de septiembre de 2013

Componentes ERD. Entidad. Entidad. Ejemplos de entidades. Atributos. Otras definiciones: Definición:

PRÁCTICA 4. EL ENTORNO DE UN ROBOT EN C++

Sistemas de Gestión de Tecnología de la Información ISO 20000

Transcripción:

Diseño Dirigido por Responsabilidades con los patrones GRASP

Experto (en información) Cómo asignar responsabilidades? Asignar una responsabilidad al objeto que tiene la información necesaria para realizarla: El objeto que tiene la información realiza el trabajo. Por ejemplo, qué objeto de software calcula el impuesto sobre las ventas? Qué tipo de información se necesita para llevar a cabo esta tarea? Qué objeto u objetos tienen la mayor parte de esta información?

Experto (en información) En la aplicación del terminal de punto de venta (TPV) hay una responsabilidad que debemos asignar: Calcular el importe total de una venta A qué objeto vamos a asignar esta responsabilidad? El patrón Experto nos sugiere asignar la responsabilidad al objeto que posea la información necesaria para desempeñarla. Qué objeto tiene la información necesaria para --Cacular el importe total de una venta--?

Centrémonos en la parte que más nos interesa

Qué información se necesita para calcular el importe total? Todas las instancias de LineaDeVenta, y La suma de sus subtotales Ya que Venta contiene las instancias de LineaDeVenta, podría ser el experto adecuado

Experto (en información) Qué información se necesita para calcular la suma de sus subtotales? LineaDeVenta.cantidad, y EspecificacionDelProducto.precio Ya que LineaDeVenta conoce la cantidad y la EspecificacionDelProducto correspondiente, podría ser el experto adecuado Mientras que EspecificacionDelProducto se responsabilizaría de conocer el precio del produto

Experto (en información)

Experto (en información) Venta Clase Responsabilidad Calcular el importe total de una venta LineaDeVenta Calcular el subtotal de la línea de venta EspecificaciónDelProducto Conocer el precio del artículo

Experto (en información) Nombre Problema Solución Ejemplo Patrón Experto A qué objeto asignar una responsabilidad? Asignarla a la clase que posea la información necesaria para desempeñarla Calcular el importe total de una venta en la aplicación TPDV

Creador Qué objeto debería crear X? Elegir un objeto C, de manera que: C contenga X, C agregue X, C registre X, C utilice más estrechamente X, C tenga los datos de inicialización para X. Cuantas más opciones se apliquen, mejor.

Creador En la aplicación TPV debemos asignar la responsabilidad de: Crear una lineadeventa A qué objeto vamos a asignar esta responsabilidad? El patrón Creador nos sugiere asignar la responsabilidad a un objeto que agrege, contenga,... instancias de lineadeventa.

Creador Los objetos Venta parecen buenos candidatos

Debemos, pues, definir un método crearlineadeventa() en la clase Venta

Creador Nombre Problema Solución Ejemplo Patrón Creador A qué objeto asignar una responsabilidad de creación de instancias de una clase? Elegir los objetos que agregen, contengan, registren, utilicen más o posea los datos de inicialización de las instancias, Creación de instancias de LineaDeVenta en la aplicación TPDV

Bajo acoplamiento Asignar responsabilidades de manera que el acoplamiento permanezca bajo. Qué significa bajo acoplamiento? Las clases con acoplamiento alto: Deben modificarse cuando cambian las clases de las que dependen Son difíciles de entender por sí solas Son más difíciles de reutilizar

Debemos crear una instancia de Pago y asociarla con la Venta correspondiente: A qué clase asignar esta responsabilidad? El patrón Creador sugiere que sea Registro la clase responsable

(a) Pero no es ésta la única alternativa posible (b)

Bajo acoplamiento Tanto en (a) como en (b) Venta y Pago están acoplados Pero en (a) también lo están Registro y Pago, Mientras que en (b) no lo están Así, desde el punto de vista del Acoplamiento bajo, es preferible la opión (b).

Bajo acoplamiento Ejemplos de posibles acoplamientos entre las clases A y B: A tiene un dato miembro del tipo B Un objeto de la clase A llama a una función miembro de B Una función miembro de A tiene un parámetro del tipo B Una función miembro de A devuelve un valor del tipo B A es subclase directa o indirecta de B

Alta cohesión Asignar una responsabilidad de manera que la cohesión permanezca alta. Qué significa alta cohesión? Una clase con cohesión baja hace demasiadas cosas, inconexas, y es difícil Entenderla Reutilizarla mantenerla

Alta cohesión El ejemplo anterior volverá a sernos útil Debemos crear una instancia de Pago y asociarla con la Venta correspondiente: A qué clase asignar esta responsabilidad? El patrón Creador sugiere que sea Registro la clase responsable Nuevamente no es esta la única alternativa posible

(a) (b)

Alta cohesión En la opción (a) Registro se hace responsable de dar soporte a la implementación de realizarpago() En la opción (b), en cambio, esta responsabilidad se delega en Venta Esta responsabilidad parece apropiada para la clase Venta Si quisiéramos descargar de responsabilidades a Registro, esta podría ser una buena solución Podríamos querer descargar de responsabilidades a registro en el caso en que ésta hubiera llegado a ser una clase con una cohesión baja

Controlador Qué objeto (de la capa de coordinación de la aplicación) debería recibir solicitudes de trabajo procedentes de la capa de UI? Presentación Videoclub Vídeo ID............ Cajero Registrar alquiler... Lógica de la aplicación aplogicsolicitud() Qué objeto debería ser éste? Qué clase?

Controlador A qué objeto asignar la responsabilidad de manejar un evento del sistema? Un objeto representativo del sistema (Fachada) Un objeto representativo del escenario del caso de uso correspondiente (Controlador de sesión, o de caso de uso) Presentación Cajero Videoclub Vídeo ID............ Registrar alquiler... Lógica de la aplicación Qué objeto debería ser éste? Qué clase? aplogicsolicitud()

Candidatos: Controlador Un objeto cuyo nombre refleje el servidor global, los negocios o la entidad a gran escala. Un tipo de objeto de fachada. Por ejemplo: Establecimiento, ServidorDeAlquiler. Presentación Vídeo ID... Videoclub... Cajero...... Registrar alquiler... Lógica de la aplicación Qué objeto debería ser éste? aplogicsolicitud() Qué clase?

Controlador Candidatos: Un objeto cuyo nombre refleje el caso de uso, Ejemplo: ManejadorDelCasoDeUsoAlquilerDeVideos formando parte de la capa de coordinación de la aplicación. Es conveniente usar un solo Controlador para cada escenario Una sesión es una instancia de interacción con el actor Presentación Vídeo ID... Videoclub... Cajero...... Registrar alquiler... Lógica de la aplicación Qué objeto debería ser éste? aplogicsolicitud() Qué clase?

Controlador Figura 16.17. Acoplamiento deseable entre la capa de interfaz y la del dominio.

Controlador No son buenos candidatos, en cambio, las objetos de interface de usuario: Ventana Applet Widget Vista Documento

Controlador Figura 16.18. Acoplamiento menos conveniente entre la capa de interfaz y la del dominio.

Controlador En la aplicación TPDV hay varios eventos del sistema, a los que corresponden las operaciones: IntroducirArticulo FinalizarVenta...

Controlador Figura 16.14. Controlador para introducirarticulo?

Controlador Siguiendo el patrón Controlador podrían ser candidatos: Registro, TPDV,..., ó ProcesarVentaManejador, ProcesarVentaSesion,...

Controlador Figura 16.16. Asignación de las operaciones del sistema.

Controlador Utilizar el mismo controlador para todos los eventos de un caso de uso, Así podremos garantizar que sólo se permite la respuesta al evento que corresponde en cada estado Debe procurarse que los Controladores sólo tengan responsabilidades de coordinación, No deben sobrecargarse de responsabilidad los Controladores

Controlador Nombre Problema Solución Ejemplo Patrón Controlador A qué objetos asignar la responsabilidad de gestionar un evento de entrada del sistema? Elegir un controlador de fachada, o de caso de uso, o de sesión. Gestión de los eventos del sistema en la aplicación TPDV

Fabricación pura Dónde asignar una responsabilidad cuando las opciones normales basadas en el Experto conllevan problemas en el acoplamiento y la cohesión o son, por otra parte, indeseables? Inventar una clase artificial, cuyo nombre no tiene que estar necesariamente inspirado por el vocabulario del dominio. Ejemplo: persistencia de la base de datos en: Vídeo? BaseDeDatosFachada? (una fabricación pura).

Polimorfismo Cómo diseñar para casos similares que varían? Asignar una operación polimórfica a la familia de tipos para los que varían los casos: No utilice la lógica de casos. Ejemplo: dibujar() Cuadrado, Círculo, Triángulo.

Indirección Un mecanismo común para reducir el acoplamiento? Asignar una responsabilidad a un objeto intermediario para desacoplar la colaboración de otros dos objetos.

No Hable con Extraños Cómo diseñar para restringir el acoplamiento al conocimiento de las conexiones estructurales de objetos? No recorra una red de conexiones de objetos a la hora de invocar una operación. En su lugar, promueva la operación a un conocido del cliente.