Klíčový rozdíl – agregace vs. složení
Object-Oriented Programming (OOP) je běžné paradigma ve vývoji softwaru. Objekt je instancí třídy. Není možné vytvářet objekty najednou. K vytvoření objektu by měl existovat plán nebo popis. Tento plán je známý jako třída. Třída obsahuje vlastnosti a metody. Objekty jsou vytvářeny pomocí tříd. Třída a objekt jsou podobné plánu a domu v reálném světě. Bez pořádného plánu není možné postavit dům. Podobně se třída používá k vytvoření objektu. Objekt spolupracuje s jinými objekty. Spojení s představuje vztah dvou nebo více objektů se nazývá „asociace“. Agregace a kompozice jsou typy asociací. Popisují vztah mezi třídami. Tento článek pojednává o rozdílu mezi agregací a složením. Klíčový rozdíl mezi agregací a kompozicí je v tom, že agregace je asociace mezi dvěma objekty, která popisuje vztah „má“a kompozice je specifičtější typ agregace, který implikuje vlastnictví.
Co je agregace?
Vztah mezi dvěma objekty je znázorněn nakreslením čáry v jazyce Unified Modeling Language (UML). Odkaz je asociace. UML pomáhá získat vizuální reprezentaci systému. Je to jiné než běžné programovací jazyky. Asociace také definuje početnost objektů. Jsou to jeden k jednomu, jeden k mnoha a mnoho k mnoha. Když je jeden objekt třídy A přidružen k jedinému objektu třídy B, jedná se o vztah jedna ku jedné. Příkladem je autor píšící knihu. V tomto příkladu jeden autor píše knihu.
Když je jeden objekt třídy A spojen s mnoha objekty třídy B, jedná se o vztah jedna k mnoha. Příkladem je, že oddělení může mít mnoho zaměstnanců. Když je objekt třídy A asociován s mnoha objekty třídy B a objekt třídy B je asociován s mnoha objekty třídy A, jedná se o asociaci many-to-many. Jedním z příkladů je, že zaměstnanec může pracovat na více projektech a projekt může mít více zaměstnanců.
Agregace je typová asociace, která dále popisuje vztah mezi objekty. Agregace popisuje „má“vztah. Některé příklady popisující vztah jsou, student „má“studentské ID, vozidlo „má“motor. Vztahem je také možné rozšířit velké množství. Některé příklady jsou, banka „má mnoho“bankovních účtů, třída „má mnoho“studentů. Lze to vysvětlit pomocí níže uvedeného příkladu.
Obrázek 01: Agregace
Podle výše uvedeného příkladu se učebna skládá ze studenta nebo mnoha studentů. Násobnost se také používá k označení počtu objektů. Popisuje, že jedna třída má více studentů. Symbol diamantu představuje agregaci v UML. Objekty studentů nespoléhají na objekt třídy. Pokud je objekt třídy zničen, neovlivní to objekty studentů. Tyto objekty budou stále existovat.
Co je složení?
Složení je specifičtější formou agregace. Popisuje vlastnictví. Lze to vysvětlit pomocí níže uvedeného příkladu.
Obrázek 02: Složení
Podle výše uvedeného se objekt knihy skládá z objektu stránky nebo stránek. Násobnost se také používá k označení počtu objektů. Popisuje, že jedna třída má více studentů. Symbol diamantu, který je zvýrazněn, představuje kompozici v UML. Vzhledem k tomu, že kniha má stránku nebo mnoho stránek, jedná se o agregaci, která je však blíže specifikována. Pokud je objekt knihy zničen, jsou zničeny i objekty stránky. Objekty stránky nemohou existovat bez objektu book. Proto je složení specifičtější formou agregace, která implikuje vlastnictví.
Jaké jsou podobnosti mezi agregací a kompozicí?
- Oba se používají v objektově orientovaném programování.
- Oba se používají v Unified Modeling Language (UML), aby bylo možné vizuálně porozumět systému.
Jaký je rozdíl mezi agregací a kompozicí?
Agregace vs složení |
|
Agregace je asociace mezi dvěma objekty, která popisuje vztah „má a“. | Složení je nejspecifičtějším typem agregace, která implikuje vlastnictví. |
Symbol UML | |
Agregace je označena kosočtvercem. | Složení je označeno zvýrazněným kosočtvercem. |
Funkčnost | |
V agregaci platí, že pokud je vlastnící objekt zničen, nebude to mít vliv na objekt, který jej obsahuje. | V kompozici platí, že pokud je vlastnící objekt zničen, bude to mít vliv na objekt, který jej obsahuje. |
Shrnutí – agregace vs složení
Objektově orientované programování je hlavní paradigma ve vývoji softwaru. V OOP je systém modelován pomocí objektů. Tyto objekty neexistují izolovaně. Objekty spolupracují s jinými objekty. Vztah mezi objekty je známý jako asociace. Agregace a kompozice jsou typy asociací. Rozdíl mezi agregací a kompozicí je v tom, že agregace je asociace mezi dvěma objekty, která popisuje vztah „má“a kompozice je specifičtější typ agregace, který implikuje vlastnictví. Agregace i kompozice pomáhají porozumět chování systému.
Stáhněte si PDF verzi Agregace vs Composition
Můžete si stáhnout PDF verzi tohoto článku a použít ji pro offline účely podle citace. Stáhněte si PDF verzi zde Rozdíl mezi agregací a složením