PATRONES GRASP (Patrones de Software para la asignación General de Responsabilidad).Parte II

Publicado: mayo 8, 2007 en Ingenieria de Software, Patrones Grasp, Programación

En la tecnología de objetos 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.

Los patrones GRASP describen los principios fundamentales de diseño de objetos para la asignación de responsabilidades. Constituyen un apoyo para la enseñanza que ayuda a entender el diseño de objeto esencial y aplica el razonamiento para el diseño de una forma sistemática, racional y explicable.

En cuanto a las 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.

GRASP Se pueden destacar 5 patrones Principales que son:

Experto.
Creador.
Alta cohesión.
Bajo acoplamiento.
Controlador.

Y 4 patrones GRASP adicionales que son:

Fabricación Pura.
Polimorfismo.
Indirección.
No hables con extraños.

Nombre del patrón Problema Solución
Expert – Experto ¿Cuál es un principio general para asignar responsabilidades a los objetos? Asignar una responsabilidad al experto en información – la clase que tiene la información necesaria para la realización de la asignación.
Creator – Creador ¿Quién debería ser el responsable de la creación de una nueva instancia de alguna clase? Asignar a la clase B la responsabilidad de crear una instancia de clase A si se cumple uno o más de los casos siguientes:

  1. B agrega objetos de A
  2. B contiene objetos de A
  3. B registra instancias de objetos de A
  4. B utiliza más estrechamente objetos de A.
  5. B tiene datos de inicialización que se pasarán a un objeto de A cuando sea creado (por tanto, B es un Experto con respecto ala creación de A).
  6. B es un creador de los objetos A.

Low Coupling – Bajo Acoplamiento ¿Cómo soportar bajas dependencias, bajo impacto del cambio e incremento de la reutilización? Asignar una responsabilidad de manera que el acoplamiento permanezca bajo.
High Cohesion – Alta cohesión ¿Cómo mantener la complejidad manejable? Asignar una responsabilidad de manera que la cohesión permanezca alta.
Controller – Controlador ¿Quién debería ser el responsable de gestionar un evento de entrada al sistema? Asignar una responsabilidad de recibir o manejar un mensaje de evento del sistema a una clase que representa una de las opciones siguientes:

  1. Representa el sistema global, dispositivo o subsistema.
  2. Representa un caso de uso en el que tiene lugar el evento del sistema a menudo denominado <nombre del caso de uso> Manejador, <nombre del caso de uso> coordinador, <nombre del caso de uso> Sesión.

Utilice la misma clase controlador para todos los eventos del sistema en el mismo escenario de caso de uso.

Informalmente, una sesión es una instancia de una conversación con un actor. Las sesiones pueden tener cualquier duración, pero se organizan a menudo en función de casos de uso (sesiones de cas

comentarios
  1. marcela dice:

    Hola, te felicito por tu pagina, ya que le resuelve mauchas dudas a las chicas que nos estamos entrando en el mundo de la informatica.
    Soy estudiante de primer semestre de Ingenieria de Sistemas y me gustaria saber donde puedo encontrar una inplementacion en java de Bajo acoplamiento, baja cohesion y controaldor, ademas si tienes mas informacion acrca de este tema te agradeceria infinitamente, de nuevo felicitaciones por tu pagina es excelentcisima.
    Marcela

  2. marcela dice:

    Hola, te felicito por tu pagina, ya que le resuelve mauchas dudas a las chicas que nos estamos entrando en el mundo de la informatica.
    Soy estudiante de primer semestre de Ingenieria de Sistemas y me gustaria saber donde puedo encontrar una inplementacion en java de Bajo acoplamiento, baja cohesion y controaldor, ademas si tienes mas informacion acrca de este tema te agradeceria infinitamente, de nuevo felicitaciones por tu pagina es excelentcisima.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s