Diferença entre acoplamento e coesão

Anonim

Coupling vs Cohesion

O acoplamento e a coesão são dois conceitos encontrados em Java (e em todos os outros idiomas orientados a objetos). O acoplamento mede o quanto cada um dos módulos do programa depende dos outros módulos do programa. A coesão mede quão fortemente cada uma das funções está relacionada dentro de um módulo. Na verdade, qualquer linguagem orientada a objetos (incluindo Java) tem os dois principais objetivos de aumentar a coesão e diminuir o acoplamento ao mesmo tempo, a fim de desenvolver programas mais eficientes. Essas duas métricas de engenharia de software foram desenvolvidas por Larry Constantine para reduzir o custo de modificar e manter o software.

O que é Cohesão?

A coesão mede quão fortemente cada uma das funções está relacionada dentro de um módulo de programa. Classes bem estruturadas levam a programas altamente coesos. Se uma certa classe estiver executando um conjunto de funções altamente relacionadas, essa classe é dita ser coesa. Por outro lado, se uma classe estiver executando um monte de funcionalidades totalmente não relacionadas, o que significa que a classe não é coesa. É importante entender que não ter coesão não significa que a aplicação geral não tenha a funcionalidade necessária. É só isso sem coesão, será muito difícil administrar a funcionalidade, porque serão espalhados em muitos lugares errados à medida que a complexidade do aplicativo aumentar ao longo do tempo. Manter, modificar e ampliar comportamentos espalhados por todo o código é muito tedioso, mesmo para a maioria dos programadores de experiência.

O que é Coupling?

O acoplamento mede o quanto cada um dos módulos do programa depende dos outros módulos do programa. As interações entre dois objetos ocorrem porque há acoplamento. Programas flexíveis são altamente flexíveis e extensíveis. O acoplamento forte nunca é bom porque um objeto pode ser altamente dependente de algum outro objeto. Este é um pesadelo quando o código é modificado, porque o alto acoplamento significa que os programadores precisam trabalhar em vários locais de código até mesmo para uma única modificação comportamental. Um forte acoplamento sempre leva a programas com pouca flexibilidade e menor escalabilidade / extensibilidade. No entanto, em linguagens de programação como Java, evitar completamente o acoplamento é impossível. Mas é recomendável que os programadores dêem o melhor esforço para reduzir o acoplamento, tanto quanto possível. Também é possível ter algum acoplamento para ajudar os objetos a interagir uns com os outros, sem prejudicar sua escalabilidade e flexibilidade.

Qual a diferença entre o acoplamento e a coesão?

Embora o acoplamento e a coesão lidam com a qualidade de um módulo de engenharia de software, eles são conceitos inteiramente diferentes.Coesão fala sobre o quanto a funcionalidade está relacionada um com o outro dentro do módulo, enquanto o acoplamento trata de quanto um módulo depende dos outros módulos do programa dentro do aplicativo completo. Para ter o melhor software de qualidade, a coesão e o acoplamento devem atingir as duas extremidades opostas de seus espectros. Em outras palavras, o acoplamento solto e a forte coesão fornecem o melhor software. Ter campos privados, classes não públicas e métodos privados fornecem acoplamento solto, ao mesmo tempo em que todos os membros são visíveis dentro da classe e ter o pacote como a visibilidade padrão proporcionam alta coesão.