Innym sposobem zapisania atrybutu jest użycie asocjacji. Większość tych samych informacji, które można przedstawić za pomocą atrybutu, pojawia się rów nież na asocjacji. Poniższe rysunki ilustrują sposób zapisania tych samych cech w dwóch różnych notacjach.
a) Zamówienie
-dataOtrzymania: Data [0...1]
-przedpłata: Boolean [1]
pozycje: PozycjaZamówienia['j{Ordered}
b)_
I Data I*
—1»| Boolean |
X •
| PozycjaZamówienia]
Pozycje {ordered}
Rysunek a) prezentuje reprezentację parametru klasy w postaci atrybutu. Rysunek b) prezentuje reprezentację parametru klasy w postaci asocjacji.
Asocjacja jest rysowana w postaci ciągłej linii między dwiema klasami, ze strzałką skierowaną od klasy źródłowej do klasy docelowej. Nazwa cechy jest umieszczona razem z krotnością w punkcie docelowym asocjacji. Punkt docelowy asocjacji jest przytwierdzony do klasy będącej typem cechy.
Chociaż w obu notacjach pojawia się większość tych samych informacji, to jednak niektóre elementy się różnią. W szczególności asocjacje mogą zawierać krotności na obu końcach linii.
Wobec istnienia dwóch notacji dla tej samej rzeczy pojawia się oczywiste pytanie — dlaczego mielibyśmy używać jednej z nich, a nie drugiej? Zwykle używamy atrybutów dla małych elementów, takich jak daty lub wartości logiczne czyli generalnie typy wartości. Asocjacji natomiast używamy dla bardziej znaczących klas, takich jak klienci lub zamówienia. Wybór w większym stopniu zależy od chęci wyróżnienia czegoś, niż od jakiegokolwiek ukrytego znaczenia.
9