Che cos'è la composizione in Java con esempi

Pubblicato: 2022-11-19

La versatilità del linguaggio di programmazione Java consente il riutilizzo del codice riducendo la duplicità tra le classi. Java facilita il riutilizzo del codice costruendo relazioni tra le classi e queste relazioni sono di due tipi: ereditarietà e associazione. Mentre l'ereditarietà ci consente di implementare una relazione is-a e di creare una nuova classe da una classe esistente, l'associazione o la relazione has-a garantisce la riusabilità del codice.

La relazione has-a è ulteriormente suddivisa in due categorie: aggregazione e composizione in Java . Questo articolo esplorerà il concetto di composizione in Java e ti aiuterà a comprenderne i fondamenti con esempi.

Sommario

Una panoramica delle relazioni in Java

Le relazioni in Java si riferiscono ai diversi modi in cui le classi sono correlate. In generale, ci sono due tipi di relazioni in Java:

  • È-una relazione
  • Ha una relazione

Composizione in Java

Fonte

È una relazione (eredità)

La funzione di ereditarietà in Java ci consente di implementare relazioni is-a. In questo caso, una classe eredita un'altra classe. Ad esempio, se una classe "Fiore" eredita un'altra classe, "Giglio", possiamo dire che la classe "Giglio" ha una relazione è-a con "Fiore". Implica anche che Lily sia un fiore.

Esempio: Lily "è un" fiore, il computer "è un" dispositivo e così via.

Ha una relazione (Associazione)

Una relazione has-a indica che una classe utilizza l'istanza di un'altra classe e tale relazione in Java è chiamata associazione. Ad esempio, se una classe P contiene il riferimento di un'altra classe Q, ciò implica che P può accedere a tutte le proprietà della classe Q.

Esempio: il computer "ha un" processore, l'ape "ha un" pungiglione, ecc.

Un'associazione in Java è una relazione tra due classi discrete che utilizzano i loro oggetti. La relazione può essere dei seguenti tipi:

  • Uno-a-molti: un oggetto si associa a più oggetti.
  • Uno a uno: un oggetto si associa a un singolo oggetto.
  • Molti-a-molti: molti oggetti si associano ad altri oggetti multipli.
  • Molti-a-uno: molti oggetti si associano a un oggetto.

L'associazione è di due tipi: aggregazione e composizione.

Composizione in Java

La composizione in Java è una tecnica di progettazione per implementare relazioni has-a tra classi. In questa associazione, una classe contiene un'altra classe. Inoltre, la classe contenuta si basa sulla classe che la contiene e non può esistere indipendentemente. In altre parole, una classe include un'altra classe con funzionalità interdipendenti.

Ad esempio, una classe "Car" contiene le classi "Engine" e "Battery". Pertanto, "Car" ha una relazione con "Engine" e "Battery", e gli ultimi due non possono esistere indipendentemente senza "Car".

Consideriamo un altro esempio di vita reale. Un corpo umano ha i reni e gli organi non possono esistere senza un corpo umano. Quindi, se pensiamo che 'Umano' sia una classe con una relazione ha-una con la classe 'Reni', è composizione nell'esempio Java poiché i reni non possono esistere indipendentemente senza un corpo umano.

Webinar esclusivo sullo sviluppo software di upGrad per te -

SAAS Business: cosa c'è di così diverso?

Esempio di implementazione della composizione in Java

Consideriamo ora il seguente programma che dimostra il concetto di composizione in Java . Lo suddivideremo in passaggi per una migliore comprensione.

Passaggio 1: nel primo passaggio, creeremo una classe "Car" e dichiareremo e definiremo metodi e membri di dati.

auto di classe

{

// dichiara membri dati e metodi

colore della stringa privato;

velocità int privato;

public void carCaratteristiche()

{

System.out.println(“Colore Auto= “+colore + ” Velocità Massima= ” + velocità);

}

public void setColor(Colore stringa)

{

this.color = colore;

}

public void setspeed(int speed)

{

this.speed = velocità;

}

}

Passaggio 2: Successivamente, creeremo una classe "Fiat" che estende la classe precedente "Auto". La classe 'Fiat' utilizza il metodo start() dell'oggetto classe FiatEngine attraverso la composizione, il che implica che la classe 'Fiat' 'ha-un' FiatEngine. Fiat è un'auto, quindi si estende dalla classe "Auto".

classe Fiat estende Vettura

{

//eredita tutte le proprietà della classe Car

public void setStart()

{

FiatEngine e = nuovo FiatEngine();

e.start();

}

}

Passaggio 3: nel passaggio successivo del programma di composizione Java, creeremo una classe FiatEngine attraverso la quale utilizzeremo l'oggetto di classe nella classe precedente "Fiat".

classe FiatMotore

{

public void start()

{

System.out.println("Il motore è stato avviato.");

}

public void stop()

{

System.out.println("Il motore si è fermato.");

}

}

Passaggio 4: nel passaggio finale del programma, creeremo una classe CompositionExample, creeremo un oggetto della classe "Fiat" e lo inizializzeremo.

class ComposizioneEsempio

{

public static void main(String[] args)

{

Fiat f = nuova Fiat();

f.setColor(“Nero”);

f.setspeed(175);

f.carFeatures();

h.setStart();

}

}

Produzione:

Colore auto= Nero Velocità massima= 175

Il motore è stato avviato.

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.

Aggregazione e composizione in Java

L'aggregazione e la composizione in Java sono i due tipi di relazioni has-a, entrambe diverse in termini di dipendenza tra le classi. Nell'aggregazione, le classi contenitore e riferimento hanno un'esistenza indipendente, mentre una classe riferimento composizione cessa di esistere senza una classe contenitore. Pertanto, una classe di riferimento dipende dalla sua classe contenitore nella composizione.

Ecco un esempio reale per comprendere la differenza tra aggregazione e composizione in Java . Un'auto ha varie parti come motore, freni, batteria, fari, lettore musicale, ecc. Sebbene l'auto possa funzionare senza un lettore musicale, non può funzionare senza parti essenziali come un motore o una batteria. Quindi, possiamo dire che l'auto e il lettore musicale hanno un rapporto di aggregazione mentre il motore e l'auto hanno un rapporto di composizione.

Quali sono i vantaggi dell'utilizzo della composizione in Java?

Ora che hai una comprensione fondamentale del concetto di composizione in Java, ecco una panoramica dei vantaggi di questa tecnica:

  • La composizione in Java facilita la riusabilità del codice.
  • La composizione in Java ci consente di controllare la visibilità di altri oggetti alle classi client e riutilizzare ciò di cui abbiamo bisogno.
  • Sebbene Java non supporti eredità multiple, possiamo aggirare il problema usando la composizione.
  • La composizione in Java è flessibile e ci consente di modificare gli oggetti membri in fase di esecuzione per alterare il comportamento del programma.
  • La composizione Java offre una migliore testabilità della classe, una caratteristica particolarmente utile nello sviluppo guidato dai test.
  • Un progetto basato sulla composizione ha meno classi.

Corsi e articoli popolari sull'ingegneria del software

Programmi popolari
Programma PG esecutivo in sviluppo software - IIIT B Programma di certificazione Blockchain - PURDUE Programma di certificazione della sicurezza informatica - PURDUE Laurea Magistrale in Informatica - IIIT B
Altri articoli popolari
Stipendio per Cloud Engineer negli Stati Uniti 2021-22 Stipendio di AWS Solution Architect negli Stati Uniti Stipendio per sviluppatori di backend negli Stati Uniti Stipendio per sviluppatore front-end negli Stati Uniti
Salario per sviluppatore web negli Stati Uniti Domande dell'intervista allo Scrum Master nel 2022 Come iniziare una carriera nella sicurezza informatica nel 2022? Opzioni di carriera negli Stati Uniti per studenti di ingegneria

Conclusione

La composizione in Java è una tecnica eccellente se la relazione tra le classi è has-a e stai cercando di riutilizzare il codice. Riassumendo, ecco alcuni punti chiave che devi ricordare sulla composizione in Java:

  • La composizione in Java rappresenta una relazione has-a.
  • Nella composizione, una classe contiene un'altra classe e la classe contenuta si basa sulla classe che la contiene e non può esistere indipendentemente.
  • Entrambe le entità in un'associazione di composizione dipendono l'una dall'altra.
  • Possiamo ottenere la composizione in Java attraverso una variabile di istanza che fa riferimento ad altri oggetti.

Migliora la tua carriera con il programma Executive PG di upGrad nello sviluppo software

Lo sviluppo di software è una delle opzioni di carriera più redditizie per i giovani professionisti. Se sei già nel settore o stai cercando di iniziare, devi iscriverti al programma Executive PG di upGrad in Sviluppo software . Il programma ti insegna le competenze richieste e i dieci linguaggi e strumenti di programmazione più remunerativi . Puoi scegliere tra quattro specializzazioni, tra cui Blockchain Development, Full Stack Development, DevOps e Cloud Backend Development.

Oltre a imparare i linguaggi di programmazione più pagati , puoi lavorare su oltre 30 case study e progetti. I docenti di livello mondiale tengono lezioni dal vivo e sessioni online per il corso. Il supporto agli studenti è disponibile 24 ore su 24.

Candidati ora per ottenere l'ammissione al corso al più presto!

Che cos'è la composizione e l'ereditarietà in Java?

Composizione ed ereditarietà in Java sono due tecniche di programmazione per stabilire relazioni tra oggetti e classi. La composizione rappresenta una relazione has-a con una classe che contiene un'altra classe. D'altra parte, l'ereditarietà presenta una relazione è-una con una classe che acquisisce le proprietà e il comportamento di un'altra classe.

Qual è lo scopo della composizione in Java?

La composizione in Java consente la riusabilità del codice e fornisce una migliore testabilità di una classe. Sebbene Java non supporti eredità multiple, la composizione fornisce un modo per farlo.

La composizione è un OOP?

La composizione è un concetto fondamentale nella programmazione orientata agli oggetti. Descrive una relazione has-a in cui una classe fa riferimento a uno o più oggetti di altre classi tramite variabili di istanza.