Ključna razlika – agregacija naspram kompozicije
Objektno orijentirano programiranje (OOP) je uobičajena paradigma u razvoju softvera. Objekt je instanca klase. Nije moguće kreirati objekte odjednom. Trebao bi postojati nacrt ili opis za kreiranje objekta. Taj nacrt je poznat kao klasa. Klasa sadrži svojstva i metode. Objekti se kreiraju pomoću klasa. Klasa i objekt su slični planu i kući u stvarnom svijetu. Nije moguće izgraditi kuću bez odgovarajućeg plana. Isto tako, klasa se koristi za kreiranje objekta. Objekt sarađuje s drugim objektima. Veza sa predstavlja odnos dva ili više objekata naziva se „asocijacija“. Agregacija i sastav su vrste asocijacija. Oni opisuju odnos među klasama. Ovaj članak govori o razlici između agregacije i kompozicije. Ključna razlika između agregacije i kompozicije je u tome što je agregacija asocijacija između dva objekta koja opisuje odnos "ima" i kompozicija je specifičnija vrsta agregacije koja implicira vlasništvo.
Šta je agregacija?
Odnos između dva objekta je prikazan crtanjem linije u Unified Modeling Language (UML). Veza je asocijacija. UML pomaže da se dobije vizuelni prikaz sistema. Razlikuje se od običnih programskih jezika. Asocijacija također definira višestrukost objekata. Oni su jedan prema jedan, jedan prema više i više prema mnogima. Kada je jedan objekt klase A povezan sa jednim objektom klase B, to je odnos jedan-na-jedan. Primjer je autor koji piše knjigu. U tom primjeru, jedan autor piše knjigu.
Kada je jedan objekat klase A povezan sa mnogim objektima klase B, to je odnos jedan-prema-više. Primjer je da odjel može imati mnogo zaposlenih. Kada je objekt klase A pridružen mnogim objektima klase B, a objekt klase B pridružen mnogim objektima klase A, to je asocijacija više na mnogo. Jedan primjer je da zaposlenik može raditi na više projekata, a projekat može imati više zaposlenih.
Agregacija je asocijacija tipa koja dalje opisuje odnos između objekata. Agregacija opisuje odnos „ima“. Neki primjeri koji opisuju odnos su, učenik „ima“studentski ID, vozilo „ima“motor. Takođe je moguće proširiti veliku količinu sa vezom. Neki primjeri su, banka “ima mnogo” bankovnih računa, razred “ima mnogo” učenika. To se može objasniti korištenjem donjeg primjera.
Slika 01: Agregacija
Prema gornjem primjeru, učionica se sastoji od učenika ili više učenika. Višestrukost se također koristi za označavanje broja objekata. Opisuje da jedna učionica ima više učenika. Simbol dijamanta predstavlja agregaciju u UML-u. Objekti učenika se ne oslanjaju na objekt klase. Ako je objekt klase uništen, to neće utjecati na objekte učenika. Ti objekti će i dalje postojati.
Šta je kompozicija?
Sastav je specifičniji oblik agregacije. Opisuje vlasništvo. To se može objasniti korištenjem donjeg primjera.
Slika 02: Kompozicija
Prema gore navedenom, objekat knjige se sastoji od objekta stranice ili stranica. Višestrukost se također koristi za označavanje broja objekata. Opisuje da jedna učionica ima više učenika. Simbol dijamanta koji je istaknut predstavlja kompoziciju u UML-u. Kako knjiga ima stranicu ili više stranica, to je agregacija, ali je preciznija. Ako je objekt knjige uništen, onda se uništavaju i objekti stranice. Objekti stranice ne mogu postojati bez objekta knjige. Stoga je sastav specifičniji oblik agregacije koji podrazumijeva vlasništvo.
Koje su sličnosti između agregacije i kompozicije?
- Oba se koriste u objektno orijentiranom programiranju.
- Oba se koriste u Unified Modeling Language (UML) za vizuelno razumevanje sistema.
Koja je razlika između agregacije i kompozicije?
Agregacija vs Kompozicija |
|
Agregacija je asocijacija između dva objekta koja opisuje odnos "ima". | Sastav je najspecifičnija vrsta agregacije koja implicira vlasništvo. |
UML simbol | |
Agregacija je označena dijamantom. | Kompozicija je označena istaknutim dijamantom. |
Funkcionalnost | |
U agregaciji, ako je objekt koji posjeduje uništen, to neće utjecati na objekt koji ga sadrži. | U sastavu, ako je objekt koji posjeduje uništen, to će uticati na objekt koji ga sadrži. |
Sažetak – agregacija vs kompozicija
Objektno orijentirano programiranje je glavna paradigma u razvoju softvera. U OOP-u, sistem se modelira pomoću objekata. Ovi objekti ne postoje u izolaciji. Objekti surađuju s drugim objektima. Odnos između objekata poznat je kao asocijacija. Agregacija i sastav su vrste asocijacija. Razlika između agregacije i kompozicije je u tome što je agregacija asocijacija između dva objekta koja opisuje odnos "ima", a kompozicija je specifičnija vrsta agregacije koja implicira vlasništvo. Agregacija i kompozicija pomažu u razumijevanju ponašanja sistema.
Preuzmite PDF verziju agregacije vs kompozicije
Možete preuzeti PDF verziju ovog članka i koristiti ga za vanmrežne svrhe prema napomeni o citatu. Molimo preuzmite PDF verziju ovdje Razlika između agregacije i kompozicije