Programiranje

Pojasnjeno povezovanje, združevanje in sestava v OOP

Unified Modeling Language (UML) je dejanski standard za modeliranje objektno usmerjenih sistemov. V UML obstaja pet različnih vrst razmerij: združevanje, združevanje, sestava, odvisnost in dedovanje. Ta članek predstavlja razpravo o prvih treh od teh konceptov, preostale pa prepušča drugemu blogu.

Asociacija pri objektno usmerjenem programiranju

Povezava je pomensko šibek odnos (pomenska odvisnost) med sicer nepovezanimi predmeti. Povezava je razmerje "uporabe" med dvema ali več predmeti, pri katerih imajo predmeti lastno življenjsko dobo in ni lastnika.

Kot primer si predstavljamo odnos med zdravnikom in pacientom. Zdravnik je lahko povezan z več bolniki. Hkrati lahko en bolnik obišče več zdravnikov za zdravljenje ali posvetovanje. Vsak od teh predmetov ima svoj življenjski cikel in ni "lastnika" ali starša. Predmete, ki so del povezavnega razmerja, je mogoče ustvariti in uničiti samostojno.

V UML je asociacijski odnos predstavljen z eno puščico. Asociacijski odnos je lahko predstavljen kot ena na ena, ena na več ali veliko na veliko (znana tudi kot kardinalnost). V bistvu povezava med dvema ali več predmeti označuje komunikacijsko pot (imenovano tudi povezava) med njima, tako da lahko en objekt pošlje sporočilo drugemu. Naslednji delček kode prikazuje, kako sta dva razreda, BlogAccount in BlogEntry, povezana med seboj.

javni razred BlogAccount

   {

zasebno BlogEntry [] blogEntries;

// Drugi člani razreda BlogAccount

   }

javni razred BlogEntry

   {

Int32 blogId;

niz nizov;

niz besedila;

// Drugi člani razreda BlogEntry

   }

Združevanje v objektno usmerjenem programiranju

Združevanje je posebna oblika povezave med dvema ali več predmeti, pri katerih ima vsak predmet svoj življenjski cikel, vendar obstaja tudi lastništvo. Združevanje je tipično razmerje celota / del ali roditelj / otrok, vendar lahko ali ne pomeni fizičnega zadrževanja. Bistvena lastnost razmerja združevanja je, da lahko celota ali nadrejeni (tj. Lastnik) obstaja brez dela ali podrejenega in obratno.

Kot primer lahko delavec pripada enemu ali več oddelkom v organizaciji. Če pa se oddelek zaposlenega izbriše, predmet zaposlenega ne bi bil uničen, ampak bi živel naprej. Upoštevajte, da odnosi med predmeti, ki sodelujejo pri združevanju, ne morejo biti vzajemni - tj. Oddelek ima lahko "lastnika" zaposlenega, vendar zaposleni ni lastnik oddelka. V naslednjem primeru kode je razvidno razmerje združevanja med razredima BlogAuthor in BlogAccount.

javni razred BlogAuthor

   {

zasebno Int32 authorId;

zasebni niz firstName;

zasebni niz lastName;

// Drugi člani razreda BlogAuthor

   }

javni razred BlogAccount

   {

zasebno BlogEntry [] blogEntries;

// Drugi člani razreda BlogAccount

   }

Združevanje je običajno predstavljeno v UML z uporabo črte z votlim diamantom. Tako kot povezovanje lahko tudi združevanje vključuje razmerje ena na ena, ena na več ali veliko na veliko med sodelujočimi predmeti. V primeru razmerja ena proti več ali od številnih do mnogih lahko rečemo, da gre za odvečno zvezo.

Sestava v objektno usmerjenem programiranju

Sestava je posebna oblika združevanja. Če je nadrejeni objekt uničen, potem tudi podrejeni predmeti prenehajo obstajati. Sestava je dejansko močna vrsta združevanja in jo včasih imenujejo tudi razmerje "smrt". Kot primer je lahko hiša sestavljena iz ene ali več sob. Če je hiša uničena, so uničene tudi vse sobe, ki so del hiše. Naslednji delček kode prikazuje odnos kompozicije med dvema razredoma, House in Room.

Hiša javnega razreda

{

zasebna soba;

javna hiša ()

   {

soba = nova Soba ();

   }

}

Tako kot združevanje je tudi kompozicija razmerje celota / del ali roditelj / otrok. Vendar v sestavi življenjski cikel dela ali otroka nadzoruje celota ali starš, ki je njen lastnik. Upoštevati je treba, da je ta nadzor lahko neposreden ali prehoden. To pomeni, da je starš lahko neposredno odgovoren za ustvarjanje ali uničenje otroka ali pa starš lahko uporabi otroka, ki je že bil ustvarjen. Podobno lahko nadrejeni objekt prenese nadzor nad drugim nadrejenim, da uniči podrejeni objekt. Sestava je v UML predstavljena s črto, ki povezuje predmete s trdnim diamantom na koncu predmeta, ki je lastnik drugega predmeta.

Upam, da vam je ta razprava o odnosih združevanja in združevanja pomagala razumeti, kako se ti trije koncepti razlikujejo. Ne pozabite, da sta združevanje in sestava obe podskupini združevanja. Tako pri združevanju kot pri sestavi je lahko predmet enega razreda lastnik predmeta drugega razreda. In tako pri združevanju kot pri sestavi podrejeni predmeti pripadajo enemu nadrejenemu objektu, torej imajo lahko le enega lastnika.

Nazadnje, v razmerju združevanja so življenjski cikli nadrejenih in podrejenih predmetov neodvisni. V kompozicijskem razmerju smrt starševskega predmeta pomeni tudi smrt njegovih otrok.

$config[zx-auto] not found$config[zx-overlay] not found