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

Relazioni del diagramma delle 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
Realizzazione in UML
Realizzazione in UML

Nel diagramma precedente, le regole aziendali dell'account realizzano l'interfaccia IRuleAgent.

Tipologie di realizzazione

  1. 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.
  2. 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).

Composizione in UML

Composizione in UML

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.

Riassumi questo post con: