Razlika med sestavo in dedovanjem

V programiranju je koda za večkratno uporabo uporaba obstoječe programske opreme za izdelavo nove programske opreme po načelih ponovne uporabe. Ponovna uporaba kod velja za temeljno produktivno funkcijo v podjetjih, ki se ukvarjajo z informacijsko tehnologijo. V objektno usmerjenih sistemih se spodbuja z vzpostavljanjem odnosov med razredi. V objektno usmerjenem programiranju obstajata dva temeljna načina za vzpostavitev teh razmerij-dedovanje in sestavljanje. Izvajanje dedovanja je eden od načinov za povezovanje razredov, vendar OOP zagotavlja novo vrsto odnosa med razredi, imenovano sestava. Z vzpostavitvijo odnosa med novimi in obstoječimi razredi lahko novi razred podeduje ali vgradi kodo iz enega ali več obstoječih razredov.

V OOP je dedovanje metodologija, po kateri predmet pridobi lastnosti enega ali več drugih predmetov. Je eno najmočnejših orodij za izvajanje ponovne uporabe kode v OOP. Pri uporabi dedovanja je mogoče ustvariti nov razred z vzpostavitvijo odnosov starš-otrok z obstoječimi razredi. Sestava predmeta je alternativa dedovanju razredov. Uporaba predmeta v drugem objektu je znana kot sestava. Večkrat bi želeli uporabiti predmet kot polje v drugem razredu, ker je enostavno ustvariti kompleksne razrede z uporabo predhodno napisanih, dobro oblikovanih razredov kot komponent. To se imenuje sestava. No, dedovanje in sestava v mnogih primerih zagotavljata enakovredne funkcije, sestava predmetov je boljši model ponovne uporabe kot dedovanje razredov. Ta članek primerja oba pristopa.

Kaj je dedovanje?

Dedovanje je eno najmočnejših orodij za izvajanje ponovne uporabe kode v objektno usmerjenem programiranju. Nanaša se na funkcionalnost, s katero en predmet pridobi lastnosti enega ali več drugih predmetov. Dedovanje v C ++ pomeni, da lahko ustvarite razrede, ki izhajajo iz atributov iz obstoječih razredov. To pomeni, da ste razred specializirani za ustvarjanje odnosa med razredi, kar ima za posledico močno povezavo med osnovnimi in izpeljanimi razredi. Izvajanje dedovanja spodbuja ponovno uporabo kode, ker se novi razredi ustvarjajo iz obstoječih razredov. Dedovanje razredov olajša tudi spreminjanje izvedbe, ki se ponovno uporablja. Toda dedovanje razredov ima tudi nekaj pomanjkljivosti. Prvič, ker je dedovanje definirano v času prevajanja, izvedb, podedovanih iz nadrejenih razredov, med izvajanjem ne morete spremeniti.

Kaj je sestava?

OOP ponuja še eno razmerje med razredi, imenovano kompozicija, ki je znano tudi kot razmerje has-a. Če morajo biti lastnosti enega predmeta del drugega predmeta, razmerje zahteva sestavo. Za sestavljanje razreda iz obstoječih razredov je treba predmet vsakega razreda razglasiti za člana novega razreda. Preprosto povedano, uporaba predmeta v drugem objektu je znana kot kompozicija. Velikokrat boste morda želeli uporabiti predmet kot polje v drugem razredu. V kompoziciji uporabljate predmet znotraj razreda. Za razliko od dedovanja razredov je sestava objekta med izvajanjem dinamično definirana s pomočjo objektov, ki pridobivajo reference na druge objekte. Poleg tega kompozicija ponuja boljši način uporabe predmeta, ne da bi pri tem ogrozili notranje podrobnosti predmeta, kjer je kompozicija uporabna.

Razlika med sestavo in dedovanjem

Pristop

Medtem ko dedovanje in sestava spodbujata ponovno uporabo kode v objektno usmerjenem sistemu z vzpostavljanjem razmerij med razredi in na več načinov zagotavljata enakovredne funkcije, uporabljata različne pristope. Z dedovanjem lahko ustvarite razrede, ki svoje atribute izpeljejo iz obstoječih razredov, tako da lahko pri dedovanju za ustvarjanje razreda razširite obstoječi razred. Nasprotno, uporaba predmeta v drugem objektu je znana kot kompozicija. Sestava predmeta je alternativa dedovanju razredov. Če morajo biti lastnosti enega predmeta del drugega predmeta, razmerje zahteva sestavo.

Odnos

Pri dedovanju razred specializirate za ustvarjanje odnosa »is-a« med razredi, kar ima za posledico močno povezavo med osnovnimi in izpeljanimi razredi. Omogoča oblikovanje hierarhije razredov, ki se začne z najobsežnejšim razredom in se premakne v bolj specifične razrede. Z izvajanjem dedovanja članske funkcije iz enega razreda postanejo lastnosti drugega razreda, ne da bi jih izrecno kodirali v razredu. Pri sestavi uporabljate predmet znotraj razreda in vse zahteve do predmeta se posredujejo predmetu. Notranji detajli v kompoziciji niso izpostavljeni drug drugemu, zato gre za odnos "ima-a".

Izvajanje

Dedovanje razredov je definirano v času prevajanja, zato izvedb, podedovanih iz nadrejenih razredov, med izvajanjem ne morete spremeniti. Ker dedovanje izpostavlja podrazred podrobnostim o izvajanju svojih nadrejenih, pogosto prekine inkapsulacijo. Vse spremembe v nadrejenem razredu se bodo odrazile v podrazredu, kar lahko povzroči težave, ko poskusite znova uporabiti podrazred. Nasprotno, sestava objektov je med izvajanjem dinamično definirana s pomočjo objektov, ki pridobivajo reference na druge objekte. In ker se do objektov dostopa izključno prek njihovih vmesnikov, to ne bo prekinilo inkapsulacije. Vsak predmet lahko med izvajanjem zamenjate z drugim objektom, če ima isti tip.

Sestava proti dedovanju: Primerjalna tabela

Povzetek sestave proti dedovanju

Večkrat bi želeli uporabiti predmet kot polje v drugem razredu, ker je kompleksne razrede lažje ustvariti z uporabo predhodno napisanih, dobro oblikovanih razredov. Tu uporabite kompozicijo. Dedovanje ponuja način za ponovno uporabo kode z razširitvijo razreda z minimalnimi napori, zato je dedovanje dragoceno orodje pri vzpostavljanju odnosov med razredi. Na splošno je bolje uporabiti kompozicijo, saj ponuja način uporabe predmeta brez ogrožanja notranjih podrobnosti predmeta, kjer je kompozicija uporabna. Dedovanje ni brez težav, vendar tako kot dedovanje sestava predmeta povzroča podobne pomisleke glede ustvarjanja in uničenja predmetov.

Poglej več o: ,