Põhierinevus – koondamine vs kompositsioon Javas
Agregatsioon on kahe objekti vaheline seos, mis kirjeldab "has-a" suhet. Koosseis on spetsiifilisem koondtüüp, mis eeldab omandiõigust. Peamine erinevus Java koondamise ja koostise vahel on see, et kui sisalduv objekt võib eksisteerida ilma omava objektita, on see liitmine ja kui sisalduv objekt ei saa eksisteerida ilma omava objekti olemasoluta, on see kompositsioon.
Objektorienteeritud programmeerimine (OOP) on tarkvaraarenduse peamine paradigma. Seda kasutatakse tarkvara modelleerimiseks objektide abil. Objektid luuakse klasside abil. Klass koosneb omadustest ja meetoditest. Tarkvaras on mitu objekti. Iga objekt teeb üksteisega koostööd sõnumite edastamise kaudu. Kahe objekti vahelist suhet nimetatakse assotsiatsiooniks. Nii liitmine kui ka koosseis on kahte tüüpi seoseid. Seos "has-a" kirjeldab, et üks objekt võib kasutada teist objekti. Koondamist ja koostist saab rakendada OOP-i toetavates keeltes. Kui sisalduv objekt saab eksisteerida ilma omavat objekti olemasoluta, on nende kahe objekti vaheline seos liitmine. Kui sisalduv objekt ei saa eksisteerida ilma omava objekti olemasoluta, on nende kahe objekti vaheline seos kompositsioon.
Mis on Javas liitmine?
Koond on teatud tüüpi seosed. Kui klassil on olemiviide, nimetatakse seda liitmiseks. Agregatsioon esindab suhet omab. Õpilase objektil võivad olla atribuudid nagu õpilase_id, nimi, aadress. Sellel objektil võib olla ka teine objekt nimega aadress ja millel on oma teave, näiteks linn, osariik, riik. Sellises olukorras on õpilasel olemi viiteaadress. See on "on-a" suhe.
Joonis 01: Märgid klassis
Joonis 02: Põhiprogramm liitmise kirjeldamiseks
Vastav alt ül altoodud programmile koosneb klassi Marks kolmest omadusest, milleks on matemaatika, inglise keele ja loodusteaduste hinded. Õpilasel on Marksi objekt. Sellel on oma omadused, mis on matemaatika, inglise keele ja teaduse tunnused. Põhimeetodi puhul luuakse märkide objekt ja määratakse märkide väärtused. Õpilaseobjekt, mis on s1, saab kasutada märgiobjekti, mis on m1. Seetõttu on õpilasel ja märgil suhe "on-a". Märkide objekt võib eksisteerida ka ilma õpilasobjektita. Seetõttu on see liitmine.
Mis on Javas kompositsioon?
Kompositsioon on teatud tüüpi assotsiatsioon. See on spetsiifiline liitmise vorm, mis eeldab omandiõigust. Oletame, et on olemas kaks klassi, mida nimetatakse klassideks A ja B. Kui klassi B objekt ei saa eksisteerida, kui klassi A objekt hävib, siis on tegemist kompositsiooniga. Raamat koosneb paljudest lehekülgedest. Kui raamat hävib, hävivad ka lehed. Leheobjektid ei saa eksisteerida ilma raamatuobjektita. Vaadake allolevat programmi.
Joonis 03: Klassiklass
Joonis 04: Kooliklass
Joonis 05: Põhiprogramm kompositsiooni kirjeldamiseks
Vastav alt ül altoodud programmile on klassiruumil kaks atribuuti, milleks on nimi ja numOfStudents. Kool on klassiruumi objektide kogum. Põhimeetodi puhul luuakse kaks klassiruumi objekti. Need lisatakse "klassiruumidesse". Need "klassiruumid" antakse kooliobjektile. Lõpuks trükitakse klassiruumi nimed ja õpilaste arv kogumiku itereerimise teel. Kui Kooli objekt hävib, hävivad ka klassiruumi objektid. See on näide kompositsioonist. See sisaldab ka suhet „has-a” ja viitab ka omandiõigusele.
Milline seos on Javas liitmise ja kompositsiooni vahel?
Koond ja koosseis on kahte tüüpi seoseid ja koosseis on spetsiaalne liitmise tüüp. Kompositsioon on koondamise alamhulk
Mis vahe on Javas koondamisel ja kompositsioonil?
Agregeerimine vs kompositsioon Javas |
|
Agregatsioon on seos kahe objekti vahel, mis kirjeldab seost "on". | Kompositsioon on spetsiifilisem liitmise tüüp, mis eeldab omandiõigust. |
Kasutus | |
Agregatsiooni kasutatakse siis, kui üks objekt kasutab teist objekti. | Kompositsiooni kasutatakse siis, kui ühele objektile kuulub teine objekt. |
Mõju objektidele | |
Kokkuvõttes ei mõjuta omanikuobjekti hävitamine sisaldavat objekti. | Kompositsioonis mõjutab omanikuobjekti hävitamine sisaldavat objekti. |
Kokkuvõte – liitmine vs kompositsioon Javas
Koondamine ja koostis on OOP-is kaks mõistet. Seos "has-a" kirjeldab, et üks objekt võib kasutada teist objekti. Agregatsioon on seos kahe objekti vahel, mis kirjeldab suhet "has-a". Koosseis on spetsiifilisem liitmise tüüp, mis eeldab omandiõigust. Agregatsiooni ja koostise erinevus Javas seisneb selles, et kui sisalduv objekt võib eksisteerida ilma omava objektita, on see agregaat ja kui sisalduv objekt ei saa eksisteerida ilma omava objektita, on see kompositsioon.