Dediščina vs Sestava
Dediščina in sestava sta dva pomembna koncepta, ki jih najdemo v OOP (Object Oriented Programming). Preprosto povedano, sestava in dedovanje obravnavata zagotavljanje dodatnih lastnosti ali vedenja razredu. Dedovanje je sposobnost razreda, da deduje lastnosti in vedenje od nadrejenega razreda tako, da ga razširi. Po drugi strani je Composition sposobnost razreda, da kot člane vsebuje predmete različnih razredov.
Kaj je dedovanje?
Kot že omenjeno, je dedovanje sposobnost, da razred podeduje lastnosti in vedenje od nadrejenega razreda tako, da ga razširi. Dedovanje v bistvu omogoča ponovno uporabo kode, tako da omogoča razširitev lastnosti in obnašanja obstoječega razreda na novo definiran razred. Če se razred A razširi B, potem se razred B imenuje nadrejeni razred (ali super razred), razred A pa se imenuje nadrejeni razred (ali izpeljan razred / pod razred). V tem primeru scenarij bo razred A podedoval vse javne in zaščitene atribute in metode super razreda (B). Podrazred lahko po izbiri nadomešča (zagotavlja nove ali razširjene funkcionalnosti metodam) vedenje, podedovano od nadrejenega razreda.
Dedovanje predstavlja odnos "je-a" v OOP. To v bistvu pomeni, da je A tudi B. Z drugimi besedami, B je lahko razred s splošnim opisom določenega stvarnega sveta, vendar A določa določeno specializacijo. V resničnem problematiki programiranja bi lahko razred Person podaljšali in ustvarili razred Employee. Temu pravimo specializacija. Lahko pa najprej ustvarite tudi razred Employee in ga nato tudi posplošite v razred Person (tj. Posploševanje). V tem primeru bo zaposleni imel vse lastnosti in obnašanje osebe (tj. Uslužbenec je tudi oseba) in lahko vsebuje tudi nekaj dodatnih funkcij (torej oseba ni zaposleni).
Kaj je sestava?
Sestava je sposobnost razreda, da kot podatke o članih vsebuje predmete različnih razredov. Na primer, razred A lahko vsebuje predmet razreda B kot člana. Tu se lahko vse javne metode (ali funkcije), definirane v B, izvajajo znotraj razreda A. Razred A postane vsebnik, medtem ko razred B postane razred, ki ga vsebuje. Sestava se imenuje tudi Containership. V tem primeru lahko rečemo, da je razred A sestavljen iz razreda B. V OOP Sestava predstavlja odnos »ima-a«. Pomembno je opozoriti, da čeprav vsebnik ima dostop do izvajanja vseh javnih metod razreda, ki ga vsebuje, pa ne more spremeniti ali zagotoviti dodatne funkcionalnosti. Ko gre za resnično programsko težavo, je lahko predmet razreda TextBox vsebovan v razredu Form in tako lahko rečemo, da obrazec vsebuje TextBox (ali pa je obrazec sestavljen iz TextBoxa).
Kakšna je razlika med dedovanjem in sestavo?
Čeprav sta dedovanje in sestava dva koncepta OOP, sta si precej različna v tem, kar programerju omogočata. Dedovanje je sposobnost razreda, da podeduje lastnosti in vedenje od nadrejenega razreda tako, da ga razširi, medtem ko je Sestava sposobnost razreda, da kot članske podatke vsebuje predmete različnih razredov. Če se razred razširi, podeduje vse javne in zaščitene lastnosti / vedenje in ta vedenja lahko preglasijo podrazred. Če pa je razred vsebovan v drugem, vsebnik ne dobi zmožnosti spreminjanja ali dodajanja vedenja v vsebovani. Dedovanje v OOP-ju predstavlja razmerje »je-a«, medtem ko Sestava predstavlja odnos »ima-a«.