Tabla de Contenidos
Aggregointi on eräänlainen luokkien välinen assosiaatio, joka voidaan suorittaa erilaisilla olioohjelmointikielillä, kuten Java. Se on prosessi, jonka avulla koodia voidaan käyttää uudelleen nopeasti ja tehokkaasti, mikä tekee ohjelmista paljon helpompi kirjoittaa ja suorittaa tehokkaammin.
Yleisesti ottaen aggregointi viittaa luokkaan toisen luokan sisällä. Tämä luo niin sanotun HAS-A-suhteen sisältävän luokan ja sisältävän luokan välille. Näille suhteille on ominaista se, että ne ovat yksisuuntaisia, koska ne viittaavat siihen, että yksi luokista sisältää toisen; tämä estää päinvastaisen tapahtuman.
Voidaan esimerkiksi sanoa, että yrityksellä, joka voidaan nähdä ohjelmoinnin näkökulmasta objektiluokkana, on joukko työntekijöitä; nämä puolestaan voidaan nähdä myös esineinä, joilla on omat attribuuttinsa. Tässä tapauksessa sisältävä luokka on yritys, kun taas sisältävä luokka ovat työntekijät. Tämä suhde on järkevä vain tähän suuntaan, eli yrityksestä työntekijälle. Päinvastaisessa suhteessa ei ole järkeä, koska se olisi kuin sanoisi, että työntekijä sisältää yrityksen. Se, että tässä ei ole järkeä, osoittaa, että kyseessä on yksisuuntainen suhde.
Aggregointi luokkakaavioissa
Unified Modeling Language (UML), joka on monimutkaisten ohjelmistojärjestelmien suunnitteluun luotu universaali visuaalinen kieli, luokkakaavioita käytetään kuvaamaan järjestelmän rakennetta ja ominaisuuksia. Näissä kaavioissa jokainen luokka ja sen suhteet muihin on esitetty geometristen kuvioiden avulla. Aggregaation tapauksessa tätä suhdetta edustaa sisältävän luokan sivulla oleva ontto vinoneliö, joka on yhdistetty suoran janan avulla sisältävään luokkaan. Esimerkiksi:
Tämä on aggregaatiosuhde, joka osoittaa, että Well-luokka sisältää Duck-luokan.
Miten aggregointi toteutetaan Javassa?
Aggregoinnin toteuttaminen Javassa on suhteellisen yksinkertaista. On vain luotava kaksi luokkaa ja sitten viitattava ensimmäiseen luokkaan toisen sisällä.
Sen lisäksi, että Java-aggregaatiolle luodaan ”on” tai ”on” -suhde, sille on ominaista heikko suhde säiliöobjektin ja sisällön välillä. Tämä tarkoittaa, että yhden tuhoaminen ei tarkoita toisen tuhoamista. Tämän tyyppisen suhteen ymmärtämiseksi esimerkkinä voidaan ottaa opettajan ja hänen oppilaidensa välinen suhde. Tässä tapauksessa opettajan katoaminen tai kuolema ei johda hänen oppilaidensa katoamiseen tai kuolemaan.
Päinvastainen tapaus olisi ihmisen ja hänen sydämensä välinen suhde. Ei ole epäilystäkään siitä, että sydän sisältyy ihmiseen, mutta tämä suhde on erilainen kuin aggregaatio. Tämä johtuu siitä, että tässä tapauksessa molemmat ovat riippuvaisia toisistaan. Ihmisen tuhoutuminen tuhoaa myös sydämen, koska se tarvitsee toimiakseen kehon tarjoamia ravintoaineita ja happea. Toisaalta sydämen tuhoutuminen tuhoaa myös ihmisen, koska ilman sydäntä emme voi elää (pois lukien siirrot tai muut keinotekoiset elämäntukimenetelmät).
Aggregaatioesimerkki
Seuraava koodi havainnollistaa yhdistämisen toteuttamista kahden luokan välisenä yhdistämismuotona Javaa käyttämällä. Esimerkki kertoo ohjelmasta, jolla seurataan, millä yrityksen työntekijöillä on oma auto ja kenellä ei, sekä kenellä on polkupyörää ja kenellä ei.
Koska pyrimme luomaan suhteen, joka osoittaa, että työntekijällä ”on” auto ja/tai että työntekijällä ”on” polkupyörä, se on aggregaatiosuhde sen luokan välillä, johon työntekijä kuuluu (jota kutsumme työntekijäksi , ilmeisistä syistä) ja kaksi lisäluokkaa, yksi autolle ja toinen polkupyörälle.
Ensimmäinen asia, joka on tehtävä näissä tapauksissa, on luoda vastaavat luokat. Tässä tapauksessa on kolme luokkaa: yksi autolle, yksi polkupyörälle ja yksi työntekijälle. Seuraavassa kuvassa on koodi näiden luokkien luomiseen. Luokkien nimi on Auto, Polkupyörä ja Työntekijä.
Yllä olevasta koodista näet myös, että jokaiseen luokkaan liittyy tiettyjä attribuutteja. Auton tapauksessa sen määritteinä on malli, väri ja rekisterikilvet, jotka kaikki liittyvät autoon. Sama tapahtuu polkupyörän kanssa, joka liittyy rekisterinumeroon ja malliin.
Kun tarkastelemme Työntekijä-luokkaa, huomaamme, että tällä luokalla on attribuutit monbreem , joka edustaa työntekijän nimeä, ja empid, joka edustaa työntekijän tunnusnumeroa; sitten se viittaa auto- ja pyöräluokkiin luoden yhdistämisyhteyden näiden luokkien välille. Lopuksi työntekijän tietue luodaan yhdessä hänen autonsa ja polkupyöränsä kanssa.
Huomaa, että tässä esimerkissä Auto- ja Bike-luokkiin viittaaminen Työntekijä-luokassa mahdollistaa pyörän ja auton attribuuttien käytön työntekijäluokassa.
Tämän ohjelman tulos olisi:
________Työntekijätiedot________
Työntekijän nimi: Xavier
Työntekijän tunnistenumero: 210921
________Työntekijän auton tiedot________
Auton malli: Corolla
Auton väri: Vihreä
Auton rekisterikilpi: XFZ-043
________Työntekijän pyörän tiedot________
Pyörän malli: MERIDA
Polkupyörän levyt: LAA-11B
Viitteet
- Aggregointi Java-ohjelmoinnissa . (2020). ICHI.PRO. https://ichi.pro/es/agregacion-en-programacion-java-144087060492693
- Barquinero, JMM (2019). Aggregointi vs kokoonpano luokkakaavioissa. UML. | SEAS blogi . SEAS blogi. https://www.seas.es/blog/informatica/agregacion-vs-composicion-en-diagramas-de-clases-uml/
- Ohjelmistojen mentorointi. (2019). OOP8 – Olio-ohjelmointi Javassa – UML-kaaviot & OOP – Harjoitukset [Video]. Youtube. https://www.youtube.com/watch?v=-Gy7Rf_wOeY