Accoppiamento allentato vs accoppiamento stretto in Java: differenza tra accoppiamento allentato e accoppiamento stretto

Pubblicato: 2021-05-02

Sommario

introduzione

Java è un linguaggio di programmazione orientato agli oggetti che utilizza classi e oggetti. L'accoppiamento gioca un ruolo fondamentale in Java se si lavora con classi e oggetti nel linguaggio Java. L'accoppiamento si riferisce al grado di conoscenza che un elemento in Java ha sull'altro elemento. È il grado di utilizzo di una classe da parte di un'altra classe. Questo articolo ti fornirà una comprensione approfondita dell'accoppiamento in Java , dei suoi tipi con esempi.

Che cos'è l'accoppiamento in Java?

L'accoppiamento non è altro che la dipendenza di una classe dall'altra. Se un oggetto in un codice utilizza l'altro oggetto nel programma, in Java viene chiamato accoppiamento libero . In accoppiamento, due classi o oggetti collaborano e lavorano tra loro per completare un'attività predefinita. Significa semplicemente che un elemento richiede un altro elemento per completare una funzione. È noto come collaborazione quando una classe chiama la logica dell'altra classe.

Quali sono i tipi di accoppiamento?

L'accoppiamento in Java è di due tipi.

Accoppiamento sciolto in Java

Quando due classi, moduli o componenti hanno una bassa dipendenza l'uno dall'altro, in Java viene chiamato accoppiamento libero . L'accoppiamento sciolto in Java significa che le classi sono indipendenti l'una dall'altra. L'unica conoscenza che una classe ha sull'altra classe è ciò che l'altra classe ha esposto attraverso le sue interfacce in accoppiamento libero. Se una situazione richiede l'utilizzo di oggetti dall'esterno, viene definita situazione di accoppiamento libero .

In questo caso, l'oggetto padre utilizza raramente l'oggetto e l'oggetto può essere facilmente modificato da fonti esterne. L' accoppiamento libero in Java ha un vantaggio sull'accoppiamento stretto poiché riduce la manutenzione e gli sforzi del codice. Una modifica in una classe non richiede modifiche nell'altra classe e due classi possono funzionare in modo indipendente.

Esempio 1: Immagina di aver creato due classi, A e B, nel tuo programma. La classe A è chiamata volume e la classe B valuta il volume di un cilindro. Se modifichi il volume di classe A, non sei obbligato a cambiare la classe B. Questo è chiamato accoppiamento libero in Java . Quando la classe A richiede cambiamenti nella classe B, allora hai un accoppiamento stretto.

Codice

pacchetto di accoppiamento lasco;

volume della classe {

public static void main(String args[]) {

Cilindro b = nuovo Cilindro(25, 25, 25);

System.out.println(b.getVolume());

}

}

classe finale Cilindro {

volume interno privato;

Cilindro(lunghezza int, larghezza int, altezza int) {

this.volume = lunghezza * larghezza * altezza;

}

public int getVolume() {

volume di ritorno;

}

}

Spiegazione: Nell'esempio sopra, la classe A e la classe B sono accoppiate in modo lasco.

Esempio 2

import java.io.IOException;

interfaccia Cibo {

display vuoto pubblico();

}

classe italiana {

Alimenti;

pubblico italiano(Food s){

questo.s = s;

}

visualizzazione vuota pubblica(){

System.out.println(“Italiano”);

sul display();

}

}

classe cinese implementa Cibo {

cinese pubblico(){}

visualizzazione vuota pubblica(){

System.out.println("Cinese");

}

}

classe Messicana implementa Cibo {

messicano pubblico(){}

visualizzazione vuota pubblica(){

System.out.println("Messicano");

}

}

prova di classe pubblica {

public static void main(String args[]) genera IOException {

Cibo b = nuovo cinese();

Cibo c = nuovo messicano();

Italiano a = nuovo italiano(b);

//a.display() stamperà italiano e cinese

un display();

Italiano a1 = nuovo italiano(c);

//a.display() stamperà italiano e messicano

a1.display();

}

}

Produzione

italiano

Cinese

italiano

messicano

Spiegazione: Nell'esempio sopra, tutte e tre le classi sono accoppiate in modo lasco. Significa semplicemente che puoi utilizzare l'interfaccia del cibo per fornire servizi iniettando uno qualsiasi dei servizi implementati.

Ottieni lauree in Ingegneria del Software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Accoppiamento stretto

Quando due classi sono fortemente dipendenti l'una dall'altra, si parla di accoppiamento stretto. Si verifica quando una classe si assume troppe responsabilità o quando un cambiamento in una classe richiede cambiamenti nell'altra classe. In stretto accoppiamento, un oggetto (oggetto genitore) crea un altro oggetto (oggetto figlio) per il suo utilizzo. Se l'oggetto genitore sa di più su come è stato implementato l'oggetto figlio, possiamo dire che l'oggetto genitore e figlio sono strettamente accoppiati.

Esempio: Immagina di aver creato due classi A e B, nel tuo programma. La classe A è chiamata volume e la classe B valuta il volume di un cilindro. Se apporti modifiche al volume, le stesse modifiche si rifletteranno nella classe B. Quindi, possiamo dire che entrambe le classi dipendono fortemente l'una dall'altra e sono strettamente accoppiate.

Codice

pacchetto di accoppiamento stretto;

volume della classe {

public static void main(String args[]) {

Cilindro b = nuovo Cilindro(15, 15, 15);

System.out.println(b.volume);

}}

classe Cilindro {

volume interno pubblico;

Cilindro(lunghezza int, larghezza int, altezza int) {

this.volume = lunghezza * larghezza * altezza; }}

Produzione

3375

Spiegazione: Nell'esempio sopra, la classe A e la classe B sono legate insieme e lavorano insieme come una squadra.

Differenze tra accoppiamento allentato e accoppiamento stretto

La tabella seguente elenca le differenze tra accoppiamento libero e accoppiamento stretto.

Accoppiamento lasco Accoppiamento stretto
Gli oggetti sono indipendenti l'uno dall'altro. Un oggetto dipende dall'altro oggetto per completare un'attività.
Migliore testabilità La testabilità non è eccezionale come l' accoppiamento libero in Java .
Comunicazione asincrona Comunicazione sincrona
Meno coordinamento. Lo scambio di codice tra due classi non è facile. Fornisce un migliore coordinamento. Puoi facilmente scambiare codice tra due oggetti.
Nessun concetto di interfaccia Segue i principi GOF per interfacciarsi
Meno flusso di informazioni Ulteriori informazioni sul flusso
Altamente mutevole Non ha la capacità di cambiamento.

Conclusione

In poche parole, l' accoppiamento libero in Java è molto migliore rispetto all'accoppiamento stretto. Fornisce una migliore flessibilità e riutilizzabilità del codice. Poiché le due classi sono indipendenti l'una dall'altra, le modifiche al codice sono molto semplici. Fornisce inoltre una migliore testabilità.

Se sei interessato a saperne di più sullo sviluppo del software, dai un'occhiata al Master of Science in Computer Science di LJMU, progettato per professionisti che lavorano e offre 12+ progetti e incarichi, 1-ON-1 con mentori del settore, oltre 500 ore di apprendimento.

Prepararsi per una carriera del futuro

Richiedi il Master of Science in Machine Learning e AI