Aggregáció (programozás)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt hozzászólók, és jelentősen eltérhet a 2014. december 14-én felülvizsgált verziótól ; az ellenőrzések 27 szerkesztést igényelnek .

Az objektum-orientált programozásban az aggregáció (vagy ahogy korábban más néven delegálás ) azt a technikát jelenti, hogy a meglévő osztályokból új osztályt hozzunk létre azok felvételével. Az aggregációt gyakran „tulajdonosi viszonynak” is nevezik, abban az értelemben, hogy „az autónak karosszériája, kerekei és motorja van”.

Az új osztály beágyazott objektumai általában privátnak vannak nyilvánítva, így elérhetetlenek az osztállyal dolgozó alkalmazásprogramozók számára. Másrészt az osztály létrehozója módosíthatja ezeket az objektumokat a meglévő kliens kód feltörése nélkül. Ezenkívül a beágyazott objektumok cseréje a program futási idején lehetővé teszi a program viselkedésének dinamikus megváltoztatását. Az öröklési mechanizmus nem rendelkezik ezzel a rugalmassággal, mivel a származtatott osztályokra korlátozások vonatkoznak, amelyeket a fordításkor ellenőriznek.

Az aggregáció alapján valósul meg a delegálási technika , amikor egy külső objektumhoz rendelt feladatot delegálnak egy belső objektumra, amely ilyen jellegű problémák megoldására szakosodott.

Példa

Összesítés : professzorok - karok, professzorok maradnak élni a kar megsemmisülése után
Összetétel : egyetem - karok, egyetem nélküli karok meghalnak.

Összesítés

Az aggregáció (referencia szerinti összesítés) egy rész-egész kapcsolat két egyenlő objektum között, amikor az egyik objektum (tároló) egy másik objektumhoz kapcsolódik. Mindkét objektum létezhet egymástól függetlenül: ha a konténer megsemmisül, akkor a tartalma nem.

osztály professzor ; osztály Tanszék { privát : professzor * tagok [ 5 ]; // Összevonás, mert nincs törlési operátor }; class Ehe // Példa az összesítésre { privát : Személy & _partner1 ; // Enthaltener Teil. // Összesítő személy & _partner2 ; // Enthaltener Teil. // Nyilvános összesítés : // Ehe konstruktor ( Person & partner1 , Person & partner2 ) : _partner1 ( partner1 ), _partner2 ( partner2 ) { } };

Összetétel

A kompozíció (érték szerinti összesítés) az összesítés szigorúbb változata, amikor a benne lévő objektum csak a tároló részeként létezhet. Ha a konténer megsemmisül, akkor a benne lévő objektum is megsemmisül.

osztály Tanszék ; _ osztályú egyetem { privát : Tanszéki kar [ 20 ]; // összetétel }; osztály Karburátor ; osztályú autó { privát : Karburátor * itsCarb ; public : Automobile () { itsCarb = új karburátor ();} virtual ~ Automobile () { delete itsCarb ;} // Összetétel óta itsCarb objektum törlésre kerül };