Acoplamento solto vs acoplamento apertado em Java: diferença entre acoplamento solto e acoplamento apertado
Publicados: 2021-05-02Índice
Introdução
Java é uma linguagem de programação orientada a objetos que usa classes e objetos. O acoplamento desempenha um papel vital em Java se você trabalha com classes e objetos na linguagem Java. Acoplamento refere-se ao grau de conhecimento que um elemento em Java tem sobre o outro elemento. É o grau de uso de uma classe por outra classe. Este artigo fornecerá uma compreensão profunda do acoplamento em Java , seus tipos com exemplos.
O que é acoplamento em Java?
O acoplamento nada mais é do que a dependência de uma classe da outra. Se um objeto em um código usa o outro objeto no programa, isso é chamado de acoplamento fraco em Java . No acoplamento, duas classes ou objetos colaboram e trabalham entre si para concluir uma tarefa predefinida. Significa simplesmente que um elemento requer outro elemento para completar uma função. É conhecido como colaboração quando uma classe chama a lógica da outra classe.
Quais são os tipos de acoplamento?
O acoplamento em Java é de dois tipos.
Acoplamento solto em Java
Quando duas classes, módulos ou componentes têm baixa dependência entre si, isso é chamado de acoplamento fraco em Java . Acoplamento fraco em Java significa que as classes são independentes umas das outras. O único conhecimento que uma classe tem sobre a outra classe é o que a outra classe expôs por meio de suas interfaces em baixo acoplamento. Se uma situação requer que os objetos sejam usados de fora, ela é chamada de situação de acoplamento fraco .
Aqui, o objeto pai raramente está usando o objeto e o objeto pode ser facilmente alterado a partir de fontes externas. O acoplamento fraco em Java tem vantagem sobre o acoplamento rígido, pois reduz a manutenção e os esforços do código. Uma mudança em uma classe não requer mudanças na outra classe, e duas classes podem funcionar independentemente.
Exemplo 1: Imagine que você criou duas classes, A e B, em seu programa. A classe A é chamada de volume e a classe B avalia o volume de um cilindro. Se você alterar o volume da classe A, não será forçado a alterar a classe B. Isso é chamado de acoplamento fraco em Java . Quando a classe A requer mudanças na classe B, você tem um acoplamento rígido.
Código
afrouxamento do pacote; classe Volume { public static void main(String args[]) { Cilindro b = novo Cilindro(25, 25, 25); System.out.println(b.getVolume()); } } classe final Cilindro { volume int privado; Cilindro(int comprimento, largura int, altura int) { this.volume = comprimento * largura * altura; } public int getVolume() { volume de retorno; } } |
Explicação: No exemplo acima, a classe A e a classe B são fracamente acopladas.
Exemplo 2
import java.io.IOException; interface Comida { public void display(); } aula de italiano { Alimentos; público italiano(Comida s){ this.s = s; } public void display(){ System.out.println(“Italiano”); s.display(); } } class Chinese implementa Food { chinês público(){} public void display(){ System.out.println(“Chinês”); } } class Mexican implementa Comida { público mexicano(){} public void display(){ System.out.println(“Mexicano”); } } classe pública Teste { public static void main(String args[]) lança IOException { Comida b = new Chinês(); Comida c = new Mexican(); Italiano a = novo Italiano(b); //a.display() imprimirá italiano e chinês um visor(); Italiano a1 = novo Italiano(c); //a.display() imprimirá italiano e mexicano a1.display(); } } |
Saída
italiano chinês italiano mexicano |
Explicação: No exemplo acima, todas as três classes são fracamente acopladas. Significa simplesmente que você pode usar a interface de alimentos para fornecer serviços injetando qualquer um dos serviços implementados.
Obtenha diplomas de Engenharia de Software online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.
Acoplamento apertado
Quando duas classes são altamente dependentes uma da outra, isso é chamado de acoplamento rígido. Ocorre quando uma classe assume muitas responsabilidades ou quando uma mudança em uma classe requer mudanças na outra classe. No acoplamento estreito, um objeto (objeto pai) cria outro objeto (objeto filho) para seu uso. Se o objeto pai souber mais sobre como o objeto filho foi implementado, podemos dizer que o objeto pai e o objeto filho estão fortemente acoplados.
Exemplo: Imagine que você criou duas classes A e B, em seu programa. A classe A é chamada de volume e a classe B avalia o volume de um cilindro. Se você fizer qualquer alteração no volume, as mesmas alterações serão refletidas na classe B. Portanto, podemos dizer que ambas as classes são altamente dependentes uma da outra e estão fortemente acopladas.
Código
embalagem apertada; classe Volume { public static void main(String args[]) { Cilindro b = novo Cilindro(15, 15, 15); System.out.println(b.volume); }} classe Cilindro { volume int público; Cilindro(int comprimento, largura int, altura int) { this.volume = comprimento * largura * altura; }} |
Saída
3375 |
Explicação: No exemplo acima, a classe A e a classe B estão unidas e trabalham umas com as outras como uma equipe.
Diferenças entre acoplamento solto e acoplamento apertado
A tabela a seguir lista as diferenças entre acoplamento solto e acoplamento apertado.
Acoplamento solto | Acoplamento apertado |
Os objetos são independentes uns dos outros. | Um objeto depende do outro objeto para concluir uma tarefa. |
Melhor testabilidade | A testabilidade não é tão boa quanto o baixo acoplamento em Java . |
Comunicação assíncrona | Comunicação síncrona |
Menos coordenação. Trocar código entre duas classes não é fácil. | Proporciona melhor coordenação. Você pode facilmente trocar o código entre dois objetos. |
Nenhum conceito de interface | Segue os princípios GOF para interface |
Menos fluxo de informações | Mais fluxo de informações |
Altamente mutável | Não tem a capacidade de mudança. |
Conclusão
Em poucas palavras, o acoplamento fraco em Java é muito melhor em comparação com o acoplamento rígido. Ele fornece melhor flexibilidade e reutilização de código. Como as duas classes são independentes uma da outra, as alterações no código são muito fáceis. Ele também fornece melhor testabilidade.
Se você estiver interessado em aprender mais sobre desenvolvimento de software, confira Master of Science in Computer Science da LJMU, que é projetado para profissionais que trabalham e oferece mais de 12 projetos e atribuições, 1-ON-1 com mentores da indústria, mais de 500 horas de aprendizado.