Programavimo metu pakartotinai naudojamas kodas yra esamos programinės įrangos panaudojimas kuriant naują programinę įrangą, naudojant pakartotinio naudojimo principus. Kodo pakartotinis panaudojimas laikomas pagrindiniu produktyviu informacinių technologijų imlių įmonių funkcionalumu. Tai skatinama į objektą orientuotose sistemose, užmezgant ryšius tarp klasių. Yra du pagrindiniai būdai, kaip užmegzti šiuos ryšius objektinio programavimo metu - Paveldimumas ir Kompozicija. Paveldėjimo įgyvendinimas yra vienas iš būdų susieti klases, tačiau OOP suteikia naujo tipo ryšį tarp klasių, vadinamą kompozicija. Užmezgusi ryšį tarp naujų ir esamų klasių, nauja klasė gali paveldėti arba įterpti kodą iš vienos ar kelių esamų klasių.
OOP paveldėjimas yra metodika, kuria objektas įgyja vieno ar daugiau kitų objektų savybes. Tai yra viena galingiausių priemonių, leidžiančių įgyvendinti pakartotinį kodo naudojimą OOP. Naudojant paveldėjimą, gali būti sukurta nauja klasė, užmezgant tėvų ir vaikų ryšius su esamomis klasėmis. Objekto kompozicija yra alternatyva klasės palikimui. Objekto naudojimas kitame objekte yra žinomas kaip kompozicija. Daugeliu atvejų norėtumėte objektą naudoti kaip kitos klasės lauką, nes nesunku sukurti sudėtingas klases, kaip komponentus naudojant anksčiau parašytas, gerai parengtas klases. Tai vadinama kompozicija. Ir paveldėjimas, ir kompozicija daugeliu atvejų suteikia lygiavertę funkciją, objekto kompozicija yra geresnis pakartotinio naudojimo modelis nei klasės paveldėjimas. Šiame straipsnyje lyginami du požiūriai.
Paveldimumas yra viena iš galingiausių priemonių įgyvendinant kodo pakartotinį naudojimą į objektą orientuotame programavime. Tai reiškia, kad vienas objektas įgyja vieno ar daugiau kitų objektų savybes. Paveldimumas C ++ reiškia, kad galite kurti klases, kurios išveda jų atributus iš esamų klasių. Tai reiškia, kad jūs specializuojatės klase, kad sukurtumėte ryšį tarp klasių, o tai lemia stiprų ryšį tarp bazinės ir išvestinių klasių. Paveldėjimo įgyvendinimas skatina kodo pakartotinį naudojimą, nes iš esamų klasių sukuriamos naujos klasės. Klasės palikimas taip pat leidžia lengviau modifikuoti diegimą, kuris naudojamas pakartotinai. Tačiau klasių palikimas turi tam tikrų trūkumų. Pirmiausia, kadangi paveldimumas yra apibrėžtas kompiliavimo metu, negalite pakeisti iš tėvų klasių paveldėtų diegimų vykdymo metu..
OOP suteikia dar vieną ryšį tarp klasių, vadinamą kompozicija, kuri taip pat žinoma kaip santykis su santykiais. Jei vieno objekto bruožai turi būti kito objekto dalis, santykiai reikalauja kompozicijos. Norėdami sudaryti klasę iš esamų klasių, kiekvienos klasės objektas turėtų būti paskelbtas naujos klasės nariu. Paprastais žodžiais tariant, objekto naudojimas kitame objekte yra žinomas kaip kompozicija. Daugybę kartų galbūt norėsite naudoti objektą kaip lauką kitoje klasėje. Kompozicijoje naudojate objektą klasės viduje. Skirtingai nuo klasės paveldėjimo, objektų kompozicija dinamiškai apibrėžiama vykdant objektus, įgyjant nuorodas į kitus objektus. Be to, kompozicija suteikia geresnį būdą naudoti objektą nepakenkiant vidinėms objekto detalėms, būtent tada kompozicija yra naudinga.
Nors paveldėjimas ir kompozicija skatina kodo pakartotinį panaudojimą objektų orientuotoje sistemoje, kurdami ryšius tarp klasių ir užtikrindami lygiavertį funkcionalumą įvairiais būdais, jie naudoja skirtingus metodus. Paveldėjimo dėka galite sukurti klases, kurios išveda jų atributus iš esamų klasių, taigi, palikimui naudodami klasę, galite išplėsti esamą klasę. Objekto naudojimas kitame objekte, priešingai, yra žinomas kaip kompozicija. Objekto kompozicija yra alternatyva klasės palikimui. Jei vieno objekto bruožai turi būti kito objekto dalis, santykiai reikalauja kompozicijos.
Paveldėjimo metu jūs specializuojatės klase, kad sukurtumėte „yra-yra“ ryšį tarp klasių, o tai lemia stiprų ryšį tarp bazinės ir išvestinių klasių. Tai leidžia sudaryti klasių hierarchiją, o hierarchija prasideda nuo bendriausios klasės ir pereina į konkretesnes klases. Įgyvendinant palikimą, vienos klasės narių funkcijos tampa kitos klasės savybėmis, jų aiškiai neužkoduojant klasėje. Kompozicijoje jūs naudojate objektą klasės viduje ir visos objekto užklausos yra persiunčiamos objektui. Vidinės detalės kompozicijoje nėra veikiamos viena kitos, taigi tai yra „turiu“ santykis.
Klasės paveldimumas yra apibrėžtas kompiliavimo metu, todėl vykdymo metu negalite pakeisti iš tėvų klasių paveldėtų diegimų. Dėl paveldėjimo poklasis parodo jo tėvo įgyvendinimo detales, todėl dažnai sulaužoma kapsulė. Visi pradinės klasės pakeitimai atsispindės poklasyje, o tai gali sukelti problemų bandant pakartotinai naudoti poklasį. Objektų kompozicija, atvirkščiai, dinamiškai apibrėžiama vykdant objektus, įgyjant nuorodas į kitus objektus. Kadangi objektams prieinama tik per jų sąsajas, tai nesugadins kapsulės. Bet kurį objektą galima pakeisti kitu objektu tol, kol jis yra to paties tipo.
Daugeliu atvejų norėtumėte naudoti objektą kaip lauką kitoje klasėje, nes sudėtingas klases lengviau sukurti naudojant anksčiau parašytas, gerai parengtas klases. Čia jūs naudojate kompoziciją. Paveldimumas suteikia galimybę pakartotinai panaudoti kodą pratęsiant klasę kuo mažiau pastangų, todėl paveldėjimas yra vertinga priemonė užmegzti ryšius tarp klasių. Apskritai, geriau naudoti kompoziciją, nes tai suteikia būdą naudoti objektą nepakenkiant vidinėms objekto detalėms, kur kompozicija yra naudinga. Paveldimumas nėra be problemų, tačiau, kaip ir paveldėjimas, objekto kompozicija kelia panašius rūpesčius dėl objekto kūrimo ir sunaikinimo..