Erinevus pärimise ja säilitamise vahel

Pärimine vs mahuti

Pärimine ja säilitamine on OOP-is (objektorienteeritud programmeerimisnäide: C ++) leitud kaks olulist mõistet. Lihtsamalt öeldes käsitlevad nii konteinerid kui ka pärimine klassile täiendavate omaduste või käitumise pakkumist. Pärimine on klassi võime pärida vanemklassilt omadusi ja käitumist, laiendades seda. Teisest küljest on konteinerkontroll klassi võime sisaldada liikmesandmetena erinevate klasside objekte.

Mis on pärimine?

Nagu ülalpool mainitud, on pärimine klassi võime pärida vanemklassilt omadusi ja käitumist, laiendades seda. Pärimine pakub sisuliselt koodi taaskasutamist, võimaldades olemasoleva klassi omadusi ja käitumist laiendada äsja määratletud klassile. Kui klass A laieneb B-le, siis nimetatakse klassi B vanemklassiks (või superklassiks) ja klassi A lapseklassiks (või tuletatud klassiks / alamklassiks). Selle näitestsenaariumi korral pärib klass A superklassi (B) kõik avalikud ja kaitstud atribuudid ja meetodid. Alamklass võib valikuliselt alistada vanemklassilt päritud käitumise (pakkuda meetoditele uut või laiendatud funktsionaalsust). Pärimine tähistab OOP-is suhet. See tähendab sisuliselt seda, et A on ka B. Teisisõnu, B võib olla klass, millel on teatud reaalse maailma olemi üldine kirjeldus, kuid A määratleb teatud spetsialiseerumise. Reaalses maailmas programmeerimisprobleemide korral võiks laiendada Isikuklassi töötajaklassi loomiseks. Seda nimetatakse spetsialiseerumiseks. Kuid võite ka kõigepealt luua töötajaklassi ja seejärel üldistada selle ka isikuklassiks (st üldistada). Selles näites on töötajal kõik isiku omadused ja käitumine (s.t töötaja on ka isik) ning see võib sisaldada ka mõnda muud funktsionaalsust (seega pole isik ka töötaja).

Mis on konteinerveod?

Konteinerlus on klassi võime sisaldada liikmesandmetena erinevate klasside objekte. Näiteks võib klass A liigena sisaldada klassi B objekti. Klassis A saab täita kõiki B-s määratletud avalikke meetodeid (või funktsioone). Klassist A saab konteiner, klassist B aga suletud klass. Konteinervedu nimetatakse ka kompositsiooniks. Selle näite puhul võib öelda, et klass A koosneb klassist B. OOP-is tähistab konteinervedu “vajalikke suhteid”. Oluline on märkida, et kuigi konteineril on juurdepääs kõigi suletud klassi avalike meetodite käivitamiseks, ei saa see muuta ega pakkuda täiendavaid funktsioone. Reaalse maailma programmeerimisprobleemi korral võib klassi TextBox objekt kuuluda klassivormi ja seega võib öelda, et vorm sisaldab tekstiboksi (või alternatiivina, kui vorm koosneb tekstikastist).

Pärimise ja säilitamise erinevus

Pärimine ja säilitamine on kaks OOP-kontseptsiooni, kuid need on programmeerijal siiski üsna erinevad. Pärimine on klassi võime pärida vanusklassi omadusi ja käitumist selle laiendamise teel, samas kui säilitamine on klassi võime sisaldada liikmesandmetena erinevate klasside objekte. Klassi laiendamisel pärib see kõiki avalikke ja kaitstud omadusi / käitumist ning alaklass võib selle käitumise üle tähtsustada. Kuid kui klass sisaldub teises, ei saa konteiner võimalust suletud olekus käitumist muuta ega sellele käitumist lisada. Pärimine esindab OOP-is suhet, samal ajal kui konteinerkonteiner esindab suhet.