|
Acoplamiento y cohesión
En primer lugar revisaremos el acoplamiento, que describe el grado de interdependencia entre objeto/clases. Los criterios son:
- Mínimo acoplamiento posible de interacciones (uso o mensajes); si una clase está conectada con muchas otras, por mucho que se haya aislado, se producirá el denominado efecto rippling, que consiste en el hecho de que una modificación de la clase tiene resonancia en todo el sistema.
- Máximo acoplamiento posible de herencia; debe utilizarse todo el del padre y extenderse tanto como sea necesario.

|
Un objeto muy acoplado
|
- Evitar el acoplamiento denominado mensaje pass-through.
Si nos fijamos en la figura siguiente, veremos que la clase que se encuentra en el medio no realiza ninguna tarea (sólo es un intermediario). Si cambiamos algo de la llamada, deberemos modificar los tres objetos. Lo que hay que hacer es pedirle directamente lo que nos interese.

|
Mensaje pass-through
|
El segundo criterio es el de cohesión. La cohesión describe el grado de relación en un grupo de peces de OOD. Los criterios que deben aplicarse son los siguientes:
- cohesión de servicios
- un servicio debe realizar una (entera) y sólo una función; si para describirlo debemos utilizar sentencias compuestas, múltiples verbos, "and", "or",
creamos un servicio demasiado complejo.
- cohesión de clase
- en atributos y servicios, máxima cohesión. No tener atributos/servicios no usados.
- cohesión de herencia o generalización-especialización
- las jerarquías deben ser coherentes y sensatas; si por las múltiples modificaciones de mantenimiento se descohesionan, hay que volver a diseñar las jerarquías.
|