Quando più classi sono connesse l'una con l'altra da un punto di vista concettuale, tale connessione viene denominata associazione.
Graficamente, un'associazione viene rappresentata con una linea che connette due classi, con il nome dell'associazione appena sopra la linea stessa.
Quando una classe si associa con un'altra, ognuna di esse gioca un ruolo all'interno dell'associazione. E' possibile mostrare questi ruoli sul diagramma, scrivendoli vicino la linea orizzontale dalla parte della classe che svolge un determinato ruolo, come si vede nella figura precedente.
Un'associazione può essere più complessa del concetto di connettere una classe ad un'altra. E' possibile, infatti che più classi possano connettersi ad una singola classe.
Qualche volta un'associazione tra due classi deve seguire una regola. Tale regola si indica inserendo una "constraint" vicino la linea che rappresenta l'associazione.
Esattamente come una classe, un'associazione può avere attributi ed operazioni. In questo caso si parla di una Classe Associazione (vedasi figura precedente).
Le classi associazione vengono visualizzate allo stesso modo con cui si mostra una classe normale. Si utilizza una linea tratteggiata per connettere una Classe Associazione alla linea di associazione.
La molteplicità è un tipo speciale di associazione in cui si mostra il numero di oggetti appartenenti ad una classe che interagisce con il numero di oggetti della classe associata.
Una classe, in generale, può essere correlata ad una altra nei seguenti modi:
- Uno ad uno
- Uno a molti
- Uno ad uno o più
- Uno a zero o uno
- Uno ad un intervallo limitato (es.: 1 a 2 - 20)
- Uno ad un numero esatto n
- Uno ad un insieme di scelte (es.: 1 a 5 o 8)
Il linguaggio UML utilizza un asterisco (*) per rappresentare le opzioni "molti" e "più".
Qualche volta, una classe può trovarsi in associazione con se stessa. Ciò si verifica quando una classe contiene oggetti che possono giocare svariati ruoli. Tali associazioni sono chiamate: "Associazioni Riflessive".
Associazione Riflessiva
Senza le relazioni, un modello di classi sarebbe soltanto una lista di rettangoli che rappresentano un "vocabolario" del sistema. Le relazioni mostrano come i termini del vocabolario si connettono tra di loro per fornire un quadro della fetta di sistema che si sta modellando. L'associazione rappresenta, dunque, la connessione concettuale fondamentale tra le classi in cui ogni classe, come detto, gioca un ruolo specifico.