Aggregation (programmering)

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 14. december 2014; checks kræver 27 redigeringer .

I objektorienteret programmering betyder aggregering (eller, som det også blev kaldt tidligere, delegation ) teknikken til at skabe en ny klasse fra eksisterende klasser ved at inkludere dem. Aggregation omtales også ofte som et "ejerforhold" i den forstand, at "en bil har et karrosseri, hjul og en motor".

Indlejrede objekter af en ny klasse er normalt erklæret private, hvilket gør dem utilgængelige for applikationsprogrammører, der arbejder med klassen. På den anden side kan klasseskaberen ændre disse objekter uden at bryde eksisterende klientkode. Derudover giver udskiftning af indlejrede objekter under programmets køretid dig mulighed for dynamisk at ændre dets adfærd. Nedarvningsmekanismen har ikke denne fleksibilitet, da afledte klasser er underlagt restriktioner, som kontrolleres på kompileringstidspunktet.

På grundlag af aggregering implementeres delegeringsteknikken , når opgaven, der er tildelt et eksternt objekt, delegeres til et internt objekt, der er specialiseret i at løse problemer af denne art.

Eksempel

Aggregation : professorer - fakulteter, professorer er tilbage at leve efter ødelæggelsen af ​​fakultetet
Sammensætning : universitet - fakulteter, fakulteter uden universitet dør.

Aggregation

Aggregation (aggregering ved reference) er et del-hel forhold mellem to lige store objekter, når et objekt (container) har et link til et andet objekt. Begge objekter kan eksistere uafhængigt: Hvis beholderen er ødelagt, er dens indhold ikke det.

klasse Professor ; klasse afdeling { privat : Professor * medlemmer [ 5 ]; // Aggregation, fordi ingen sletoperator }; klasse Ehe // Eksempel på sammenlægning { privat : Person & _partner1 ; // Enthaltener Teil. // Aggregation Person & _partner2 ; // Enthaltener Teil. // Aggregation offentlig : // Ehe constructor ( Person & partner1 , Person & partner2 ) : _partner1 ( partner1 ), _partner2 ( partner2 ) { } };

Sammensætning

Sammensætning (aggregering efter værdi) er en mere streng variant af aggregering, når det inkluderede objekt kun kan eksistere som en del af containeren. Hvis beholderen ødelægges, så vil den medfølgende genstand også blive ødelagt.

klasseafdeling ; _ klasses universitet { privat : Institut fakultet [ 20 ]; // komposition }; klasse Karburator ; klasse bil { privat : Karburator * itsCarb ; offentlig : Automobil () { itsCarb = ny karburator ();} virtual ~ Automobile () { delete itsCarb ;} // Sammensætning siden itsCarb objektet vil blive slettet };