Função(Acoplamento e Coesão)

2 respostas
G

Pessoal eu estava estudando POO, e apareceram estes dois tópicos. Eles são semelhantes em função? Tipo, Coesão fala em designer de classe e acoplamento tambem. E outra, estes dois falam em graus de entendimento de classe! Então, eu entendi assim:

Uma classe perfeita tem que ter uma alta Coesão e um baixo acoplamento. Isto tá correto? Senão tiver, qual é a função delas?
Obrigado!

2 Respostas

S

Coesão reference à capacidade da classe ou função fazer o seu trabalho.
É um parametro complexo, mas quanto maior melhor. Representa o quanto eu tenho que mexer na classe para entender um bug , descobirr um erro ou colocar mais funcionalidades. Coesão = eficiencia + simplicidade. Por isso, maior é melhor.
Acoplamento reference à dependencia que a classe tem de outras classes.
Quanto mais a classe depender das funções de outras classe, pior. Por isso , quanto menor, melhor. Acoplamente relaciona-se o quanto eu tenho que mudar noutras classes que usam esta classe se eu musar esta classe. O uso de interfaces e fabricas (chamado tb de inversão de dependencia)diminui o acomplamento.

Acoplar reference-se a quão boa a classe é na relação com outras, coesão reference a quão boa ela é por si mesma.
Alta coesão significa que a classe é eficiente, é simples de usar , entender e manter. Sobretudo manter. Baixo acoplamento significa que a classe conhece o minimo necessário das outras classes que usa.

W

Coesão é a capacidade de uma classe em cumprir seu papel. Se você cria uma classe bicicleta, ela deverá possuir todos os métodos e variáveis pertinentes à uma bicicleta, nem mais, nem menos. O que aconteceria se um método de roda ficasse na classe bicicleta? Código mais complicado e mais difícil de se entender.

Acoplamento é a dependência de uma classe com outra. Quanto mais dependente for uma classe de uma outra classe especifica, mais dificil fica a manutenção do código, pois uma alteração nesta última significa em mudanças também na sua dependente. Imagine que você irá utilizar uma estrutura de dados do tipo lista e resolva usar a ArrayList. Você conhece as limitações da ArrayList, limitações não expostas na interface pública dessa classe, logo realiza alguns truques pra contorná-las. Meses mais tarde, você recebe uma nota do cara do QA que seria bom utilizar a LinkedList… E agora? Mudança em todos os códigos… O ideal teria sido utilizar desde o início a interface List, mesmo senão houvesse a mudança, pois ela iria (1) limitar a quantidade de métodos disponíveis e (2) definir apenas o papel da classe que ali estaria, uma Collection do tipo List. Exatamente qual, não interressa, pois seu código apenas precisava disto em primeiro lugar.

Waocnek

Criado 25 de dezembro de 2006
Ultima resposta 28 de dez. de 2006
Respostas 2
Participantes 3