UML Association vs. Agregatsioon vs. Koosseis [EXAMPLE]
UML diagrammi seoseid kasutatakse erinevate asjade vahelise seose kujutamiseks. Suhe on seos selliste asjade vahel nagu struktuursed, käitumuslikud või rühmitavad asjad ühtses modelleerimiskeeles.
Järgmised on UML-i standardseoste erinevad tüübid,
- Ühing
- Sõltuvus
- Üldistamine
- Realiseerimine
Peale nende võimaldab UML kasutada liitmist ja kompositsioonisuhet.
UML Ühing
See on struktuurne seos, mis kujutab endast objekte, mida saab ühendada või seostada mõne teise süsteemi sees oleva objektiga. UML-i assotsiatsioonisuhtele saab rakendada järgmisi piiranguid.
- {kaudne} – Kaudsed piirangud määravad, et seos ei ole ilmne; see põhineb kontseptsioonil.
- {tellitud} – Järjestatud piirangud määravad, et objektide kogum seose ühes otsas on kindlal viisil.
- {changeable} – Muudetav piirang määrab, et süsteemi erinevate objektide vahelist ühendust saab vastavalt vajadusele lisada, eemaldada ja muuta.
- {addOnly} – See määrab, et uusi ühendusi saab lisada objektist, mis asub ühenduse teises otsas.
- {külmutatud} – See määrab, et kui link on kahe objekti vahele sisestatud, ei saa seda muuta, kui fikseeritud piirang on antud lingil või ühendusel aktiivne.
Samuti saame luua klassi, millel on UML-i assotsiatsiooni omadused; seda nimetatakse assotsiatsiooniklassiks.
Refleksiivne assotsiatsioon
Refleksiivne assotsiatsioon on assotsiatsioonisuhte alatüüp UML. Refleksiivses assotsiatsioonis võivad sama klassi eksemplarid olla omavahel seotud. Ka klassi eksemplari nimetatakse objektiks.
Refleksiivne assotsiatsioon väidab, et link või ühendus võib esineda sama klassi objektides.
Näide:
Vaatleme näidet klassi puuviljast.
Puuviljaklassis on kaks eksemplari, näiteks mango ja õun. Refleksiivne seos väidab, et mango ja õuna vahel võib olla seos, kuna need on sama klassi eksemplarid, näiteks puuviljad.
Juhitud ühing
Nagu nimigi ütleb, on suunatud seos seotud voolu suunaga assotsiatsiooniklassides.
Suunatud koosluses on voog suunatud. Seos ühest klassist teise klassi voolab ainult ühes suunas.
Seda tähistatakse nooleotsaga pideva joonega.
UML-i assotsiatsiooni näide:
Võib öelda, et serveri ja kliendi vahel on suunatud seos.
Server saab töödelda kliendi päringuid. See voog on ühesuunaline, mis liigub ainult serverist kliendini. Seega võib süsteemi serverites ja klientides esineda suunatud assotsiatsioonisuhe.
UML-i koostis
See ei ole standard UML-i suhe, kuid seda kasutatakse endiselt erinevates rakendustes.
Komposiitliit on koondseoste alamtüüp, millel on järgmised omadused:
- See on kahesuunaline seos objektide vahel.
- See on terviku/osa suhe.
- Kui komposiit kustutatakse, kustutatakse kõik muud sellega seotud osad.
Komposiitliitmist kirjeldatakse kui binaarset seost, mis on kaunistatud täidetud musta teemandiga agregaadi (terviku) otsas.
Kaust võib sisaldada palju faile, samas kui igal failil on täpselt üks kausta ülem. Kui kaust kustutatakse, eemaldatakse ka kõik selles sisalduvad failid.
Komposiitliites võib objekt korraga olla osa ainult ühest komposiidist.
UML-i koostise näide:
Näiteks aknasüsteemis kuulub raam täpselt ühele aknale. Komposiitliites vastutab kogu süsteem oma osade dispositsiooni eest, mis tähendab, et liit peab juhtima oma osade loomist ja hävitamist.
UML-i liitmine
Agregaat on UML-i seossuhte alamtüüp. Agregatsioon ja koosseis on mõlemad UML-i assotsiatsioonisuhte tüübid. Koondamissuhet saab kirjeldada lihtsate sõnadega kui "ühe klassi objekt võib omada teise klassi objekte või neile juurde pääseda".
Koondseoses jääb sõltuv objekt suhte ulatusse ka siis, kui lähteobjekt hävib.
UML-i liitmise näide:
Vaatleme näidet autost ja rattast.
Auto vajab korrektseks tööks ratast, kuid ratas ei vaja alati autot. Seda saab kasutada ka jalgratta, jalgratta või muude sõidukitega, kuid mitte konkreetse autoga. Siin on rattaobjekt tähendusrikas ka ilma autoobjektita. Sellist tüüpi seost nimetatakse UML-i liitsuhteks.
Ühing vs. Agregatsioon vs. Koosseis
Ühing | Liitmine | Aine koostis |
---|---|---|
Seosesuhet tähistatakse noolega. | Koondseost tähistatakse sirgjoonega, mille ühes otsas on tühi nooleots. | Kompositsiooni seost tähistatakse sirgjoonega, mille ühes otsas on täidetud noolepea. |
UML-is võib seos olla kahe või enama klassi vahel. | Agregatsioon on osa assotsiatsioonisuhtest. | Kompositsioon on osa assotsiatsioonisuhtest. |
Assotsiatsiooniklasside vahel võib olla üks-üks, üks-mitu, mitu-üks ja mitu-mitu seost. | Agregatsiooni peetakse nõrgaks seosetüübiks. | Kompositsiooni peetakse tugevaks assotsiatsioonitüübiks. |
Assotsiatsioonisuhtes võib üks või mitu objekti olla omavahel seotud. | Agregatsioonisuhtes võivad üksteisega seotud objektid jääda süsteemi ulatusse ilma üksteiseta. | Kompositsioonisuhtes ei saa üksteisega seotud objektid üksteiseta ulatusse jääda. |
Objektid on omavahel seotud. | Lingitud objektid ei sõltu teisest objektist. | Objektid on üksteisest väga sõltuvad. |
UML-i assotsiatsioonis võib ühe elemendi kustutamine mõjutada teist seotud elementi, kuid ei pruugi seda mõjutada. | UML-i koondamises ei mõjuta ühe elemendi kustutamine teist seotud elementi. | UML-i kompositsioonis mõjutab ühe elemendi kustutamine teist seotud elementi. |
Näide: Õpetaja on seotud mitme õpilasega. Or Õpetaja annab õpilastele juhiseid. |
Näide: Autol on vaja ratast, kuid see ei nõua alati sama ratast. Auto saab adekvaatselt toimida ka teise rattaga. |
Näide: Fail asetatakse kausta sisse. Kui kaust kustutatakse, kustutatakse ka selle kaustaga seotud fail. |
kokkuvõte
- Suhe on seos asjade vahel.
- Assotsiatsioon, sõltuvus, üldistamine ja realiseerimine on erinevad UML-i pakutavad suhted.
- Lisaks standardsetele suhetele kasutatakse UML-is koostist ja liitmist.
- UML-is on seoste tüübid nii liitmine kui ka koostis.
- UML-i koosseis on kahepoolne seos, mida nimetatakse ka binaarsuhteks.
Vaadake meie artiklit parimate UML-i tööriistade kohta: - Kliki siia