1.2.3. Agregace a kompozice

Agregace představuje volnou vazbu mezi celkem a součástí, kdy jeden objekt (celek) využívá služby dalších objektů (součástí). Například vztah mezi počítačem a tiskárnou je vztah typu agregace, kdy počítač s tiskárnou tvoří jeden celek, ale tiskárna může existovat i tehdy, pokud není k žádnému počítači připojena. Agregace je formou asociace a v grafické podobě se odlišuje prázdným kosočtvercem na straně celku.

Obrázek 1.6. Agregace celku a součásti

Z Obr. 1.6 je zřejmé, že ke každému počítači může být připojen libovolný počet tiskáren a že tiskárna může být připojena k nejvýše jednomu počítači. Podstatné je, že odpojíme-li tiskárnu od počítače a počítač dáme do šrotu, je tiskárna stále použitelná s jiným počítačem. Silnější formou agregace je kompozice. Jde opět o vztah mezi celkem a součástí, ale tento vztah je velmi těsný a neumožňuje samostatnou existenci součásti, aniž by byla připojena k nějakému celku. Navíc na rozdíl od agregace tato součást musí patřit jen jedinému celku a není možné ji sdílet více celky.

Obrázek 1.7. Kompozice celku a součásti

Příkladem kompozice je vztah mezi fakturou a jejími položkami (viz Obr. 1.7). Každá položka musí být součástí právě jedné faktury, faktura má jednu a více položek. Jestliže fakturu zahodíme, nezbudou nám po ni ani žádné položky.

Příklad 1.1.

Vytvořte třídní diagram zachycující statickou strukturu jednoduchého objednávkového systému, ve kterém sledujeme objednávání zboží zákazníkem. Modelovaný systém bude obsahovat třídy reprezentující zákazníka, zboží, objednávky a položky objednávky.

Objednávka obsahuje údaje o evidenčním číslu a datu vystavení a je asociována s právě jedním zákazníkem, jeden zákazník ale může podat více objednávek. Objednávku je možné vytisknout nebo potvrdit odběrateli a je možné vypočítat její celkovou cenu.

Každá objednávka obsahuje jednu nebo více položek, které se odkazují na konkrétní zboží a obsahují objednávané množství. Pro každou položku lze vypočítat odpovídající cenu.

Zboží je charakterizováno svým názvem, cenou za jednotku a sazbou DPH. Asociace mezi objednávkou a položkami je kompozicí, neboť položky jsou pevně svázány s konkrétní objednávkou a nemohou existovat samostatně.