Le associazioni tra le classi

Le classi individuate nella fase di analisi della realtà di riferimento possono essere legate tra loro da associazioni di varia natura.
Tali associazioni possono coinvolgere due o più classi. Nel seguito analizzaremo le associazioni binarie, ossia quelle che intercorrono tra coppie di classi del nostro modello.

Graficamente possiamo rappresentarle, semplificando, attraverso un legame che coinvolge le due classi.

Associazione UML

Una caratteristica fondamentale di una associazione è la cardinalità o molteplicità, ossia una informazione numerica che indica il numero di oggetti concreti coinvolti nella associazione. La cardinalità può essere espressa attraverso un preciso valore numerico ed in tal caso individua con precisione il numero di oggetti coinvolti, oppure attraverso un asterisco, nel qual caso il numero di oggetti coinvolti è molteplice, ma non specificato con precisione (* sta pertanto ad indicare un qualunque valore numerico maggiore o uguale a zero).

La cardinalità può anche essere espressa con una coppia di numeri separati da puntini.
I valori prendono il nome di cardinalità minima e cardinalità massima ed indicano, rispettivamente, il numero minimo e massimo di oggetti coinvolti. La cardinalità massima può anche essere imprecisata e rappresentata pertanto con il simbolo asterisco (*).

Alcuni esempi di cardinalità sono:

  • uno: 1
  • molti: *
  • zero o più: 0 . . *
  • uno o più: 1 . . *
  • zero o più fino ad un N specificato: 0 . . N (es: 0 . . 10)
  • uno o più fino ad un N specificato: 1 . . N (es: 1 . . 10)
  • da N ad M entrambi specificati: N . . M (es: 1 . . 4)

Un esempio di uso delle cardinalità nei diagrammi delle classi UML è raffigurato nell'immagine che segue:

Esempio di cardinalità nelle associazione UML

Tale diagramma indica che una istanza della classe A può essere associata a zero o più istanze della classe B e, viceversa, una istanza della classe B deve essere associata ad una istanza della classe A.


Tipi di associazioni tra classi

I possibili tipi di associazioni tra classi sono i seguenti:

  • dipendenza
  • generalizzazione/specializzazione
  • composizione
  • aggregazione