Che cos'è la composizione in Java? Con Esempi

Pubblicato: 2023-01-27

Sommario

Nozioni di base sull'associazione in Java:

L'associazione può essere definita in Java come un'interconnessione tra due singole classi utilizzando i loro oggetti distinti. I tipi di relazioni gestite dall'associazione Java sono:

  • One-to-one: esiste una sola classe derivata per ogni classe genitore.
  • Uno-a-molti: una singola classe genitore può avere più di una classe figlia.
  • Molti-a-uno: una singola classe figlia può essere associata a più di una superclasse.
  • Molti-a-molti: un numero di classi padre può essere associato a una singola classe figlia e un numero maggiore di classi figlie può essere associato a una singola classe genitore.

Una volta stabilita la relazione, le classi derivate comunicano con le rispettive classi base per riutilizzarne caratteristiche e proprietà. Esistono due tipi di associazione in Java. Sono aggregazione e composizione.

L'aggregazione in Java è un processo più generalizzato rispetto alla composizione. Queste forme si basano sul tipo di relazione supportata tra le classi.

Introduzione alla composizione in Java:

Una tecnica di progettazione in Java che implementa una relazione Has-A viene definita composizione. Il processo di ereditarietà viene utilizzato per riutilizzare il codice. La composizione in Java può essere realizzata utilizzando una variabile di istanza che fa riferimento ad altri oggetti. Se un oggetto costituisce un altro oggetto in modo tale che l'oggetto costituente non può esistere senza la sopravvivenza dell'oggetto principale, il tipo di relazione è chiamato composizione. Nello specifico, la composizione è un aspetto che descrive il riferimento tra due o più classi con l'ausilio di variabili di istanza. Qui, l'istanza dovrebbe essere creata prima di utilizzare le variabili istantanee. Facciamo un esempio di Biblioteca per una chiara comprensione del concetto di 'composizione'.

Esistono numerosi libri in una biblioteca. Ogni libro ha autori e titoli separati. La biblioteca dovrebbe anche contenere un elenco di riferimento di libri. La biblioteca ha anche diversi libri relativi allo stesso argomento o argomenti diversi. Qui la libreria corrisponde alla classe principale e i libri possono essere correlati alla classe derivata. L'associazione o il rapporto tra i libri e la biblioteca può essere considerato come composizione. Questo perché la classe "Libri" dipende completamente dalla libreria di classi. Ad esempio, se la biblioteca viene distrutta, vengono distrutti anche tutti i libri in essa contenuti.

Dai un'occhiata ai nostri corsi di tecnologia gratuiti per avere un vantaggio sulla concorrenza.

Esplora i nostri famosi corsi di ingegneria del software

Master of Science in Computer Science presso LJMU e IIITB Programma di certificazione della sicurezza informatica Caltech CTME
Bootcamp di sviluppo completo dello stack Programma PG in Blockchain
Programma Executive PG in sviluppo Full Stack
Visualizza tutti i nostri corsi di seguito
Corsi di ingegneria del software

Una descrizione dettagliata di Composizione in Java:

La composizione è una forma di associazione Java. Le due classi comunicanti sono fortemente interconnesse, dove la classe derivata è completamente dipendente dalla classe genitore. L'esistenza indipendente della classe derivata non è possibile in questo caso. Ad esempio, un motore senza un'auto non può esistere indipendentemente. Questo tipo di associazione è molto limitato rispetto all'aggregazione. La composizione è una tecnica di progettazione e non deve essere confusa con una funzionalità Java.

La composizione può essere utilizzata per modellare oggetti che hanno altri oggetti come membri costitutivi. Esiste la relazione ha-a tra questi oggetti. In questo tipo di associazione, un oggetto contiene l'altro oggetto. Quindi, l'oggetto costituente dipende completamente dall'oggetto principale per la sua sopravvivenza. Quindi, se l'oggetto contenitore è rovinato, anche l'oggetto costitutivo ne risente. Pertanto, il rapporto di composizione può essere visto come una parte del rapporto di tutto in cui l'esistenza della parte senza il tutto non è possibile. In altre parole, la parte viene automaticamente cancellata alla cancellazione del tutto. Ciò implica che il tutto ha una solida relazione con la parte.

Impara i corsi di sviluppo software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzata o programmi di master per accelerare la tua carriera.

Competenze di sviluppo software richieste

Corsi JavaScript Corsi Java di base Corsi di strutture dati
Corsi Node.js Corsi SQL Corsi di sviluppo full stack
Corsi NFT Corsi DevOps Corsi sui Big Data
Corsi React.js Corsi di sicurezza informatica Corsi di cloud computing
Corsi di progettazione di database Corsi Python Corsi di criptovaluta

In che modo l'ereditarietà è diversa dalla composizione in Java?

È importante notare che la funzionalità dell'ereditarietà può essere realizzata anche utilizzando la composizione in Java. Sebbene sia l'ereditarietà che la composizione siano usate per offrire la riusabilità del codice da parte della relativa classe, ci sono sottili differenze tra queste due. La principale differenza tra i due processi è che la composizione è una tecnica di progettazione, a differenza dell'ereditarietà che è una caratteristica di Java. Altre importanti differenze tra i due sono elencate nella tabella seguente.

Parametro

Composizione

Eredità

Di base Incorpora una relazione HAS-A. Incorpora una relazione IS-A.
Riutilizzo del codice Il codice può essere riutilizzato in più classi. Il riutilizzo del codice è possibile solo in una classe perché solo un'interfaccia può essere estesa da una classe.
Scopo Può essere facilmente realizzato in fase di esecuzione. Le funzionalità vengono realizzate meglio in fase di compilazione.
Finale Facilita il riutilizzo del codice anche dalle classi finali. Il codice delle classi finali non può essere riutilizzato in caso di ereditarietà.
Metodi I metodi non sono esposti. Le interfacce pubbliche vengono utilizzate per la loro interazione. L'ereditarietà espone entrambi i metodi protetti e pubblici della classe di base.

Differenze tra aggregazione e composizione:

Aggregazione

Composizione

È un tipo di associazione Java debole. È un tipo di associazione più forte rispetto all'aggregazione.
La classe derivata è indipendente dalla classe base. Pertanto, la classe derivata può continuare a esistere anche se la classe base viene distrutta. La classe derivata dipende completamente dalla classe base. Pertanto, la sottoclasse non può esistere se la superclasse viene distrutta.
La classe figlio ha una propria durata. La durata della classe figlia dipende dalla classe genitore.
La classe genitore usa la classe figlia in questo tipo di associazione. Pertanto, la classe derivata non è di proprietà della classe base. In questo tipo di associazione, la classe padre possiede la classe figlia. Quindi, la classe genitore è la proprietaria della classe figlia.
Costituisce una relazione HAS-A. La classe derivata ha una classe base. Costituisce una parte della relazione. La classe derivata fa parte della classe base.
La parola chiave final non viene utilizzata per indicare l'aggregazione. La parola chiave finale può essere utilizzata per indicare la composizione.
Esempio: L'auto ha un conducente. Esempio: il motore è una parte dell'auto.

Leggi i nostri articoli popolari relativi allo sviluppo software

Come implementare l'astrazione dei dati in Java? Cos'è la classe interna in Java? Identificatori Java: definizione, sintassi ed esempi
Comprensione dell'incapsulamento in OOPS con esempi Spiegazione degli argomenti della riga di comando in C Le 10 principali funzionalità e caratteristiche del cloud computing nel 2022
Polimorfismo in Java: concetti, tipi, caratteristiche ed esempi Pacchetti in Java e come usarli? Tutorial Git per principianti: impara Git da zero

Vantaggi dell'utilizzo della composizione in Java:

  • La composizione facilita il riutilizzo del codice Java.
  • Sebbene le eredità multiple non siano supportate da Java, il divario può essere colmato da questa tecnica di progettazione.
  • Con l'uso della composizione, una classe può essere testata per l'abilità in un modo migliore.
  • Il codice è reso più flessibile con l'uso della composizione. L'implementazione della classe composta può essere sostituita con una versione migliorata.
  • I membri dell'oggetto possono essere modificati in fase di esecuzione per il cambiamento dinamico del comportamento del programma con l'uso di una relazione di composizione.

Limitazioni della composizione in Java:

Ci sono alcuni svantaggi nell'usare la composizione in Java. Il principale svantaggio della composizione dell'oggetto è che è più difficile per l'utente comprendere il comportamento del sistema implementato solo riflettendo sul codice sorgente. Un sistema che utilizza la composizione degli oggetti è di natura altamente dinamica. Quindi, comprendere il funzionamento dei sistemi che utilizzano la composizione degli oggetti richiede un'analisi più approfondita del codice sorgente e l'esecuzione del codice per testimoniare il funzionamento e la cooperazione tra i singoli oggetti nel codice sorgente.

Se sei interessato a saperne di più su Java, sviluppo di software full-stack, dai un'occhiata al Programma PG esecutivo di Grad & IIIT-B in Sviluppo software - Specializzazione nello sviluppo di stack completo, progettato per professionisti che lavorano e offre oltre 500 ore di formazione rigorosa , 9+ progetti e incarichi, status di Alumni IIIT-B, pratici progetti capstone pratici e assistenza lavorativa con le migliori aziende.

Vuoi condividere questo articolo?

Preparati per una carriera del futuro

Candidati ora per i master in ingegneria del software