Klíčový rozdíl – agregace versus kompozice v Javě
Agregace je spojení mezi dvěma objekty, které popisuje vztah „má-a“. Složení je specifičtější typ agregace, který implikuje vlastnictví. Klíčový rozdíl mezi agregací a kompozicí v Javě je v tom, že pokud obsažený objekt může existovat bez existence vlastnického objektu, jedná se o agregaci, a pokud obsažený objekt nemůže existovat bez existence vlastnického objektu, jedná se o kompozici..
Object-Oriented Programming (OOP) je hlavní paradigma ve vývoji softwaru. Používá se k modelování softwaru pomocí objektů. Objekty jsou vytvořeny pomocí tříd. Třída se skládá z vlastností a metod. V softwaru je více objektů. Každý objekt spolu spolupracuje prostřednictvím předávání zpráv. Vztah mezi dvěma objekty je známý jako asociace. Agregace i kompozice jsou dva typy asociací. Vztah „má-a“popisuje, že jeden objekt může používat jiný objekt. Agregaci a kompozici lze implementovat v jazycích podporujících OOP. Pokud obsažený objekt může existovat bez existence vlastnického objektu, pak je spojení mezi těmito dvěma objekty agregací. Pokud obsažený objekt nemůže existovat bez existence vlastněného objektu, pak spojení mezi těmito dvěma objekty je kompozice.
Co je agregace v Javě?
Agregace je typ asociace. Pokud má třída odkaz na entitu, nazývá se to agregace. Agregace představuje vztah has-a. Objekt Student může mít vlastnosti jako student_id, jméno, adresa. Tento objekt může mít také jiný objekt s názvem adresa s vlastními informacemi, jako je město, stát, země. V této situaci má student referenční adresu entity. Je to vztah „má-a“.
Obrázek 01: Třída známek
Obrázek 02: Hlavní program pro popis agregace
Podle výše uvedeného programu se známky třídy skládají ze tří vlastností, kterými jsou známky z matematiky, angličtiny a přírodních věd. Student má objekt Marks. Má své vlastní vlastnosti, které jsou známkami z matematiky, angličtiny a přírodních věd. V hlavní metodě se vytvoří objekt Marks a přiřadí se hodnoty značek. Objekt student, který je s1, může používat objekt značek, který je m1. Student a známky tedy mají vztah „má-a“. Objekt Marks může existovat bez objektu Student. Jedná se tedy o agregaci.
Co je kompozice v Javě?
Složení je druh asociace. Je to specifická forma agregace, která implikuje vlastnictví. Předpokládejme, že existují dvě třídy nazývané třída A a B. Pokud objekt třídy B nemůže existovat, pokud je objekt třídy A zničen, pak je to kompozice. Kniha se skládá z mnoha stránek. Pokud je zničena kniha, zničí se i stránky. Objekty stránky nemohou existovat bez objektu book. Viz níže uvedený program.
Obrázek 03: Třída ve třídě
Obrázek 04: Školní třída
Obrázek 05: Hlavní program pro popis kompozice
Podle výše uvedeného programu má Učebna dvě vlastnosti, kterými jsou name a numOfStudents. Škola je sbírka předmětů třídy. V hlavní metodě se vytvoří dva objekty třídy. Ty se přidávají do ‚učeben‘. Tyto ‚učebny‘přecházejí do objektu školy. Nakonec se vytiskne název třídy a počet studentů iterací v kolekci. Pokud je zničen objekt Škola, zničí se také objekty třídy. Toto je příklad kompozice. Obsahuje také vztah „má-a“a také implikuje vlastnictví.
Jaký je vztah mezi agregací a kompozicí v Javě?
Agregace a kompozice jsou dva typy asociace a kompozice je specializovaný typ agregace. Kompozice je podmnožinou agregace
Jaký je rozdíl mezi agregací a kompozicí v Javě?
Agregace versus kompozice v Javě |
|
Agregace je spojení mezi dvěma objekty, které popisuje vztah „má a“. | Složení je specifičtější typ agregace, která implikuje vlastnictví. |
Použití | |
Agregace se používá, když jeden objekt používá jiný objekt. | Složení se používá, když jeden objekt vlastní jiný objekt. |
Vliv na objekty | |
V souhrnu neovlivní zničení vlastněného objektu objekt obsahující. | V kompozici ovlivní zničení vlastněného objektu objekt, který jej obsahuje. |
Shrnutí – agregace vs složení v Javě
Aggregation a Composition jsou dva pojmy v OOP. Vztah „má-a“popisuje, že jeden objekt může používat jiný objekt. Agregace je asociace mezi dvěma objekty, která popisuje vztah „má-a“. Složení je specifičtější typ agregace, který implikuje vlastnictví. Rozdíl mezi agregací a kompozicí v Javě je ten, že pokud obsažený objekt může existovat bez existence vlastnického objektu, jedná se o agregaci a pokud obsažený objekt nemůže existovat bez existence vlastnického objektu, jedná se o kompozici.