Paveldėjimas ir sudėtis
Paveldėjimas ir sudėtis yra dvi svarbios sąvokos, rastos OOP (Object Oriented Programming). Paprasčiau tariant, tiek kompozicija, tiek paveldėjimas yra susijusios su papildomų savybių ar elgesio suteikimu klasei. Paveldėjimas - tai klasės sugebėjimas paveldėti savybes ir elgesį iš tėvų klasės, ją pratęsiant. Kita vertus, Kompozicija yra klasės sugebėjimas laikyti skirtingų klasių objektus kaip nario duomenis.
Kas yra paveldėjimas?
Kaip minėta pirmiau, paveldėjimas yra klasės galimybė paveldėti savybes ir elgesį iš tėvų klasės, ją pratęsiant. Paveldėjimas iš esmės suteikia pakartotinį kodo naudojimą, leidžiant išplėsti esamos klasės savybes ir elgesį naujai apibrėžta klase. Jei A klasė pratęsia B, tada B klasė vadinama tėvų klase (arba super klase), o A klasė - vaikų klase (arba išvestine klase / pogrupiu). Šiame scenarijaus pavyzdyje A klasė paveldės visus viešus ir saugomus super klasės (B) atributus ir metodus. Poklasis gali pasirinktinai pakeisti (suteikti metodams naują ar išplėstinę funkciją) elgesį, paveldėtą iš tėvų klasės.
Paveldėjimas reiškia „yra-a“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 apibūdinimu, tačiau A nurodo tam tikrą specializaciją. Realioje programavimo problemoje „Person“klasė galėtų būti išplėsta, kad būtų sukurta „Darbuotojų“klasė. Tai vadinama specializacija. Bet jūs taip pat pirmiausia galite sukurti „Darbuotojų“klasę ir apibendrinti ją taip pat „Asmens“klase (t. Y. Apibendrinimas). Šiame pavyzdyje darbuotojas turės visas asmens savybes ir elgesį (ty darbuotojas taip pat yra asmuo) ir gali turėti papildomų funkcijų (taigi, asmuo nėra darbuotojas).
Kas yra kompozicija?
Kompozicija yra klasės gebėjimas laikyti skirtingų klasių objektus kaip nario duomenis. Pavyzdžiui, A klasėje kaip narys gali būti B klasės objektas. Čia visi B dalyje apibrėžti viešieji metodai (arba funkcijos) gali būti vykdomi A klasėje. A klasė tampa konteineriu, o B klasė - uždara klase. Kompozicija taip pat vadinama „Containership“. Šiame pavyzdyje galima sakyti, kad A klasę sudaro B klasė. OOP kompozicija reiškia „turi“santykį. Svarbu pažymėti, kad net jei konteineris turi prieigą vykdyti visus viešus šios klasės metodus, jis negali pakeisti ar suteikti papildomų funkcijų. Kalbant apie realaus pasaulio programavimo problemą, klasės „TextBox“objektas gali būti klasės formoje,taigi galima sakyti, kad formoje yra „TextBox“(arba, kitaip, forma susideda iš „TextBox“).
Kuo skiriasi paveldėjimas ir kompozicija?
Nors paveldėjimas ir kompozicija yra dvi OOP sąvokos, jos skiriasi tuo, ką leidžia programuotojui pasiekti. Paveldėjimas - tai klasės sugebėjimas paveldėti savybes ir elgesį iš tėvų klasės, ją pratęsiant, o Kompozicija - klasės sugebėjimas laikyti skirtingų klasių objektus kaip nario duomenis. Jei klasė pratęsiama, ji paveldi visas visuomenės ir saugomas savybes / elgesį, o poklasis gali nepaisyti to elgesio. Bet jei klasė yra kitoje, sudėtinis rodinys nesuteikia galimybės keisti ar pridėti elgesio. Paveldėjimas reiškia „yra“santykį OOP, o „Kompozicija“- „turi“santykį.