V programovacích jazycích, návrzích operačních systémů a systémech správy databází jsou různé objekty a třídy uloženy s přidružením mezi objekty. Agregace i kompozice se používají k popisu tohoto vztahu mezi objekty pro efektivnější ukládání a získávání datových sad snížením složitosti času a prostoru.
Key Takeaways
- Agregace je přidružení, kde se jeden objekt skládá z více dalších objektů. Pro srovnání, kompozice je typ asociace, kde jeden objekt obsahuje další objekty a je zodpovědný za jejich životní cyklus.
- V agregaci mohou složené objekty existovat nezávisle na objektu, který je obsahuje, zatímco v kompozici složené objekty nemohou existovat nezávisle.
- Agregace je volnější formou vazby než kompozice.
Agregace versus kompozice
Agregace je vztah, kdy třída může obsahovat instanci jiné třídy jako jeden ze svých atributů. Composition je vztah, kdy třída obsahuje jako jeden ze svých atributů instanci jiné třídy, ale obsažená instance nemůže existovat bez třídy kontejneru.
Agregace je asociace mezi dvěma datovými sadami, jako jsou třídy nebo objekty, kde zúčastněné objekty na sobě nemají přímou závislost, pokud jde o jejich vytváření nebo funkci. Manipulace s jedním objektem tedy nemění stav druhého objektu. Toto přidružení umožňuje provádět změny beze ztrát.
Kompozice je speciálním typem agregace a popisuje vztah mezi dvěma datovými sadami, kde zúčastněné objekty nebo třídy jsou na sobě přímo závislé, pokud jde o jejich vytváření, ukládání, funkci atd. Jakákoli úprava jednoho z datových souborů tedy přímo ovlivní druhý datový soubor.
Srovnávací tabulka
Parametry srovnání | Agregace | Složení |
---|---|---|
Definice | Agregace je typ asociace bez závislosti objektů na sobě | Kompozice je asociace se závislostí objektů na sobě |
Vztah | Mezi datovými sadami existuje nepřímý vztah | Vztah rodiče a potomka mezi datovými sadami |
symbol UML | Agregace je označena prázdným kosočtvercem | Složení je označeno vyplněným diamantem |
Změna | Úprava jednoho objektu nezmění druhý objekt | Úprava jednoho objektu změní data na druhém objektu |
Síla asociace | Je to slabé sdružení | Je to silná asociace |
Co je agregace?
Agregace je typ asociace nebo vztahu mezi dvěma datovými sadami, jako jsou třídy, objekty a tak dále. Přidružení se provádí za účelem seskupení datových sad, které mají podobnosti.
V tomto typu přidružení nemají objekty nebo třídy přímý vztah. Datové sady mají vztah „Has-A“.
To znamená, že datové sady na sobě nezávisí, pokud jde o jejich vytváření, ukládání nebo jakoukoli funkci nebo operaci. To je klíčová výhoda použití této formy přidružení pro ukládání podobných datových sad.
Vzhledem k tomu, že objekty a třídy na sobě nejsou přímo závislé, jakákoliv úprava nebo změna jednoho z objektů nebo tříd nemění ani neupravuje obsah dat uložených v jiné datové sadě.
To umožňuje zničit jednu z datových sad v agregaci, aniž byste se museli starat o data uložená v druhé datové sadě.
Kvůli této vlastnosti vztahu agregace se většinou používá v testovacích prostředích, kde je třeba data neustále upravovat. Kvůli vztahu „Has-A“ mezi agregovanými objekty nejsou data zničena v jiných souborech dat.
Pro UML reprezentace, prázdný symbol kosočtverce se používá k určení vztahu Agregace.
Co je složení?
Kompozice je vztah mezi datovými sadami a používá se většinou v systémech správy databází a navrhování operačních systémů. Datové sady mohou zahrnovat objekty, třídy a tak dále.
Složení vytváří vztah mezi datovými sadami, který je přímější než agregace. Objekty a třídy jsou tedy při vytváření datových sad přímo propojeny.
Vzhledem k tomu, že objekty a třídy spolu přímo souvisejí, závisí na sobě jejich vytváření, ukládání a jakákoli operace nebo funkce.
Vztah je někdy reprezentován jako vztah „rodič-dítě“ nebo vztah „vlastník“, kde jedna datová sada je vlastníkem druhé datové sady.
Hlavní nevýhodou použití tohoto typu vztahu je to, že když je jeden z objektů nebo tříd změněn nebo upraven, změna se projeví na druhé datové sadě a data obsažená v datové sadě se také upraví.
To je třeba vzít v úvahu při práci s takovými datovými sadami, jako kdyby byla jedna datová sada zničena nebo odstraněna, druhá datová sada, která je s touto datovou sadou spojena, bude také zničena.
Při použití vztahu kompozice mezi objekty nebo třídami jsou však data uložena bezpečněji. A plné diamant se používá pro UML reprezentaci asociace typu Composition.
Hlavní rozdíly mezi agregací a složením
- Agregace je sdružení datových sad, kde datové sady na sobě nezávisí. Kompozice je také druh asociace, ale datové sady na sobě závisí.
- V agregaci existuje nepřímý vztah mezi datovými sadami. V Composition existuje přímý vztah mezi datovými sadami.
- Pro reprezentaci UML je agregace označena prázdnou diamant, zatímco plný kosočtverec představuje složení.
- V přidružení typu agregace žádné úpravy provedené v jednom z objektů zapojených do přidružení nemění data přítomná v ostatních datových sadách. V přidružení typu Composition se jakákoli změna provedená v jedné z datových sad projeví v ostatních datových sadách zapojených do přidružení.
- Agregace je slabší typ asociace než Composition. Data jsou bezpečněji uložena v asociaci typu kompozice.
- https://ieeexplore.ieee.org/abstract/document/1402291/
- https://ieeexplore.ieee.org/abstract/document/1342512/
Poslední aktualizace: 11. června 2023
Sandeep Bhandari získal bakalářský titul v oboru počítačů na Thapar University (2006). Má 20 let zkušeností v oblasti technologií. Má velký zájem o různé technické obory, včetně databázových systémů, počítačových sítí a programování. Více si o něm můžete přečíst na jeho bio stránka.
Vysvětlení Agregace a Kompozice je jasné a stručné. Klíčové rozdíly mi pomohly lépe uchopit koncept.
Srovnání Agregace a Kompozice je dobře strukturované a informativní. Odkaz na reference je příjemným dotykem pro hlubší ponoření do tématu.
Sekce „Hlavní rozdíly mezi agregací a složením“ je nejužitečnější pro pochopení rozdílů a aplikací každého z nich. Velmi dobře pohromadě.
Zajímavým bodem jsou reprezentace UML pro agregaci a složení. Je to užitečné pro vizuální porozumění.
Tento článek je vynikajícím zdrojem pro každého, kdo chce porozumět složitosti agregace a kompozice. Příklady jsou také velmi informativní.
Velmi poučný článek. Srovnávací tabulka zdůrazňuje rozdíly mezi agregací a složením, takže je lze snadno pochopit.
Podrobné vysvětlení Agregace a Kompozice je velmi dobře prezentováno. Líbí se mi část vysvětlující 'Co je agregace?' a "Co je kompozice?"
Článek efektivně vysvětluje nuance agregace a kompozice. Je to výhodné pro vývojáře i softwarové designéry.