Introduzione
Cosa sono le associazioni e i link:
- Un ascoltazione modella la possibilità che esista un legame tra oggetti di due (o più) classi.
- Un link è l’istanza di un associazione ovvero il legame effettivo tra due oggetti.
oss: un associazione può essere vista come un insieme di coppie ed un link come una coppia di quel insieme.
Livello intensionale ed Estensionale
Le
associazioni
sono a livello intensionale. Ilink
sono a livello estensionale
Funzionamento
Ogni associazione e link sono rappresentati attraverso:
- un nome
- una linea che connette due classi/oggetti
- una freccia che indica la direzione di lettura (opzionale)
oss: i link non hanno un identificatore proprio, questo perché sono identificati dagli oggetti messi in relazione.
Problema del Doppio Link
Non è ammesso l’esistenza di due link della stessa associazione che uniscono gli stessi oggetti.
oss: per risolvere questo problema si possono sempre usare le Classi Ponte.
Associazioni Multiple
Tra le stesse classi possono essere definite più associazioni, che modellano legami di natura diversa.
Associazioni sulla stessa classe
Quando una abbiamo un associazione che le lega la stessa classe dobbiamo definire i ruoli della associazione.
- Ogni sovrano partecipa ad un numero di link con ruolo di successore che va da 0 a 1.
- Ogni sovrano partecipa ad un numero di link con ruolo di predecessore cha va da 0 a 1.
Classi Ponte
Se vogliamo creare un app che permette alla stessa persona di prenotare lo stesso hotel, non possiamo utilizzare questa rappresentazione:
Errore
Schema preso dagli appunti di @CasuFrost
Soluzione
Per risolvere questo problema possiamo utilizzare una classe ponte, che fa tra intermediario tra hotel e persona:
Vincoli e Molteplicità
I vincoli di molteplicità sono utilizzati sulle associazioni per imporre delle restrizioni sul numero di link che possono esistere fra due classi.
Associazioni con Attributi
È possibile definire degli attributi che aggiungono informazioni alle associazioni. Per pare ciò si utilizzano le association classes delle classi che non rappresentano oggetti (infatti sono definite con lettere minuscole) ma associazioni.
Problema del Doppio Link
Continua a non essere ammessa l’esistenza di due link della stessa associazione che uniscono gli stessi oggetti, anche se questi due link hanno attributi diverso.
oss: per risolvere questo problema si possono sempre usare le Classi Ponte.
Associazione con una Association Class
Le association class possono par parte a loro volta di associazioni, ad esempio: