Aggregointi (ohjelmointi)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 14. joulukuuta 2014 tarkistetusta versiosta . tarkastukset vaativat 27 muokkausta .

Olio -ohjelmoinnissa yhdistäminen (tai, kuten sitä aiemmin kutsuttiin, delegointi ) tarkoittaa tekniikkaa, jolla luodaan uusi luokka olemassa olevista luokista sisällyttämällä ne mukaan. Aggregaatiota kutsutaan usein myös "omistussuhteeksi" siinä mielessä, että "autossa on kori, pyörät ja moottori".

Uuden luokan sisäkkäiset objektit julistetaan yleensä yksityisiksi, jolloin luokan kanssa työskentelevät sovellusohjelmoijat eivät pääse niihin käsiksi. Toisaalta luokan luoja voi muokata näitä objekteja rikkomatta olemassa olevaa asiakaskoodia. Lisäksi sisäkkäisten objektien korvaaminen ohjelman ajon aikana antaa sinun muuttaa sen toimintaa dynaamisesti. Periytysmekanismilla ei ole tätä joustavuutta , koska johdettuihin luokkiin kohdistuu rajoituksia, jotka tarkistetaan käännösvaiheessa.

Aggregoinnin perusteella toteutetaan delegointitekniikka , kun ulkoiselle objektille annettu tehtävä delegoidaan sisäiselle objektille, joka on erikoistunut tällaisten ongelmien ratkaisemiseen.

Esimerkki

Aggregaatio : professorit - tiedekunnat, professorit jäävät elämään tiedekunnan tuhoutumisen jälkeen
Koostumus : yliopisto - tiedekunnat, tiedekunnat ilman yliopistoa kuolevat.

Aggregaatio

Aggregointi (viittauksella yhdistäminen) on osa-kokonaisuussuhde kahden samansuuruisen objektin välillä, kun yhdellä objektilla (säilöllä) on linkki toiseen objektiin. Molemmat objektit voivat olla olemassa itsenäisesti: jos säiliö tuhoutuu, sen sisältö ei ole.

luokan professori ; luokan osasto { yksityinen : Professori * jäsenet [ 5 ]; // Aggregaatio, koska ei poisto-operaattoria }; class Ehe // Esimerkki aggregaatiosta { yksityinen : Henkilö & _kumppani1 ; // Enthaltener Teil. // Yhdistelmähenkilö & _partner2 ; // Enthaltener Teil. // Julkinen koonti : // Ehe rakentaja ( Henkilö & kumppani1 , Henkilö & kumppani2 ) : _kumppani1 ( kumppani1 ), _kumppani2 ( kumppani2 ) { } };

Koostumus

Koostumus (arvon aggregointi) on tiukempi muunnelma yhdistämisestä, kun mukana oleva objekti voi olla vain osa säilöä. Jos kontti tuhoutuu, myös mukana oleva esine tuhoutuu.

luokkaosasto ; _ luokan yliopisto { yksityinen : Osaston tiedekunta [ 20 ]; // koostumus }; luokka Kaasutin ; luokan auto { yksityinen : Kaasutin * itsCarb ; julkinen : auto () { itsCarb = uusi kaasutin ();} virtual ~ Automobile () { delete itsCarb ;} // Koostumus alkaen itsCarb-objekti poistetaan };