Cohesión y Disociación


¿Puede alguien decirme qué son Cohesión y Desacoplamiento? Encontré acoplamiento pero no hay desacoplamiento en ninguna parte. Necesito aprender sus significados.

Cualquier ayuda será apreciada. Gracias por responder.

Author: dbtek, 2010-05-21

6 answers

Ese artículo de Aaron es muy bueno para entender, también te recomiendo que leas manning publications Spring in Action book, dan muy buenos ejemplos sobre cómo la primavera resuelve ese problema definitivamente mejorará tu comprensión de esto.

EDITAR:

Llegué a esto en este gran libro llamado Growing object oriented software guided by tests:

Acoplamiento :

Los elementos se acoplan si un cambio en una fuerza un cambio en la otra. Para ejemplo, si dos clases heredan de un padre común, entonces un cambio en uno clase podría requerir un cambio en el otro. Piense en un sistema de audio combinado: Está estrechamente acoplado porque si quiere cambiar de analógico a digital radio, debemos reconstruir todo sistema. Si montamos un sistema de separa, tendría acoplamiento bajo y podríamos simplemente intercambiar el receptor. Características acopladas" libremente" (es decir, aquellos con acoplamiento bajo) son más fácil de mantener.

Cohesión:

La cohesión de un elemento es una medida of whether its responsibilities form a unidad significativa. Por ejemplo, una clase que analiza las fechas y URLs no es coherente, porque no están relacionados concepto. Piensa en una máquina que lava la ropa y los platos-es es poco probable que ambas cosas funcionen bien.2 En el otro extremo, una clase que analiza solo la puntuación en una URL es poco probable que sea coherente, porque no representa un concepto. A hacer nada, el programador tener que encontrar otros analizadores para protocolo, host, recurso, etc. Las características con "alta" coherencia son más fácil de mantener.

 71
Author: ant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-16 20:11:30

Cohesión - relacionada con el principio de que una clase/método debe ser responsable de una sola cosa, es decir, no hay métodos extraviados que no pertenezcan a la encapsulación; un método solo hace una cosa. Alta / Baja cohesión es el grado en que esto se mantiene.

Acoplamiento - cuán interdependientes son las diferentes partes del sistema. por ejemplo, cómo y dónde hay dependencias. Si dos clases hacen llamadas a métodos el uno del otro, entonces están estrechamente acoplados, ya que cambiar uno significaría tener que cambia el otro. Desacoplamiento es el proceso de hacer algo que estaba estrechamente acoplado menos, o no en absoluto.

Los sistemas flexibles tienen una Alta Cohesión y Acoplamiento Suelto.

 11
Author: Robert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-21 11:54:39

Cohesión: La cohesión es el principio OO más estrechamente asociado con asegurarse de que una clase está diseñada con un propósito único y bien enfocado.

Acoplamiento: Acoplamiento se refiere al grado en que una clase conoce o utiliza miembros de otra clase.

 3
Author: Amine Sagaama,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-04 17:13:45

Para el acoplamiento, este artículo de Wikipedia debe responder a todas sus preguntas. Este artículo trata de la cohesión.

"Desacoplamiento" es solo otro nombre para "acoplamiento pequeño/bajo".

Así que estos términos responden a estas preguntas:

  • ¿Cuánto depende cada parte de tu proyecto de otra parte?
  • Si desea utilizar solo una parte de su proyecto (como para resolver un problema específico), ¿cuánto necesita saber sobre todo el resto de la proyecto?
  • ¿Cada parte de su proyecto se centra en una única solución a un problema específico o las soluciones "se filtran" a otras partes?
 2
Author: Aaron Digulla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-21 12:15:18

Aquí están mis pensamientos sobre la cohesión. Imagina que hay un módulo. Dentro de ese módulo, tenemos algunas tareas. Cuando esas tareas están muy relacionadas entre sí, decimos que tiene una alta cohesión. Cuando esas tareas no están relacionadas, decimos que tiene poca cohesión. Mi mejor intento de explicar el desacoplamiento es que el desacoplamiento es el acto de eliminar el acoplamiento.

Acoplamiento bajo nos ayuda a llegar a una alta cohesión! Recuerde que queremos que nuestro módulo tenga tareas relacionadas y una sola responsabilidad. Pero lo que es el acoplamiento? El acoplamiento es el grado de dependencia de otros módulos para lograr nuestra única responsabilidad para ese módulo. Así que por acoplamiento bajo, estamos diciendo que no somos muy dependientes de módulos externos por lo tanto tenemos alta cohesión.

Sin embargo, si tenemos muchas dependencias a módulos externos, tendríamos un alto acoplamiento y una baja cohesión. ¿Lo pillas?

Otros pensadores y grupos más condecorados dicen:

La cohesión es el grado en que las tareas realizadas por un solo módulo están relacionados funcionalmente."IEEE, 1983" La cohesión es el "pegamento" que mantiene unido un módulo. Puede ser considerado como el tipo de asociación entre los elementos componentes de un módulo. En general, uno quiere el mayor nivel de cohesión posible."Bergland, 1981

Se dice que un componente de software exhibe un alto grado de cohesión si los elementos en esa unidad exhiben un alto grado de relación funcional. Esto significa que cada elemento en la unidad del programa debe ser esencial para esa unidad para lograr su propósito. Sommerville, 1989

 0
Author: hidden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-20 07:55:49

El desacoplamiento permite la separación de la interacción del objeto de las clases y la herencia en distintas capas de abstracción utilizadas para desacoplar la encapsulación polimórfica, que es la práctica de usar código reutilizable para evitar que los módulos de código discretos interactúen entre sí.

 -2
Author: user2716139,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-25 20:04:48