User Tools

Site Tools


appunti3s:aggregazione

Aggregazione

  • una linea continua con il simbolo del rombo vuoto vicino alla classe contenitore
  • i numerini indicano la molteplicità
  • Ha sempre UNO SOLO verso di percorrenza (quindi una regola)
  • la Composizione ha il simbolo del rombo pieno.

Principio

Il verbo usato per descrivere questa relazione è has: possedere, avere, essere composto da… Nell'Aggregazione le classi componenti esistono indipendentemente dalla classe contenitore

Come si realizza?

Possedere un oggetto significa avere un oggetto membro di quel tipo… Le classi componenti esistono indipendentemente dalla classe contenitore, quindi non è necessario definire tali classi all'interno dei contenitori, come lo è invece nella composizione. , perciò il distruttore del contenitore non si deve occupare della distruzione delle componenti. Se la molteplicità è uno si realizza aggiungendo dei reference nella classe contenitore. Se la molteplicità è maggiore di uno si implementa con array di puntatori o vector (i vector lavorano per copia)

class B
{
 //...
};

class A
{
   private:
        B m_b;
};

Esempio

File sorgenti di un esempio di aggregazione

Esercizio

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

  • con l'aggregazione se considero i punti pre-esistenti al segmento e quindi indipendenti.
  • con la composizione se considero di creare due nuovi punti per ogni segmento (non rappresento punti singoli)

Analisi del problema

  1. il segmento può essere creato a partire da punti pre-esistenti?
  2. cosa accade al punto se distruggo il segmento?(esclusività)
  3. cosa accade al segmento se distruggo un suo punto?
  4. un punto può appartenere a due segmenti contemporaneamente?
appunti3s/aggregazione.txt · Last modified: 2020/06/08 22:19 by 127.0.0.1