Skip to content

Curiosidades Java: Coupling and Cohesion

9 mayo 2009

Antes de comenzar a explicar qué significan estos términos y a qué hacen referencia, os diré que cuando estemos desarrollando un proyecto java y/o cualquier proyecto orientado a objetos, lo ideal es que este proyecto tenga: Bajo acoplamiento (loosely coupled) y alta cohesión (high cohesion).

Coupling

El acoplamiento es el grado de conocimiento que una clase A tiene sobre una clase B. Lo ideal es conseguir que la clase A, sólo conozca de la clase B lo necesario para que la clase A pueda hacer uso de los métodos de la clase B, pero no conozca nada a cerca de cómo estos métodos están implementados. Por tanto es nuestra labor definir el interfaz de la clase B de manera que, únicamente tengamos como públicos aquellos métodos con los que nos interesa que el resto de las clases/objetos puedan interactuar.

Por supuesto, es un requisito fundamental para un buen diseño orientado a objetos, que todas las variables de instancia de una clase sean privadas y la única forma de acceder a ellas sea a través de los métodos getter y setter.

Cuantas menos cosas conozca la clase A sobre la clase B, menor será su acoplamiento.

Cohesion

Mientras que el coupling se refiere a cómo interactúa una clase con la otra, la cohesión indica el grado de especialización de una clase. 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.

Los beneficios que proporciona la cohesión es que hará que nuestras clases sean más fáciles de mantener, más fáciles de entender y además podremos reutilizar nuestras clases de una manera mucho más cómoda y eficiente.

Anuncios
One Comment leave one →
  1. 3 enero 2012 05:13

    Perfecto, gracias por compartir.

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

A %d blogueros les gusta esto: