Uno de los objetivos más importantes del diseño orientado a objetos es conseguir una alta cohesión entre clases y un bajo acoplamiento lo cual se genera a partir del paradigma de divisibilidad, es decir la forma en que dividimos y subdividimos nuestras clases y sus funciones para resolver tareas complejas en pequeñas secciones o «módulos».
¿Qué es la Cohesión?
La medida que indica si una clase tiene una función bien definida dentro del sistema. El objetivo es enfocar de la forma más precisa posible el propósito de la clase. Cuanto más enfoquemos el propósito de la clase, mayor será su cohesión.
Una prueba fácil de cohesión consiste en examinar una clase y decidir si todo su contenido está directamente relacionado con el nombre de la clase y descrito por el mismo.
Una alta cohesión hace más fácil:
-
Entender qué hace una clase o método.
-
Usar nombres descriptivos.
-
Recursividad, es decir, reutilizar clases o métodos.
¿Qué es el Acoplamiento?
El acoplamiento entre clases es una medida de la interconexión o dependencia de las mismas, entre más fuerte sea la dependencia entra ellas mayor será su acoplamiento.
El acoplamiento fuerte significa que las clases relacionadas necesitan saber más detalles internos unas de otras, los cambios se propagan por todo el sistema haciéndolo más difícil de entender y mantener.
Por ello deberemos siempre intentar que nuestras clases tengan un acoplamiento bajo.
Supongamos que tenemos 2 clases, la clase A y la clase b, cuanto menos cosas conozca la clase A sobre la clase B, menor será su acoplamiento.
Lo ideal es conseguir que la clase A sólo conozca de la clase B lo necesario para que pueda hacer uso de los métodos de la clase B, pero no conozca nada acerca de cómo estos métodos o sus atributos están implementados.
Los atributos de una clase deberán ser privados y la única forma de acceder a ellos debe ser a través de los métodos getter y setter.
Un bajo acoplamiento permite:
-
Entender una clase sin leer o depender de otras.
-
Cambiar una clase sin afectar a otras.
-
Fácil mantenimiento y depuración del código.
0 comentarios