Table of Contents

Composizione

Principio di esclusività

Descrizione

Il verbo usato per descrivere questa relazione è has: possedere, avere, essere composto da… Nella Composizione le classi componenti esistono solo in relazione alla classe contenitore. Non si possono creare oggetti al di fuori di tali classi.

Come si realizza?

Poiché la relazione è forte è necessario dichiarare una classe nel namespace di una classe contenitore. In questo modo è realizzato anche il principio dell'esclusività.

Class A
{   
 private:    
    Class B
    {
    };
};

In questo modo tutte le funzioni membro della classe contenitore hanno accesso a tutti i dati membro dell'altra classe. Il costruttore della classe contenitore inizializzerà questi oggetti come inizializza gli altri oggetti. Se gli oggetti sono creati nello stack verranno inizializzati/distrutti automaticamente, mentre se puntato nell'heap dovrà occuparsene il costruttore/distruttore.

Se è necessario usare più volte questi oggetti (come 4 gambe di un tavolo) si possono usare vector.

Non confondere la molteplicità con il numero di versi di navigabilità. Se la molteplicità è uno si realizza aggiungendo dei puntatori nella classe contenitore. Se la molteplicità è maggiore di uno si implementa con i vettori

Esempio

Codice sorgente con esempio di composizione

Esercizio

Creare le classi per disegnare punti e segmenti sul piano cartesiano. Lo stesso esempio può essere risolto: