Diferencia entre acoplamiento y cohesión

Acoplamiento vs Cohesión

El acoplamiento y la cohesión son dos conceptos que se encuentran en Java (y en todos los demás lenguajes orientados a objetos). El acoplamiento mide cuánto dependen cada uno de los módulos del programa de los otros módulos del programa. La cohesión mide la fuerza con la que se relacionan cada una de las funciones dentro de un módulo. En realidad, cualquier lenguaje orientado a objetos (incluido Java) tiene los dos objetivos principales de aumentar la cohesión y disminuir el acoplamiento al mismo tiempo, a fin de desarrollar los programas más eficientes. Estas dos medidas de ingeniería de software fueron desarrolladas por Larry Constantine para reducir el costo de modificar y mantener el software..

¿Qué es la cohesión??

La cohesión mide la fuerza con que se relacionan cada una de las funciones dentro de un módulo de programa. Clases bien estructuradas conducen a programas altamente cohesivos. Si una determinada clase está realizando un conjunto de funciones altamente relacionadas, se dice que esa clase es cohesiva. Por otro lado, si una clase está realizando un montón de funcionalidades totalmente no relacionadas, eso significa que la clase no es cohesiva en absoluto. Es importante entender que no tener cohesión no significa que la aplicación general no tenga la funcionalidad requerida. Es solo que sin cohesión, será muy difícil administrar la funcionalidad porque estarán dispersas en muchos lugares equivocados a medida que la complejidad de la aplicación aumenta con el tiempo. Mantener, modificar y extender los comportamientos dispersos por todo el código es muy tedioso incluso para los programadores con más experiencia.

Qué es el acoplamiento?

El acoplamiento mide cuánto dependen cada uno de los módulos del programa de los otros módulos del programa. Las interacciones entre dos objetos ocurren porque hay acoplamiento. Los programas de acoplamiento flexible son altos en flexibilidad y extensibilidad. El acoplamiento fuerte nunca es bueno porque un objeto puede ser altamente dependiente de otro objeto. Esto es una pesadilla cuando se modifica el código, ya que un alto acoplamiento significa que los programadores deben trabajar en varios lugares del código, incluso para una sola modificación de comportamiento. Un acoplamiento fuerte siempre conduce a programas con poca flexibilidad y menos escalabilidad / extensibilidad. Sin embargo, en lenguajes de programación como Java, evitar el acoplamiento es imposible. Pero se recomienda que los programadores hagan todo lo posible por reducir el acoplamiento lo más posible. También es posible tener algún acoplamiento para ayudar a que los objetos interactúen entre sí sin obstaculizar su escalabilidad y flexibilidad..

¿Cuál es la diferencia entre acoplamiento y cohesión??

Aunque el acoplamiento y la cohesión tratan con la calidad de un módulo en ingeniería de software, son conceptos completamente diferentes. Cohesion habla sobre cuánto se relacionan las funciones entre sí dentro del módulo, mientras que el acoplamiento trata sobre cuánto depende un módulo de los otros módulos de programa dentro de toda la aplicación. Para tener el mejor software de calidad, la cohesión y el acoplamiento deben alcanzar los dos extremos opuestos de sus espectros. En otras palabras, el acoplamiento suelto y la fuerte cohesión proporcionan el mejor software. Tener campos privados, clases no públicas y métodos privados proporcionan un acoplamiento flexible, al tiempo que hace que todos los miembros sean visibles dentro de la clase y el paquete como visibilidad predeterminada proporciona una alta cohesión.