Associazione UML vs. Aggregazione vs. Composizione [ESEMPIO]
Le relazioni nel diagramma UML vengono utilizzate per rappresentare una connessione tra varie cose. Una relazione è una connessione tra elementi strutturali, comportamentali o di raggruppamento nel linguaggio di modellazione unificato.
Di seguito sono riportati i diversi tipi di relazioni standard in UML,
- Associazione
- Dipendenza
- Generalizzazione
- Realizzazione
Oltre a questi, UML consente l'uso dell'aggregazione e di una relazione di composizione.
Associazione UML
È una relazione strutturale che rappresenta gli oggetti che possono essere collegati o associati a un altro oggetto all'interno del sistema. I seguenti vincoli possono essere applicati alla relazione di associazione UML.
- {implicito} – I vincoli impliciti specificano che la relazione non è manifesta; si basa su un concetto.
- {ordinato} – I vincoli ordinati specificano che l'insieme di oggetti a un'estremità di un'associazione si trova in un modo specifico.
- {variabile} – Il vincolo modificabile specifica che la connessione tra vari oggetti nel sistema può essere aggiunta, rimossa e modificata secondo i requisiti.
- {solo aggiunta} – Si specifica che le nuove connessioni possono essere aggiunte da un oggetto che si trova all'altra estremità di un'associazione.
- {congelato} – Specifica che quando viene inserito un collegamento tra due oggetti, non può essere modificato mentre è attivo il vincolo congelato sul collegamento o su una connessione specificata.
Possiamo anche creare una classe che abbia proprietà di associazione UML; viene chiamata come classe di associazione.
Associazione riflessiva
L'associazione riflessiva è un sottotipo di relazione associativa in UML. In un'associazione riflessiva, le istanze della stessa classe possono essere correlate tra loro. Anche un'istanza di una classe è detta oggetto.
L'associazione riflessiva afferma che all'interno degli oggetti della stessa classe può essere presente un collegamento o una connessione.
Esempio:
Consideriamo un esempio di un frutto di classe.
La classe frutta ha due istanze, come mango e mela. L'associazione riflessiva afferma che un collegamento tra mango e mela può essere presente poiché sono esempi della stessa classe, come il frutto.
Associazione diretta
Come suggerisce il nome, l'associazione diretta è legata alla direzione del flusso all'interno delle classi associative.
In un'associazione diretta, il flusso è diretto. L'associazione da una classe all'altra scorre solo in un'unica direzione.
È indicato utilizzando una linea continua con una freccia.
Esempio di associazione UML:
Si può dire che esiste una relazione di associazione diretta tra un server e un client.
Un server può elaborare le richieste di un client. Questo flusso è unidirezionale, cioè scorre solo dal server al client. Quindi una relazione di associazione diretta può essere presente all'interno dei server e dei client di un sistema.
Composizione UML
Non è uno standard Relazione UML, ma è ancora utilizzato in varie applicazioni.
L'aggregazione composita è un sottotipo di relazione di aggregazione con caratteristiche come:
- È un'associazione bidirezionale tra gli oggetti.
- È una relazione tutto/parte.
- Se un composito viene eliminato, tutte le altre parti ad esso associate vengono eliminate.
L'aggregazione composita è descritta come un'associazione binaria decorata con un diamante nero pieno all'estremità dell'aggregato (intero).
La cartella può contenere molti file, mentre ogni file ha esattamente una cartella genitore. Se una cartella viene eliminata, verranno rimossi anche tutti i file in essa contenuti.
In un'aggregazione composita, un oggetto può far parte di un solo composito alla volta.
Esempio di composizione UML:
Ad esempio, in un sistema di windowing, un Frame appartiene esattamente a una Window. In un'aggregazione composita, l'intero sistema è responsabile della disposizione delle sue parti, il che significa che il composito deve gestire la creazione e la distruzione delle sue parti.
Aggregazione UML
Un'aggregazione è un sottotipo di una relazione di associazione in UML. Aggregazione e composizione sono entrambi i tipi di relazione di associazione in UML. Una relazione di aggregazione può essere descritta in parole semplici come “un oggetto di una classe può possedere o accedere agli oggetti di un’altra classe”.
In una relazione di aggregazione, l'oggetto dipendente rimane nell'ambito di una relazione anche quando l'oggetto di origine viene distrutto.
Esempio di aggregazione UML:
Consideriamo l'esempio di un'auto e di una ruota.
Un'auto ha bisogno di una ruota per funzionare correttamente, ma non sempre una ruota ha bisogno di un'auto. Può essere utilizzato anche con la bici, la bicicletta o qualsiasi altro veicolo ma non con un'auto in particolare. In questo caso l'oggetto ruota ha senso anche senza l'oggetto automobile. Questo tipo di relazione è chiamata relazione di aggregazione UML.
Associazione contro Aggregazione vs. Composizione
Associazione | Aggregazione | Composizione |
---|---|---|
La relazione di associazione è indicata utilizzando una freccia. | La relazione di aggregazione è indicata utilizzando una linea retta con una freccia vuota a un'estremità. | La relazione di composizione è indicata utilizzando una linea retta con una freccia piena in corrispondenza di una qualsiasi delle estremità. |
L'associazione può esistere tra due o più classi in UML. | L'aggregazione è una parte di una relazione di associazione. | La composizione è parte di un rapporto associativo. |
Possono essere presenti associazioni uno-uno, uno-molti, molti-uno e molti-molti tra le classi di associazione. | L'aggregazione è considerata un tipo di associazione debole. | La composizione è considerata un tipo di associazione forte. |
In una relazione di associazione, uno o più oggetti possono essere associati tra loro. | In una relazione di aggregazione, gli oggetti associati tra loro possono rimanere nell'ambito di un sistema senza gli altri. | In una relazione di composizione, gli oggetti associati tra loro non possono rimanere nell'ambito l'uno senza l'altro. |
Gli oggetti sono collegati tra loro. | Gli oggetti collegati non dipendono dall'altro oggetto. | Gli oggetti sono fortemente dipendenti gli uni dagli altri. |
Nell'associazione UML, l'eliminazione di un elemento può influenzare o meno un altro elemento associato. | Nell'aggregazione UML, l'eliminazione di un elemento non influisce su un altro elemento associato. | Nella composizione UML, l'eliminazione di un elemento influisce su un altro elemento associato. |
Esempio: Un insegnante è associato a più studenti. Or un insegnante fornisce istruzioni agli studenti. |
Esempio: Un'auto ha bisogno di una ruota, ma non sempre ha bisogno della stessa ruota. Un'auto può funzionare adeguatamente anche con un'altra ruota. |
Esempio: Un file viene inserito all'interno della cartella. Se si elimina la cartella, viene eliminato anche il file associato a quella determinata cartella. |
Sommario
- Una relazione è una connessione tra le cose.
- Associazione, dipendenza, generalizzazione e realizzazione sono varie relazioni fornite da UML.
- Oltre alle relazioni standard, all'interno dell'UML vengono utilizzate la composizione e l'aggregazione.
- Aggregazione e composizione sono entrambi i tipi di relazione associativa in UML.
- La composizione UML è una relazione bidirezionale chiamata anche relazione binaria.
Dai un'occhiata al nostro articolo sui migliori strumenti UML:- Clicca qui