Peamine erinevus – polümorfism vs pärilikkus OOP-is
Objektorienteeritud programmeerimist (OOP) kasutatakse tavaliselt tarkvara arendamiseks. Paljud programmeerimiskeeled toetavad objektorienteeritud programmeerimist. Objektorienteeritud programmeerimine on klasside ja objektide abil programmi kujundamise metoodika. Klass OOP-is on kavand objekti loomiseks. Klassil on omadused ja meetodid. Objekt on klassi eksemplar. OOP sisaldab nelja sammast, nagu pärimine, polümorfism, abstraktsioon ja kapseldamine. Selles artiklis käsitletakse polümorfismi ja pärilikkuse erinevust OOP-is. Peamine erinevus OOP-i polümorfismi ja pärilikkuse vahel on see, et polümorfism on objekti võime käituda mitmel viisil ja pärand on luua uus klass, kasutades olemasoleva klassi atribuute ja meetodeid.
Mis on OOP-i polümorfism?
Polümorfism tähistab mitut vormi. Ühel objektil võib olla mitu käitumist. Polümorfismi võib jagada kahte kategooriasse. Need on ülekoormatud ja alistavad.
Ülekoormus
Vaadake allolevat Java keeles kirjutatud programmi.
Joonis 01: Ülekoormus
Vastav alt ül altoodud programmile luuakse A tüüpi objekt. Kui helistate obj.sum(); see annab meetodiga sum() seotud väljundi. Obj.sum(2, 3) kutsumisel; see annab väljundi, mis on seotud summaga (int a, int b). Võib täheldada, et ühel ja samal objektil on olenev alt olukorrast erinev käitumine. Kui on mitu sama nimega, kuid erinevate parameetritega meetodit, nimetatakse seda ülekoormamiseks. Seda nimetatakse ka staatiliseks sidumiseks või kompileerimisaja polümorfismiks.
Alustamine
Teine polümorfismi tüüp on ülekaalukas. Vaadake allolevat Java keeles kirjutatud programmi.
Joonis 02: Alistamine
Vastav alt ül altoodud programmile on klassis A olemas meetod display(). Klass B ulatub klassist A. Seetõttu on klassis B juurdepääs kõigile klassi A meetoditele. See on pärimine. Pärimise kontseptsiooni kirjeldatakse täpsem alt hiljem.
Ka B-klassil on sama kuvamismeetod(). A-tüüpi objekti loomisel ja kuvamismeetodi kutsumisel annab väljund B. A-klassi kuvamismeetodi tühistab klassi B kuvamismeetod. Seega on väljund B.
Kui on olemas sama nime ja samade parameetritega, kuid kahes erinevas klassis olevad meetodid ning need on seotud pärimisega, nimetatakse seda alistamiseks. Seda tuntakse ka kui hilist sidumist, dünaamilist sidumist, käitusaegset polümorfismi. Ülekoormust ja ületamist nimetatakse polümorfismiks. See on objektorienteeritud programmeerimise põhikontseptsioon.
Mis on OOP-i pärimine?
Vaadake allolevat Java keeles kirjutatud programmi.
Joonis 03: Pärimise näide
Vastav alt ül altoodud programmile on klassil A meetod sum() ja klassil B meetod sub().
Klassi A summa() meetodit saab kasutada klassis B, kasutades laiendussõna. Olemasoleva klassi atribuutide ja meetodite taaskasutamist uue klassi loomiseks nimetatakse pärimiseks. Isegi klassis B puudub sum() meetod; see on päritud klassist A. Pärand on kasulik koodi korduvkasutatavuse jaoks. Vanemat klassi nimetatakse baasklassiks, superklassiks või vanemklassiks. Tuletatud klassi nimetatakse alamklassiks või alamklassiks.
Pärimise tüübid
Pärimist on mitut tüüpi. Need on ühetasandiline pärand, mitmetasandiline pärimine, mitmekordne pärimine, hierarhiline pärand ja hübriidpärand.
Üksikpärand
Single Heritance puhul on üks superklass ja üks alamklass. Kui klass A on superklass ja klass B on alamklass, on klassis B juurdepääsetavad kõik klassi A omadused ja meetodid. On ainult üks tase; seetõttu nimetatakse seda ühetasandiliseks pärandiks.
Mitmetasemeline pärand
Mitmetasemelises pärandis on kolm klasside taset. Vaheklass pärineb superklassist. Alamklass pärineb vaheklassilt. Kui on kolm klassi A, B ja C ning A on superklass ja B on vaheklass. Siis pärib B A-lt ja C pärib B-lt, see on mitmetasandiline pärand.
Mitmekordne pärimine
Mitme pärimise puhul on palju superklasse ja üks alamklass. Kui on kolm superklassi nimega A, B, C ja D on alamklass, siis klass D saab pärida klassidest A, B ja C. Programmeerimiskeeles C++ toetab mitmikpärimist. Seda ei toetata programmeerimiskeeltes, nagu Java või C. Nendes keeltes kasutatakse mitme pärimise juurutamiseks liideseid.
Hierarhiline pärand
Kui superklassidena on klasse, mida nimetatakse A-ks ja B, C on alamklassid, võivad need alamklassid pärida klassi A omadusi ja meetodeid. Sellist pärimistüüpi nimetatakse hierarhiliseks pärandiks.
Hübriidpärand
On veel üks spetsiaalne pärimise tüüp, mida tuntakse hübriidpärandina. See on mitmetasandilise ja mitme pärandi kombinatsioon. Kui A, B, C ja D on klassid ning B pärib A-lt ja D pärib nii B-lt kui ka C-lt, siis on tegemist hübriidpärandiga.
Millised on OOP-i polümorfismi ja pärilikkuse sarnasused?
Mõlemad on objektorienteeritud programmeerimise kontseptsioonid
Mis vahe on polümorfismil ja pärilikkusel OOP-is?
OOP-i polümorfism vs pärand |
|
Polümorfism on objekti võime käituda mitmel viisil. | Pärimine tähendab uue klassi loomist olemasoleva klassi atribuute ja meetodeid kasutades. |
Kasutus | |
Polümorfismi kasutatakse objektide puhul, mida kompileerimise ja käitusaja vormis meetodeid kutsuda. | Pärimist kasutatakse koodi taaskasutamiseks. |
Rakendamine | |
Polümorfismi rakendatakse meetodites. | Pärimist rakendatakse klassides. |
Kategooriad | |
Polümorfismi võib jagada ülekoormamiseks ja alistamiseks. | Pärimise võib jagada ühetasandiliseks, mitmetasandiliseks, hierarhiliseks, hübriidseks ja mitmeks pärandiks. |
Kokkuvõte – polümorfism vs pärilikkus OOP-is
Polümorfism ja pärimine on objektorienteeritud programmeerimise peamised mõisted. Erinevus OOP-i polümorfismi ja pärilikkuse vahel seisneb selles, et polümorfism on ühine liides mitmele vormile ja pärimine on uue klassi loomine, kasutades olemasoleva klassi atribuute ja meetodeid. Mõlemat mõistet kasutatakse tarkvaraarenduses laialdaselt.
Laadige PDF-i alla OOP-i polümorfism vs pärand
Saate alla laadida selle artikli PDF-versiooni ja kasutada seda võrguühenduseta kasutamiseks vastav alt tsitaadi märkusele. Laadige PDF-versioon alla siit. Erinevus polümorfismi ja pärilikkuse vahel OOP