Rozdíl mezi agregací a kompozicí v UML
Klíčový rozdíl mezi agregací a složením
- Agregace je jedním typem asociace mezi dvěma objekty popisujícími vztah „mít a“, zatímco kompozice je specifickým typem agregace, která implikuje vlastnictví.
- Agregace je označena pomocí přímky s prázdnou šipkou na jednom konci. Na druhé straně je kompozice označena pomocí přímky s plnou šipkou na kterémkoli z konců.
- V agregačním vztahu mohou objekty, které jsou vzájemně spojeny, zůstat v rozsahu systému jeden bez druhého. Ale ve vztahu kompozice nemohou objekty, které jsou navzájem spojeny, zůstat v rozsahu jeden bez druhého.
- V agregaci nejsou spojené objekty závislé na druhém objektu, zatímco v kompozici jsou objekty na sobě velmi závislé.
- V agregaci neovlivní odstranění jednoho prvku jiný přidružený prvek. Naopak v kompozici smazání jednoho prvku ovlivní jiný související prvek.
- Agregace je označena vyplněným diamantem, zatímco prázdný diamant označuje složení.

Co je agregace?
Agregace je speciální případ asociace, kdy objekt 'má-a' jiný objekt, který mezi nimi můžete mít agregaci. Směr mezi nimi vám pomůže určit, který objekt obsahuje druhý objekt. Agregace je také známá jako vztah „Has-a“. Je to podtyp asociačního vztahu v UML.
Co je složení?
Kompozice je speciální případ agregace, který vám pomáhá určit vztah mezi celou částí mezi třídou kompozice a podřízenou třídou (částí).
Rozdíl mezi agregací a kompozicí v UML
Zde je hlavní rozdíl mezi agregací a složením:
| Agregace | Složení |
|---|---|
| Agregace je jeden typ asociace mezi dvěma objekty, který také popisuje vztah „mít a“. | Složení je specifický typ agregace, který implikuje vlastnictví. |
| Agregace je označena pomocí přímky s prázdnou šipkou na jednom konci. | Složení je naznačeno pomocí přímky s plnou šipkou na kterémkoli z konců. |
| Agregace je součástí asociačního vztahu. | Kompozice je součástí asociačního vztahu. |
| Agregace je považována za slabý typ asociace. | Kompozice je považována za silný typ asociace. |
| V agregačním vztahu mohou objekty, které jsou vzájemně spojeny, zůstat v rozsahu systému jeden bez druhého. | Ve vztahu kompozice nemohou objekty, které jsou vzájemně spojeny, zůstat v rozsahu jeden bez druhého. |
| V agregaci nejsou propojené objekty závislé na druhém objektu. | V kompozici jsou objekty na sobě velmi závislé. |
| V agregaci neovlivní odstranění jednoho prvku jiný přidružený prvek. | V kompozici ovlivní odstranění jednoho prvku další související prvek. |
| Příklad: Automobil potřebuje kolo, ale ne vždy vyžaduje stejné kolo. Auto může adekvátně fungovat i s jiným kolem. | Příklad: Do složky je umístěn soubor. Pokud smažete složku, odstraní se také soubor přidružený k dané složce. |
| V Agregaci, rodič vztah s podřízenou entitou. |
Ve složení nadřazená entita vlastní podřízenou entitu. |
| Označuje se vyplněným diamantem | Je označen prázdným kosočtvercem |
| Dítě nemá celý život. | Dítě může mít celý život. |
| Je reprezentován dutým diamantem vedle montážní třídy. | Je reprezentován masivním diamantem vedle montážní třídy. |
| Odstranění sestavy nikdy neovlivní její části. | V případě vlastnictví třídy je objekt smazán. Ovlivňuje také objekt třídy obsahující. |
Agregace vs složení: Klíčové statistiky
| Agregace | Složení | |
|---|---|---|
| Majitel | Žádný vlastník | Jediný majitel |
| Život | Mají svůj život. | Životnost majitele. |
| Podřízený objekt | Všechny dětské předměty jsou nezávislé. | Podřízené objekty patří jedinému rodiči. |
Příklad složení
Složka může obsahovat mnoho souborů, přičemž každý soubor má přesně jednu nadřazenou složku. Pokud je složka odstraněna, jsou odstraněny i všechny obsažené soubory. Ve složené agregaci může být objekt současně součástí pouze jednoho kompozitu.
Příklad agregace
Vaše auto se například skládá z kol, motoru, převodovky, řízení a hlavní karoserie atd. Je to sestava a ostatní části jsou jejími součástmi.
Zde je auto k volantu jedna agregace, auto k motoru je další agregace, auto k převodovce další a tak dále.
Tento typ párování vám pomůže definovat početnost základní součásti v sestavě jako výsledek. Lze také zobrazit počet objektů.
Aby auto správně fungovalo, potřebuje kolo. To však nemůžeme říci o automobilu. Stejnou logiku lze aplikovat na kolo, kolo nebo jakékoli jiné vozidlo, ale ne na konkrétní auto.
Zde má objekt kola smysl i bez objektu auta. Je známý jako agregační vztah.


