Aggregation (programmering)

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 14 december 2014; kontroller kräver 27 redigeringar .

I objektorienterad programmering betyder aggregering (eller, som det också kallades tidigare, delegering ) tekniken att skapa en ny klass från befintliga klasser genom att inkludera dem. Aggregering kallas också ofta för ett "ägarförhållande" i den meningen att "en bil har kaross, hjul och motor".

Kapslade objekt i en ny klass förklaras vanligtvis privata, vilket gör dem otillgängliga för applikationsprogrammerare som arbetar med klassen. Å andra sidan kan klassskaparen modifiera dessa objekt utan att bryta befintlig klientkod. Genom att ersätta kapslade objekt under programmets körning kan du dessutom dynamiskt ändra dess beteende. Arvsmekanismen har inte denna flexibilitet, eftersom härledda klasser är föremål för restriktioner som kontrolleras vid kompilering.

På basis av aggregering implementeras delegeringstekniken när uppgiften som tilldelas ett externt objekt delegeras till ett internt objekt som är specialiserat på att lösa problem av detta slag.

Exempel

Aggregation : professorer - fakulteter, professorer kvar att leva efter förstörelsen av fakulteten
Sammansättning : universitet - fakulteter, fakulteter utan universitet dör.

Aggregation

Aggregation (aggregation genom referens) är en del-hel relation mellan två lika objekt, när ett objekt (behållare) har en länk till ett annat objekt. Båda objekten kan existera oberoende av varandra: om behållaren förstörs, är dess innehåll inte det.

klass Professor ; klass Avdelning { privat : Professor * medlemmar [ 5 ]; // Aggregation, eftersom ingen raderingsoperator }; klass Ehe // Exempel på aggregering { privat : Person & _partner1 ; // Enthaltener Teil. // Aggregationsperson & _partner2 ; // Enthaltener Teil. // Aggregation offentlig : // Ehe konstruktör ( Person & partner1 , Person & partner2 ) : _partner1 ( partner1 ), _partner2 ( partner2 ) { } };

Komposition

Komposition (aggregering efter värde) är en mer strikt variant av aggregering, när det inkluderade objektet bara kan existera som en del av behållaren. Om behållaren förstörs kommer även det medföljande föremålet att förstöras.

klassavdelning ; _ klass universitet { privat : Institutionen fakultet [ 20 ]; // sammansättning }; klass Förgasare ; klassbil _ { privat : Förgasare * itsCarb ; public : Automobile () { itsCarb = new Carburetor ();} virtuell ~ Automobile () { delete itsCarb ;} // Sammansättning sedan itsCarb-objektet kommer att raderas };