Patrones GRASP: Guía para la Asignación de Responsabilidades en Diseño de Objetos
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,24 KB
Responsabilidades en el Diseño de Objetos
Una responsabilidad es un contrato u obligación de un clasificador. Están relacionadas con las obligaciones de un objeto en cuanto a su comportamiento. Se pueden clasificar en dos tipos:
- Hacer:
- Hacer algo por sí mismo (un cálculo, crear un objeto)
- Iniciar acciones en otros objetos
- Controlar y coordinar actividades en otros objetos
- Conocer:
- Conocer los datos privados encapsulados
- Conocer los objetos relacionados
- Conocer las cosas que puede derivar o calcular
Las responsabilidades se asignan a las clases de los objetos durante el diseño. Una responsabilidad no es lo mismo que un método, pero los métodos se implementan para llevar a cabo las responsabilidades.
Responsabilidades y Diagramas de Interacción
En los artefactos UML, un contexto habitual donde se tienen en cuenta las responsabilidades es durante la creación de los diagramas de interacción. Estos diagramas muestran elecciones en la asignación de responsabilidades a los objetos que se reflejan en los mensajes que se envían a diferentes clases de objetos.
Patrones GRASP
Los Patrones GRASP (Patrones Generales de Software para la Asignación de Responsabilidades) describen los principios fundamentales del diseño de objetos y la asignación de responsabilidades, expresados como patrones. La asignación habilidosa de responsabilidades es extremadamente importante en el diseño de objetos.
¿Qué es un Patrón?
Un patrón es una descripción de un problema y la solución, a la que se le da un nombre, y que se puede aplicar a nuevos contextos. El término patrón tiene la intención de sugerir algo repetitivo.
Los patrones GRASP principales son:
- Creador
- Experto en Información
- Bajo Acoplamiento
- Alta Cohesión
- Controlador
Patrón Creador
Se le asigna a la clase B la responsabilidad de crear una nueva instancia de la clase A si:
- B agrega objetos de A
- B contiene objetos de A
- B registra instancias de objetos de A
- B utiliza estrechamente objetos de A
- B tiene los datos de inicialización que se pasarán a un objeto de A cuando sea creado
Es decir, B es un experto con respecto a la creación de A. B es un creador de los objetos de A. El todo tiene la responsabilidad de crear sus partes.
Beneficios: Se soporta bajo acoplamiento, lo que implica menos dependencias de mantenimiento y mayores oportunidades para reutilizar.
Patrón Experto en Información
Este patrón nos dice que debemos asignarle la responsabilidad a la clase que contenga la información necesaria para llevar a cabo dicha responsabilidad.
Beneficios:
- Se mantiene el encapsulamiento de la información, ya que los objetos utilizan su propia información para realizar las tareas. Esto produce un bajo acoplamiento, lo que da lugar a sistemas más robustos y fáciles de mantener.
- Se distribuye el comportamiento entre las clases que contienen la información requerida. Se estimula la definición de clases más cohesivas y "ligeras" que son más fáciles de entender y mantener.
Patrón Bajo Acoplamiento
Es una medida de la fuerza con la que un elemento depende de otros elementos. Un elemento con bajo acoplamiento no depende de demasiados otros elementos. Se debe diseñar con el objetivo de tener las clases lo menos ligadas entre sí que se pueda, de tal forma que en caso de producirse una modificación en alguna de ellas, se tenga la mínima repercusión posible en el resto de clases, potenciando la reutilización y disminuyendo la dependencia entre las clases.
Beneficios:
- Los cambios en otros componentes no afectan al elemento.
- Es fácil de entender de manera aislada.
- Conviene para reutilizar.
Patrón Alta Cohesión
La cohesión es una medida de la fuerza con la que se relacionan las responsabilidades de un elemento. Un elemento con responsabilidades altamente relacionadas y que no hace una gran cantidad de trabajo tiene alta cohesión.
Beneficios:
- Se incrementa la claridad y facilita la comprensión del diseño.
- El alto grado de funcionalidad relacionada, combinado con un número pequeño de operaciones, simplifica el mantenimiento y las mejoras.
- El grano fino de funcionalidad altamente relacionada incrementa la reutilización.
Patrón Controlador
Un evento del sistema de entrada es un 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 es un objeto que no pertenece a la interfaz de usuario, responsable de recibir o manejar un nuevo evento del sistema. Un controlador define el método para la operación del sistema.
Beneficios:
- Aumenta el potencial para reutilizar y las interfaces conectables.
- Facilita el razonamiento sobre el estado de los casos de uso.