Polümorfism objektorienteeritud programmeerimises

Kas soovite teada, mis on polümorfism? Järgmises artiklis anname teile üksikasjalikku teavet selle kohta, mida nimetatakse Polümorfism objektorienteeritud programmeerimises.

polümorfism-objektorienteeritud programmeerimine-1

Polümorfism objektorienteeritud programmeerimises

Kuigi see võib tunduda mõnevõrra keerulise kirjeldusega sõnaga, on tõesti seda tüüpi arvutiga seotud teema seotud selle põhiliste aspektidega. Kui õpid Objektorienteeritud programmeerimine, võime kohata seda kirjeldust, mille tähendus on lihtsalt ühe omaduse mitme ja võimaliku oleku kirjeldus.

Arvutustehnika jaoks on see üks objektorienteeritud programmeerimise põhiomadusi ja seda kasutatakse ka arvutiviiruste või usside jaoks, et muuta nende koodi osi, muutes nende tuvastamise keeruliseks. See saab kergendama Paljud asjad programmeerimisel, kui me ei taha olla nii konkreetsed ja vajame midagi funktsionaalsemat, mis kohandub laiema tööviisiga, vähendab tööd ja aitab meil hakkama saada millegi dünaamilisema ja paindlikumaga.

Enne otse asja juurde hüppamist selgitame mõningaid mõisteid ja jagame määratlusi, mis toimivad avatud suu, mitte ainult selle paremaks mõistmiseks, vaid ka selle toimimise, selle tähtsuse ja sellest, kui kasulik see võib olla arvutustegevuse valdkonnas, aidates meil oma tööd lõdvestada. Enne OOP -s otse polümorfismile hüppamist ei pruugi me midagi uut leida, kuid õige mõistmiseks on oluline meeles pidada kõike järgmist.

Polümorfismi mõiste objektorienteeritud programmeerimisel on pärit Simula 67-st, mis on programmeerimiskeel, mis on loodud simulatsioonide läbiviimiseks. Selle lõid Ole Joha Dahl ja Kristen Nygaard, kes kuulusid Norra andmekeskusesse Oslos.

See keskus oli pühendatud laevade simuleerimisele, plahvatuse tõttu tekkis palju segadust ühe ja teise erinevuste tõttu, kui need laevad rühmitati vastavalt nende klassifikatsioonile, et luua uuringute tegemise ajal rohkem kontrolli. , siis sai see idee teoks. float.

See programmeerimisstiil valitses 80ndatel peaaegu kõigis andmetöötlusvaldkondades tänu suurele omistamisele C ++, mis on teine ​​programmeerimiskeel C. Tänu graafilistele kasutajaliidestele töötas selle meetodi domineerimine väga hästi.

Polümorfismil objektorienteeritud programmeerimisel on mitmeid omadusi, mida rakendati erinevates keeltes, mida sel ajal kasutati, näiteks: Ada, BASIC, LISP, Pascal, paljude teiste hulgas, kuigi neil tekkisid mitmesugused ühilduvusprobleemid.

Täpsema selgituse saamiseks polümorfismi kohta objektorienteeritud programmeerimises kutsume teid vaatama järgmist videot:

Polümorfism ja pärimine

Eesliide poly pärineb kreeka keelest, seega tähendab selle täpne kirjeldus küllust, paljusid või mitmekesisust ning morfism on kreeka sufiks, mis siseneb sõnade moodustamisse keha kuju, koostise või struktuuri tähendusega. Seda arvesse võttes võime minna sellesse fragmenti, mida tahame seletada, meie põhisõna on põhimõtteliselt definitsiooni järgi keha struktuurist moodustatud sort; Matemaatika erinevates valdkondades nimetatakse kaarte sisemist struktuuri säilitavateks rakendusteks matemaatiliste struktuuride vahel.

Selle täiesti selgeks tegemiseks võime võrrelda polümorfismi ja pärandit. Teisisõnu, see võimaldab meil klassifitseerimise hierarhiates polümorfisme läbi viia. Samuti on oluline mainida, et need antakse pärimise teel, kui pärand, mida me võiksime mõista kui eseme tuletisi, kuulub alati samasse klassi; Selgituseks näite toomiseks võime öelda, et sõnast sõiduk kerkib esile mitu klassi, näiteks auto, mootorratas ja buss, selliselt nähes on polümorfism ja pärimine kaks vaieldamatult seotud mõistet.

Tüübisüsteemi tähtsus polümorfismis

Nimetades selle klassifikatsiooni tüübisüsteemiks, sest selle sõna tuletised on endiselt nende osa, kuid miks on see objektorienteeritud programmeerimise polümorfismis oluline?

Paljud inimesed, kes selle artikli sisestasid, võivad olla tuttavad, mida tähendab programmeerimine nõrgalt trükitud keeltes, nagu see oleks Javascripti ja PHP puhul, kuid on oluline, et saaksime hästi aru, mis see on.

Seda tüüpi keeles peame muutuja määratlemisel alati märkima tüübi, mida me soovime, et see muutuja sisaldaks, näiteks: int myNumber.

Sel moel on meil võimalus näidata, et "myNumber" -ks määratud muutuja sisaldab alati täisarvu; kui juhtum oleks teisiti, saadaks kompilaator meile veateate, mis takistaks meil koostatud programmi koostamast.

Tegelikult võib see juhtuda ka objektidega, kui Java -s määratleme klassi "mängufilm", teades seda sõna kui filmifilmi, mis kestab kauem kui tund, siis klassi "mängufilmi" objektide loomisel peame märkima muutujad, milles näidatakse objekti tüüp, mida kavatsetakse teha. Me võime seda väljendada järgmiselt:

Mängufilm miLargo = uus Mängufilm

Meie muutuja oleks "myLong" ja seda paljastades on meil viide "Mängufilmi" klassi või tüüpi objektidele ja kuni see kestab, peaks sellel alati olema sama klassi või tüüpi objekt, seda on oluline teada, et te ei saaks muutujale salvestada täisarvu või mõnda muud tüüpi või klassi objekti, mis ei ole pärand ja millel pole seost.

Kui pöörduda tagasi sõidukite ja nende tüüpide näite juurde, on oluline selgitada, et kui otsustame määratleda muutuja, mis osutab klassi «moto» objektile, peab see muutuja kestel alati viitama seotud või pärandobjekt klassile «moto», mitte klassi «auto» ega «buss»; aga nõrgalt roogitud keeltes, nagu me varem mainisime, seda paindumatust ei eksisteeri, kuigi see on tugevalt roogitud keelte, nagu Java, ühine tunnus. Siin on laiem näide:

  • Auto myCar = uus auto (Mazda 2 "): Mazda 2 oleks meie selle klassi või tüübi objekti pärand ja see on see, millele muutuja osutab, ja kui me tahame, võib see homme osutada mõnele teisele objektile Minu auto.

MyCar = uus auto (Ford Focus 2.0 ″)

Mida me ei saa kunagi teha, on salvestada oma muutujate hulka autoklassina midagi muud, millel pole autotüübiga mingit seost, sest siis tekiks meil kompileerimisaegne viga, kui see juhtub, oleks see ilmselt uue auto Ford Focuse salvestanud 2.0 oleksime valinud New Moto Yamaha YBR.

Tuleb täpsustada, et siinkohal ei räägi me veel polümorfismist kui sellisest, vaid katsetame programmeerimist üldiselt tüübisüsteemiga; mõte on selles, et peame avama oma mõtted komplikatsioonidele, mida tugevalt kolmekordistunud keelte piiramine võib meile anda, et hiljem mõista, miks polümorfism on oluline ja polümorfismi võtmetegur objektorienteeritud programmeerimisel.

Täielikult trükitud arvutikeeles, kui funktsioon ilmneb, peame alati meeles pidama seda olulist punkti, mis teatatakse, milliseid reegleid see saab. Meie loodud funktsioonile ei saa me edastada midagi muud kui muutujad või literaalid täisarvuliste väärtustega kui normid, kui juhuslikult edastame muid andmeid teist tüüpi, koostaja hakkab muutma, ei lase see meil programmi, sest sellisel juhul ei suutnud see funktsiooniparameetritest oodatud tüüpe leida.

mootorratas-auto-1

Polümorfism objektides

Lõpuks oleme jõudnud selle osani, mis seda huvipakkuvat teemat tõesti täpsustab, mistõttu selle süsteemi raames tehakse oma elemente, mis avaldavad selle klasse ja eesmärke, kuna tugevalt trükitud keeled töötavad, peab muutuja alati osutama objektile sellist, nagu me selle loomisel märkisime.

See on midagi olulist meeles pidada, nüüd funktsioon, mille parameeter on klassist deklareeritud, võtab meid vastu ainult selle klassi objektide vastuvõtmiseks; massiiv, mis on kuulutatud teatud tüüpi elementidest koosnevaks, võimaldab meil selle lahtreid täita ainult meie loodud seda tüüpi objektidega; toome veel ühe näite:

Sõiduk [] myVehiculos = uus sõiduk [3]

See näide, mille me toome, on muutuja, mis on massiiv ja me deklareerime selles, et kastide sisu on sõidukiklassi objektid, tugevalt kolmekordses keeles võib see sisaldada ainult sõidukiklassi objekte, nagu meil oli juba selgitatud, kuid nüüd leiame polümorfismi, mille abil saame tüübisüsteemile veidi rohkem paindlikkust anda, andes meile võimaluse muutujal aktsepteerida ka klassi "lapsed" objekte või tuletisi.

Tüübisüsteemi paindlikumaks muutmisel ei räägi me tervikuna, vaid sellest, mis sellel oleks pistmist pärandiklassifikatsioonidega, mis meil klassis või tüübisüsteemides on. Kui meil õnnestub määratleda massiiv kindlaksmääratud klassi lahtrite abil, nõustuks kompilaator, et me sisestaksime nendesse lahtritesse selle objekti sõnad "lapsed". Kui tuvastame, et funktsioon saab parameetritena mõne klassi objekte , võimaldab kompilaator lubada meil saata sellele juba deklareeritud klassi tuletatud klassi objektide väljakutsed.

Kui võtta see midagi konkreetsemat, siis võimaldab meie sõidukimassiiv mitte ainult sisestada selle muutujale üldisi sõidukeid, vaid ka kõiki selle klassi lapse objekte või tuletatud klasse, siis oleks meil bussi, auto ja mootorratta objektid klassi või suvalist last, mille oleme määratlenud, ja seda kõike tänu polümorfismile.

Polümorfismi rakendamine

Vaatamata selgitustele, mille me mängufilmile andsime, tahame selgitada, et lisaks filmiks olemisele võivad meil olla ka dokumentaalfilmid ja muu hulgas; võib -olla on mõlemal erinevad omadused, erinev publikuaeg, erinevad hinnad ja sel põhjusel oleksime võinud otsustada, et meie mängufilmide klassis on tütarklassid või pärandid, näiteks "film" või "dokumentaalfilm".

Kui loome kinoks loodud klassi ja meetodi, mida nimetame "reprodutseerimiseks", on see parameeter selle jaoks, mida me tahame kinosaalis reprodutseerida, kuhu võivad jõuda nii kinoklassi kui ka dokumentaalklassi objektid, kui me mõistame hästi tüübisüsteemi (isegi polümorfismi sisenemata), määravad meie meetodid vastuvõetavate parameetrite tüübid. See näeks välja umbes selline:

  • Esita (filmi esitamiseks)

Kui aga tahame dokumentaalfilmi reprodutseerida, peame selle asemel oma valemit muutma.

  • Esita (dokumentaaldokumentaal)

Ja kas tõesti on vaja luua kaks erinevat valemit? Mõlemad meetodid kahe asja reprodutseerimiseks oleksid täpselt samad, miks vaeva näha? Meil oleks ainult mängufilm mängija sisse panna, mängida (või mängida) ja luua rekord, mille piletite arv õnnestus maha müüa. Kuigi mõlemat meetodit ei viitsi teha, peame olema teadlikud, et meile võidakse esitada olukord, kus peame looma teise valemi, võiksime tuua näite, et meil on film, kuid seekord 3D -vormingus.

Siinkohal saame kasutada polümorfismi, mille abil saame luua reprodutseerimismeetodi, mis tunneb ära kõikvõimalikud elemendid, dokumentaalfilmid, filmid või mis tahes muu sama klassi (mis on seotud) elemendid, mille peame looma tulevikku. Keeled lubaksid meil luua reprodutseerimismeetodi, mis näitab, et klassi parameeter, mille me saame, on täispikk objekt, kuid keel ja kompilaator aktsepteerivad kõiki filmist või dokumentaalfilm, jääks meile midagi sellist: mängida (mängufilm itemToPlay).

Ükskõik, kas me tahame luua filme või dokumentaalfilme reprodutseerimiseks, on see kõik võimalik üheainsa meetodi, paljundamise abil, tänu sellele, et objektorienteeritud programmeerimise polümorfismi tõttu muudame süsteemi paindlikumaks. vajalik. Näiteks kui soovite reprodutseerida filmi, mitte dokumentaalfilmi, ei pea me valima Cinema klassi, kuid piisab sellest, et see, mida me tahame reprodutseerida, on osa mängufilmi objekti pärandist.

Kui minna tagasi sõiduki näite juurde, pidades isegi silmas polümorfismi kasulikkust ja selle pakutavaid võimalusi, et vähendada kogu arvutiprogrammide hooldust, mida me peaksime tegema, kui meil poleks selle kontseptsiooni abi.

Oletame, et meil on parkimisklass (hispaania keeles oleks see klass õppida parkima), mille raames on meil parkimise funktsioon. Parklas on meil võimalus lisaks autodele parkida ka busse ja mootorrattaid ning ilma polümorfismita peaksime looma meetodi, mis võimaldab parkida "auto" tüüpi objekte ja teise, mis võimaldab parkida objekte. "bussi" tüüpi ja teine, mis võimaldab meil parkida "mootorratta" tüüpi objekte, kuigi nende toimingute tegemise kord hoolimata nende kolme sõiduki välimuse märkimisväärsest erinevusest on põhimõtteliselt sama, ainult see, et üks võtab rohkem ruumi kui teine.

Kõige täpsem oleks omada ühte meetodit, mis lihtsustab meie jaoks asju ja võimaldab meil vastu võtta igat tüüpi sõidukeid, mitte ainult autosid ja automarke, vaid kõiki sõiduki eseme aktsepteeritud ja väärtuslikke tuletisinstrumente. Esiteks oleks meil koodi korduvkasutamine, sest nagu me juba ütlesime, on seda tüüpi sõidukite parkimine sarnane ainult nende ruumide erinevusega, mida igaüks hõivab, kuid lisaks sellele, kui homme kasutataks mõnda muud tüüpi sõidukeid turul müüki jõudmiseks oleks meil võimalus, et meie tarkvara on võimeline seda vastu võtma ilma vajaduseta muuta meie juba loodud parkimisklassi.

Meie käsutuses on üksainus meetod, mis võtab vastu kõik täpsed pärandid, mis sõidukil võivad olla, muutes töö paindlikumaks ja säästes aega, mille oleksime kulutanud iga sõidukitüübi jaoks. Polümorfism objektorienteeritud programmeerimisel avab uksed paljudele objektidele, mida saab aktsepteerida ühe meetodiga.

Püüame seletada polümorfismi kõige arusaadavamal viisil ja teha laiaulatuslik ülevaade kõigest, mis selle taga on, poleks olnud kohane hüpata kohe kontseptsiooni kui sellise juurde, ilma et annaksime selle tausta, mis aitaks meil seda mõista ja mõista selle silmapaistvat tähtsust ja tähtsus. kasutage seda, mida saame anda.

Võimalus ühendada mitu meetodit ühte, samas kui tuletised lepivad objekti pärandina, on üsna kasulik, kuna see säästab meid vajadusest luua mitu, sundides meid olema väga spetsiifilised, andmata meile võimalust teha rohkem paindlik töö Asjaolu, et suudame luua dünaamilisema viisi programmeeritud käsitlemiseks, nii lihtne kui teada saada ühe sõna õige tuletus, see tähendab kõike, mida see hõlmab, aitab meil teha tõhusamat tööd.

Loodame, et teile meeldib see artikkel ja saate teada, mis on polümorfism objektorienteeritud programmeerimises. Kui soovite lugeda mõnda teist meie artiklit programmeerimise kohta, soovitame teil külastada järgmist artiklit, mis annab meile arvutimaailmas väga tuntud programmeerimisvormi: C ++ programmeerimine.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: ajaveeb Actualidad
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.