Acoplamento e Coesão


Acoplamento

Acoplamento é o degrau em que uma classe conhece sobre os membros de outra classe. Se o único conhecimento que a classe A tem sobre a classe B, é que a classe B foi exposta através de sua interface, então as classes A e B são fracamente acopladas, que é uma coisa boa. Se, por outro lado, a classe A se baseia em partes da classe B que não fazem parte da interface de B, então elas são bastante acopladas, o que não é uma coisa boa. Em outras palavras, se A sabe mais do que deveria sobre a forma como B foi implementada, então A e B estão bastante ligadas.
Dessa forma, supondo que o desenvolvedor queira fazer uma melhoria na classe B, que não tem conhecimento da classe A; nesse caso, ele tentará não alterar qualquer código que faça parte da implementação da sua interface, que ele já conhece; assim, ele irá alterar apenas os códigos que não façam parte dessa implementação, o que leva a quebra da classe A, pois são exatamente esses códigos que A conhece.
O extremo oposto também é ruim, ou seja, quando a classe A não sabe absolutamente nada sobre a classe B, e a classe B não sabe absolutamente nada sobre a classe A. Se as classes são sempre alteradas, existe a chance de a outra classe quebrar. Isso é chamado de encapsulamento pobre.
Acoplamento fraco é o estado desejável de ter classes que sejam bem encapsuladas, minimizar as referências a si, e limitar a amplitude do uso da API. Acoplamento forte é o estado indesejável de ter classes que quebram as regras do acoplamento fraco.

Coesão

Enquanto o acoplamento tem a ver com a forma como as classes interagem umas com as outras, a coesão é sobre como uma classe é projetada. A coesão indica o grau em que uma classe tem uma finalidade única e bem orientada. Isso quer dizer que quanto mais focalizada for a classe, maior a sua coesão, o que é uma coisa boa. O principal benefício da alta coesão é que normalmente tais classes são mais fáceis de manter (e menos freqüentemente alteradas) do que as classes com baixa coesão. Outro benefício da coesão alta é que as classes bem focalizadas tendem a ser mais reutilizadas.
Alta coesão é o estado desejável de uma classe cujos membros suportam uma única regra ou responsabilidade bem focada. Baixa coesão é o estado indesejável de uma classe cujos membros suportam múltiplas regras ou responsabilidades desfocadas.



Fonte: SCJP Sun Certifi ed Programmer for Java 6 Study Guide

0 comentários:

Postar um comentário