Diferença entre Acoplamento (Coupling) e Coesão (Cohesion)
1 resposta
jcnborges
Prezado(s),
No livro SCJP For Java SE 6 da Kathy Sierra, ela descreve dois conceitos no final do Capítulo 2: Acoplamento (Coupling) e Coesão (Cohesion). Eu li a explicação e não entendi muito bem a diferença entre os dois. Alguém poderia me explicar melhor esses conceitos, principalmente a diferença entre eles? Obrigado!!!
Acoplamento pode ser definido como a dependência entre duas classes. Se são muito dependentes, o comportamento de uma interfere na de outra , diz-se que elas tem alto acoplamento , o que não é muito desejado em um projeto de software. As classes , se bem definidas, precisam ser independentes umas das outras , por outra precisam ter acoplamento fraco ( baixo) .
Já Coesão pode ser definido como a responsabilidade de uma classe . Se ela foi definida para fazer cálculo do tipo soma , não faz sentido fazer outros cálculos como multiplicação e derivada.
O ideal é que a classe seja altamente coesa, isto é, seja criada para apenas uma funcionalidade. Outras funcionalidades que não sejam inerentes ao seu papel devem ser usadas através de serviços de outras classes.