1.2.2. Asociace

Spojení mezi objekty však nelze vytvářet zcela libovolně, musí být v souladu s tím, jak jsou definovány vztahy mezi jejich třídami. Na úrovni tříd spojením odpovídají asociace, spojení jsou vlastně instancemi asociací. Každá asociace může být podrobněji popsána dalšími vlastnosti jako název asociace, názvy rolí asociovaných tříd, násobnost a řiditelnost asociace. Název asociace vyjadřuje obvykle slovesnou frází akci, kterou vykonává jeden objekt pomocí druhého objektu. Například vztah „Firma zaměstnává Osobu“ vyjádříme jako asociaci mezi třídou Firma a Osoba pojmenovanou "zaměstnává" (viz Obr. 1.5). V této asociaci má Firma roli zaměstnavatele a Osoba roli zaměstnance. Uvádíme buď pouze název asociace (případně se šipkou označující směr asociace), nebo pouze názvy rolí, ne obojí současně. Dále můžeme uvést omezení, že Firma zaměstnává 0 a více Osob (znak hvězdička), zatímco Osoba je zaměstnána v právě jedné Firmě (číslo 1). Řiditelnost můžeme vyjádřit podobně jako u spojení šipkou na straně řízeného objektu.

Obrázek 1.5. Asociace mezi třídami

Násobnost asociace můžeme uvést také jako interval, např. 0..1, 1..* nebo 1..10. Uvádění násobnosti asociací je užitečné pro pochopení omezujících podmínek v námi navrženém modelu a jejich konfrontaci s modelovanou realitou. Vždy bychom se měli u každé asociace zamyslet alespoň nad tím, zda je nebo není násobná, případně zda může na některé straně asociace být i nulový počet prvků.

Grafické znázornění tříd a jejich asociací se nazývá třídní diagram. Tento diagram představuje statickou strukturu modelovaného systému, zachycuje jeho prvky a vztahy mezi nimi. Společně s diagramy zachycujícími dynamiku systému a jeho chování v čase patří k základním podkladům pro implementaci objektově orientovaných systémů.