Principios GRASP: Fundamentos para el Diseño de Software Orientado a Objetos

Enviado por federzzz y clasificado en Informática y Telecomunicaciones

Escrito el en con un tamaño de 3,08 KB

Definición de Responsabilidades y Patrones

Una responsabilidad es “un contrato u obligación de un clasificador”. Estas están intrínsecamente relacionadas con las obligaciones de un objeto en cuanto a su comportamiento y pueden clasificarse en dos tipos: Hacer y Conocer.

Un patrón es una descripción de un problema y su solución, a la cual se le asigna un nombre y puede aplicarse a nuevos contextos. Los Patrones GRASP describen los principios fundamentales del diseño de objetos y la asignación de responsabilidades, expresados como patrones.

1. Experto en Información

Asignar una responsabilidad al experto en información: la clase que posee los datos necesarios para realizar dicha responsabilidad. Expresa la “intuición” común de que los objetos realizan tareas relacionadas con la información que poseen.

  • Ejemplo: Se aplica el patrón experto debido a que la clase ElementoDepósito es quien tiene la información necesaria (atributo estado actual) para realizar la tarea (actualizar estado).
  • GestorDeposito (control) → cambiarEstado → ElemDep.

2. Creador

El patrón Creador indica que una clase es idónea para asumir la responsabilidad de crear la clase contenida o registrada. La intención básica es encontrar un creador que necesite conectarse al objeto creado en alguna situación.

  • Ejemplo: Se aplica el patrón creador estableciendo como creadora la clase GestorDeposito, ya que es la que tiene la información necesaria (previamente solicitada al usuario) para crear el depósito.
  • GestorDep (interconrulo(crearDep)) → nuevo → Depo.

3. Bajo Acoplamiento

Diseñar con el objetivo de mantener las clases lo menos ligadas entre sí. 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 del sistema.

  • Ejemplo: Esta asignación de responsabilidades acopla la clase GestorDepósito con el conocimiento del cliente, la clase Cliente con la clase Depósito y, por último, la clase Depósito conoce a la clase Elemento, manteniendo el acoplamiento global en un nivel bajo.

4. Alta Cohesión

Asignar responsabilidades de manera que la información que almacena una clase sea coherente y esté estrechamente relacionada con su propósito.

  • Ejemplo: La creación de la clase Cliente.

5. 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.

  • Ejemplo: mostrarClienteParaSeleccion() a IUSolicitudDeposito y de GestorDeposito, getNombre() a Cliente.

Entradas relacionadas: