Paveldėjimo ir kompozicijos skirtumas

Paveldimumas ir kompozicija

Paveldimumas ir kompozicija yra dvi svarbios sąvokos, rastos OOP (Object Oriented Programming). Paprasčiau tariant, tiek kompozicija, tiek paveldėjimas yra susiję su papildomų savybių ar elgesio suteikimu klasei. Paveldimumas yra klasės sugebėjimas paveldėti savybes ir elgesį iš tėvų klasės ją pratęsiant. Kita vertus, kompozicija yra klasės galimybė kaip duomenų narius laikyti skirtingų klasių objektus.

Kas yra paveldimumas?

Kaip minėta aukščiau, paveldėjimas yra klasės sugebėjimas paveldėti savybes ir elgesį iš tėvų klasės, pratęsiant ją. Paveldėjimas iš esmės suteikia galimybę pakartotinai naudoti kodą, nes leidžia naujai apibrėžtai klasei išplėsti esamos klasės savybes ir elgesį. Jei A klasė tęsiasi B, tada B klasė vadinama tėvų klase (arba superklase), o A klasė vadinama vaikų klase (arba išvestine klase / antrine klase). Šiame scenarijaus pavyzdyje A klasė paveldės visus viešuosius ir saugomus superklasės (B) požymius ir metodus. Poklasis gali pasirinktinai nepaisyti (suteikti metodams naujų ar išplėstų funkcijų) elgesio, paveldėto iš tėvų klasės.

Paveldimumas reiškia „yra“ santykį OOP. Tai iš esmės reiškia, kad A taip pat yra B. Kitaip tariant, B gali būti klasė su bendru tam tikro realaus pasaulio subjekto aprašymu, bet A nurodo tam tikrą specializaciją. Esant realaus pasaulio programavimo problemai, „Person“ klasė galėtų būti išplėsta, kad būtų sukurta „Employee“ klasė. Tai vadinama specializacija. Bet jūs taip pat pirmiausia galėtumėte sukurti „Darbininkų klasę“, o paskui ją apibendrinti ir „Personų klasėje“ (t. Y. Apibendrinti). Šiame pavyzdyje darbuotojas turės visas asmens savybes ir elgesį (t. Y. Darbuotojas taip pat yra asmuo) ir gali turėti tam tikrų papildomų funkcijų (taigi, asmuo nėra darbuotojas).

Kas yra kompozicija?

Kompozicija yra klasės gebėjimas kaip skirtingų narių duomenis laikyti skirtingų klasių objektus. Pvz., A klasėje gali būti B klasės objektas kaip narys. Visi B metodu apibrėžti viešieji metodai (arba funkcijos) gali būti vykdomi A klasėje. A klasė tampa konteineriu, o B klasė - uždaroji klasė. Kompozicija taip pat vadinama konteineriu. Šiame pavyzdyje galima pasakyti, kad A klasė yra sudaryta iš B klasės. OOP sudėtyje kompozicija reiškia „turi“ santykį. Svarbu pažymėti, kad nors konteineris turi prieigą vykdyti visus uždaros klasės viešus metodus, jis negali pakeisti ar suteikti papildomų funkcijų. Kalbant apie realaus pasaulio programavimo problemą, „TextBox“ klasės objektas gali būti klasės formoje, todėl galima teigti, kad formoje yra „TextBox“ (arba, kitaip, formą sudaro „TextBox“)..

Kuo skiriasi paveldimumas ir kompozicija?

Paveldėjimas ir kompozicija yra dvi OOP sąvokos, tačiau jos gana skiriasi tuo, ką jos leidžia pasiekti programuotojui. Paveldimumas yra klasės sugebėjimas paveldėti savybes ir elgesį iš tėvų klasės, praplečiant ją, tuo tarpu sudėtis yra klasės galimybė, kaip nario duomenis laikyti skirtingų klasių objektus. Jei klasė pratęsiama, ji paveldi visas viešąsias ir saugomas savybes / elgesį, ir tas elgesys gali būti pakeistas poklasiu. Bet jei klasė yra kitoje, tai konteineris neturi galimybės pakeisti ar pridėti elgesio su tuo. Paveldimumas reiškia „yra“ santykį OOP, o kompozicija reiškia „turi“ santykį.