Cos'è la composizione in Java con esempi

Pubblicato: 2021-04-09

Java è un linguaggio versatile che supporta la programmazione orientata agli oggetti e la riutilizzabilità del codice con la creazione di relazioni tra due classi. Esistono due tipi di relazioni o associazioni in Java utilizzate per riutilizzare un codice e ridurre la duplicità da una classe all'altra.

Queste relazioni sono IS-A(Ereditarietà) e HAS-A (Associazione). Sebbene vi sia uno stretto accoppiamento tra le classi IS-A, le classi HAS-A sono accoppiate in modo lasco e sono più preferibili per i programmatori.

La relazione HAS-A è divisa in due tipi, vale a dire, aggregazione e composizione in Java . Questo articolo si basa sul concetto di composizione OOP . Vedremo molti esempi di vita reale di come viene codificata la composizione e dei vantaggi ottenuti una volta implementata.

Sommario

Una breve narrazione di associazioni o relazioni in Java

Nella programmazione orientata agli oggetti, gli oggetti sono correlati tra loro e utilizzano la funzionalità comune tra loro. È qui che arrivano gli argomenti di Ereditarietà, Associazione, Aggregazione e Composizione nei programmi Java .

Ereditarietà (IS-A) e Associazione (HAS-A) in Java

1. Ereditarietà (IS-A)

Una relazione IS-A significa che un oggetto è un tipo di un altro. Viene implementato utilizzando le parole chiave "estende" e "implementa".

Esempio: laptop HP IS-A

2. Associazione (HAS-A)

Una relazione HAS-A significa che una classe ha una relazione con un'altra classe. Ad esempio, la Classe A contiene il riferimento della Classe B e può accedere a tutte le proprietà della classe B.

Esempio: il corpo umano HA-UN Cuore

Fonte

Fonte

3. Aggregazione vs Composizione

La relazione Has-A o Associazione può essere suddivisa in aggregazione e composizione. Una classe contenitore di aggregazione e una classe referenziata possono avere un'esistenza indipendente. Una classe di riferimento di composizione non può esistere se la classe contenitore viene distrutta.

Facciamo un esempio per capire aggregazione e composizione. Un'auto ha le sue parti, ad es. motori, ruote, lettore musicale, ecc. L'auto non può funzionare senza motore e ruote, ma può funzionare senza un lettore musicale. Qui il motore e l'auto hanno una relazione di composizione e l'auto e il lettore musicale hanno una relazione di aggregazione. Nel caso dell'aggregazione, un oggetto può esistere senza far parte dell'oggetto principale.

Fonte

Composizione in Java

Una composizione in Java tra due oggetti associati tra loro esiste quando esiste una forte relazione tra una classe e l'altra. Non possono esistere altre classi senza il proprietario o la classe padre. Ad esempio, una classe "Umana" è una composizione di Cuore e polmoni . Quando l'oggetto umano muore, nessuna parte esiste.

La composizione è una forma ristretta di aggregazione. In Composizione, una classe include un'altra classe e dipende da essa in modo che non possa esistere funzionalmente senza un'altra classe.

Implementazione della composizione in Java

La relazione motore e auto viene implementata utilizzando le classi Java come di seguito. In Java, la parola chiave 'final' viene utilizzata per rappresentare la composizione. Questo perché l'oggetto "Proprietario" si aspetta che un oggetto parte sia disponibile e funzioni rendendolo "finale" .

auto di classe pubblica {

motore finale privato ;

auto pubblica (){

motore = nuovo motore();

}

}

classe Motore {

tipo stringa privato ;

}

Prendiamo un altro esempio che descrive sia l'ereditarietà che la composizione.

Fonte

In questo programma, la classe Honda è Auto e si estende dalla classe Auto. L'oggetto motore dell'auto è utilizzato nella classe Honda.

classe CarEngine {

public void StartEngine(){

System.out.println(" Il motore dell'auto si è avviato .");

}

public void stopEngine(){

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

}

}

classe Auto {

colore stringa privato;

privato int maxi_Velocità;

public void carDetails(){

System.out.println(“Colore auto= “+colore + “; Velocità massima= ” + maxi_Velocità);

}

//Impostazione del colore dell'auto

public void setColor(String color) {

questo.colore = colore;

}

//Impostazione della velocità massima dell'auto

public void setMaxiSpeed(int maxi_Speed) {

questa.maxi_Velocità = maxi_Velocità;

}

}

classe Honda estende Auto{

vuoto pubblico HondaStart(){

CarEngine Honda_Engine = nuovo CarEngine(); //composizione

Honda_Engine.startEngine();

}

}

classe pubblica Principale {

public static void main(String[] args) {

Honda HondaJazz = nuova Honda();

Colore HondaJazz.set ("Nero");

HondaJazz.setVelocità massima(160);

HondaJazz.carDetails();

HondaJazz.HondaStart();

}

}

Produzione:

Colore auto = nero; Velocità massima = 160

Il motore dell'auto si è avviato.

L'output è derivato utilizzando la composizione e mostra i dettagli dell'auto Honda Jazz.

Denotazioni di associazione UML

Le relazioni di associazione, aggregazione e composizione in Java tra le classi A e B sono rappresentate come segue nei diagrammi UML:

Associazione: A—->B

Composizione: A—–<riempito>B

Aggregazione: A—–<>B

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.

Vantaggi della composizione in Java

L'utilizzo della tecnica di progettazione della composizione in Java offre i seguenti vantaggi:

  1. È sempre possibile "preferire la composizione degli oggetti rispetto all'ereditarietà della classe". Le classi ottengono il polimorfismo e il riutilizzo del codice per composizione.
  2. La composizione è flessibile, in cui è possibile modificare l'implementazione della classe in fase di esecuzione modificando l'oggetto incluso e modificarne il comportamento.
  3. Un design basato sulla composizione ha un numero minore di classi.
  4. LA relazione "HAS-A" tra le classi è semanticamente corretta rispetto alla relazione "IS-A".
  5. La composizione in Java offre una migliore testabilità delle classi, particolarmente utile nello sviluppo basato su test.
  6. È possibile ottenere "eredità multiple" nelle lingue componendo più oggetti in uno solo.
  7. Nella composizione, non vi è alcun conflitto tra metodi o nomi di proprietà.

Conclusione

La composizione in Java offre molti vantaggi durante la programmazione ed è uno dei metodi di progettazione preferiti. In questo articolo, abbiamo cercato di farvi comprendere questo importante concetto con esempi di vita reale e codice pratico. La composizione offre flessibilità e codice robusto. La sua funzione di riutilizzabilità del codice aiuta a evitare la duplicazione del codice e a ottenere un buon rapporto qualità-prezzo. Questo lo rende uno dei metodi ampiamente utilizzati in vari programmi.

Impara la composizione in Java con il Master of Science di upGrad in un corso di Informatica che ha lo scopo di farti apprendere e aggiornare le tue abilità nello sviluppo di software.

Eleggibilità

Laurea AB con il 50% o voti equivalenti. Non è necessaria alcuna esperienza di codifica iniziale.

Prezzo

La quota del programma parte da Rs.13, 095/mese per i residenti indiani e 5999 USD per i residenti internazionali.

Atterra sul lavoro dei tuoi sogni

Richiedi il Master of Science in Machine Learning e AI