Tipi di relazioni UML: associazione, dipendenza, generalizzazione
Cos'รจ la relazione UML?
Relazioni in UML sono usati per rappresentare una connessione tra cose strutturali, comportamentali o di raggruppamento. Viene anche chiamato collegamento che descrive come due o piรน cose possono relazionarsi tra loro durante l'esecuzione di un sistema. I tipi di relazione UML sono Associazione, Dipendenza, Generalizzazione e Realizzazione.
Studiamoli nel dettaglio
Tipi di relazioni del diagramma di classi UML
Associazione
ร un insieme di collegamenti che collega gli elementi del modello UML. Definisce anche quanti oggetti prendono parte a quella relazione.
Dipendenza
In una relazione di dipendenza, come suggerisce il nome, due o piรน elementi dipendono l'uno dall'altro. In questo tipo di relazione, se apportiamo una modifica a un particolare elemento, รจ probabile che anche tutti gli altri elementi vengano influenzati dal cambiamento.
Generalizzazione
Si chiama anche relazione genitore-figlio. Nella generalizzazione, un elemento รจ una specializzazione di un altro componente generale. Potrebbe esserne sostituito. Viene utilizzato principalmente per rappresentare l'ereditร .
Realizzazione
In una relazione di realizzazione di UML, un'entitร denota una responsabilitร che non รจ implementata da se stessa e dall'altra entitร che le implementa. Questa relazione si trova principalmente nel caso di interfacce.
Associazione
ร 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.
- {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 aggiunto un collegamento tra due oggetti, non puรฒ essere modificato mentre il vincolo congelato รจ attivo sul collegamento o sulla connessione specificati.
Possiamo anche creare una classe che abbia proprietร di associazione; 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.
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:
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.
Dipendenza
Utilizzando una relazione di dipendenza in UML, รจ possibile mettere in relazione il modo in cui le varie cose all'interno di un particolare sistema dipendono l'una dall'altra. La dipendenza viene utilizzata per descrivere la relazione tra vari elementi in UML che dipendono l'uno dall'altro.
Stereotipi
- "legamento" โ Bind รจ un vincolo che specifica che l'origine puรฒ inizializzare il modello in una posizione di destinazione, utilizzando i parametri o i valori forniti.
- "derivare" โ Rappresenta che la posizione di un oggetto di origine puรฒ essere calcolata dall'oggetto di destinazione.
- ยซamicoยป โ Specifica che l'origine ha visibilitร univoca nell'oggetto di destinazione.
- ยซistanzaDiยป โ Specifica che l'istanza di un classificatore di destinazione รจ l'oggetto di origine.
- ยซistanziareยป โ Specifica che l'oggetto sorgente รจ in grado di creare istanze di un oggetto di destinazione.
- ยซraffinareยป โ Specifica che l'oggetto sorgente ha un'astrazione eccezionale rispetto a quella dell'oggetto target.
- "utilizzo" โ Viene utilizzato quando i pacchetti vengono creati in UML. Lo stereotipo d'uso descrive che gli elementi di un pacchetto sorgente possono essere presenti anche all'interno del pacchetto di destinazione. Descrive che il pacchetto sorgente fa uso di alcuni elementi di un pacchetto di destinazione.
- "sostituire" โ specifica che il cliente puรฒ sostituirsi al fornitore in fase di esecuzione.
- "accesso" โ Specifica che il pacchetto sorgente accede agli elementi del pacchetto di destinazione che รจ anche chiamata fusione privata.
- "Importare" โ Specifica che la destinazione puรฒ importare gli elementi di un pacchetto sorgente cosรฌ come sono definiti all'interno del file obiettivo che viene anche chiamato fusione pubblica.
- "permesso" โ specifica che l'elemento sorgente ha accesso all'elemento fornitore qualunque sia la visibilitร dichiarata del fornitore.
- "estendere" โ Ti aiuta a specificare che la destinazione puรฒ estendere il comportamento dell'elemento sorgente.
- "includere" โ Consente di specificare l'elemento di origine a cui puรฒ essere incluso il comportamento di un altro elemento in una posizione specificata. (come una chiamata di funzione in c/c++)
- "diventare" โ Specifica che la destinazione รจ simile alla sorgente con valori e ruoli diversi.
- "chiamata" โ Specifica che l'origine puรฒ richiamare un metodo dell'oggetto di destinazione.
- "Copia" โ Specifica che l'oggetto di destinazione รจ indipendente, copia di un oggetto sorgente.
- ยซparametroยป โ il il fornitore รจ un parametro delle operazioni del cliente.
- "Inviare" - il cliente รจ un'operazione che invia al fornitore un obiettivo non specificato.
Stereotipi della macchina statale
- "Inviare" โ Specifica che l'operazione di origine invia l'evento di destinazione.
Generalizzazione
ร una relazione tra un'entitร generale e un'entitร unica presente all'interno del sistema.
In una relazione di generalizzazione, il concetto orientato agli oggetti chiamato ereditร puรฒ essere implementato. Esiste una relazione di generalizzazione tra due oggetti, chiamati anche entitร o cose. In una relazione di generalizzazione, un'entitร รจ un genitore e un'altra รจ detta figlio. Queste entitร possono essere rappresentate utilizzando l'ereditarietร .
Nell'ereditarietร , un figlio di qualsiasi genitore puรฒ accedere, aggiornare o ereditare la funzionalitร come specificato all'interno dell'oggetto genitore. Un oggetto figlio puรฒ aggiungere le proprie funzionalitร a se stesso ed ereditare la struttura e il comportamento di un oggetto genitore.
Questo tipo di relazione รจ collettivamente nota come relazione di generalizzazione.
Stereotipi e loro vincoli
- "implementazione" โ Questo stereotipo viene utilizzato per rappresentare che l'entitร figlio viene implementata dall'entitร genitore ereditando la struttura e il comportamento di un oggetto genitore senza violare le regole.Note: Questo stereotipo รจ ampiamente utilizzato in un singolo ereditร .
La relazione di generalizzazione contiene vincoli come completo, incompleto per verificare se tutte le entitร figlio sono incluse o meno nella relazione.
Realizzazione
In una relazione di realizzazione di UML, un'entitร denota una responsabilitร che non รจ implementata da se stessa e dall'altra entitร che le implementa. Questa relazione si trova principalmente nel caso di interfacce.
La realizzazione puรฒ essere rappresentata in due modi:
- Utilizzando un forma canonica
- Utilizzando anno forma elisa

Nel diagramma precedente, le regole aziendali dell'account realizzano l'interfaccia IRuleAgent.
Tipologie di realizzazione
- Forma canonica In una relazione di realizzazione di UML, la forma canonica viene utilizzata per realizzare interfacce nel sistema. Utilizza uno stereotipo di interfaccia per creare un'interfaccia e la relazione di realizzazione viene utilizzata per realizzare l'interfaccia particolare. In una forma canonica, la relazione di realizzazione รจ denotata utilizzando la linea diretta tratteggiata con una freccia aperta di grandi dimensioni. Nel diagramma sopra, l'interfaccia Iruleagent รจ realizzata utilizzando un oggetto chiamato Account Business Rules.
- Forma elisa Realizzazione nel Diagramma delle classi UML puรฒ anche essere mostrato utilizzando una forma elisa. In una forma elisa, l'interfaccia รจ denotata utilizzando un cerchio chiamato anche notazione lecca-lecca. Questa interfaccia, quando realizzata utilizzando qualsiasi cosa presente all'interno del sistema, crea una struttura elisa. Nel diagramma sopra, l'interfaccia Iruleagent รจ indicata utilizzando una forma elisa che viene realizzata da acctrule.dll.
Composizione
Non รจ una relazione UML standard, ma viene comunque utilizzata 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).
Una cartella รจ una struttura che contiene n numero di file al suo interno. Una cartella viene utilizzata per archiviare i file al suo interno. Ogni cartella puรฒ essere associata a un numero qualsiasi di file. In un sistema informatico, ogni singolo file fa parte di almeno una cartella all'interno del sistema di organizzazione dei file. Lo stesso file puรฒ anche far parte di un'altra cartella, ma non รจ obbligatorio. Ogni volta che un file viene rimosso dalla cartella, la cartella rimane inalterata mentre i dati relativi a quel particolare file vengono distrutti. Se viene eseguita un'operazione di eliminazione sulla cartella, avrร effetto anche su tutti i file presenti all'interno della cartella. Tutti i file associati alla cartella vengono automaticamente distrutti una volta rimossa la cartella dal sistema.
Questo tipo di relazione in UML รจ nota come relazione di aggregazione composita.
Aggregazione
An aggregazione รจ un sottotipo di una relazione di associazione in UML. Aggregazione e composizione sono entrambi i tipi di relazione associativa 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.
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.
Sintesi
- La relazione in UML consente a una cosa di relazionarsi con altre cose all'interno del sistema.
- Un'associazione, una dipendenza, una generalizzazione e le relazioni di realizzazione sono definite da UML.
- La relazione di composizione puรฒ essere utilizzata anche per rappresentare che l'oggetto puรฒ far parte di un solo composito alla volta.
- L'associazione viene utilizzata per descrivere che un oggetto puรฒ essere associato a un altro oggetto.
- La dipendenza denota che gli oggetti possono dipendere l'uno dall'altro.
- Una realizzazione รจ una relazione significativa tra classificatori.
- La generalizzazione รจ anche chiamata relazione genitore-figlio.

