Polimorfizmas į objektinį programavimą

Ar norite sužinoti, kas yra polimorfizmas? Šiame straipsnyje mes suteiksime jums išsamią informaciją apie tai, kas vadinama Polimorfizmas į objektinį programavimą.

polimorfizmas-į objektą orientuotas programavimas-1

Polimorfizmas į objektinį programavimą

Nors tai gali atrodyti kaip žodis su šiek tiek sudėtingu aprašymu, iš tikrųjų tokio tipo su kompiuteriu susijusi tema yra susijusi su visiškai pagrindiniais jos aspektais. Kai išmoksi Objektinis programavimas, galime susidurti su šiuo aprašymu, kurio reikšmė yra tiesiog kelių ir galimų vienos nuosavybės būsenų aprašymas.

Skaičiavimui tai yra viena iš pagrindinių objektinio programavimo savybių, taip pat kompiuterių virusams ar kirminams naudojama technika modifikuoti jų kodo dalis ir apsunkinti jų aptikimą. Tai gali kad palengvėtų Daug ką programuojant, kai nenorime būti tokie konkretūs ir mums reikia kažko funkcionalesnio, kuris prisitaiko prie platesnio darbo būdo, kuris sumažina darbą ir padeda mums valdyti kažką dinamiškesnio ir lankstesnio.

Prieš pereidami tiesiai prie reikalo, mes paaiškinsime kai kurias sąvokas ir suskaidysime apibrėžimus, kurie bus naudojami išsižiok, ne tik geriau jį suprasti, bet ir suprasti jo veikimą, svarbą ir kiek jis gali būti naudingas skaičiavimo srityje, padėdamas mums atsipalaiduoti. Mes galime nerasti nieko naujo, prieš pereidami tiesiai prie OOP polimorfizmo, tačiau norint tinkamai suprasti, svarbu nepamiršti visų šių dalykų.

Polimorfizmo sąvoka į objektinį programavimą yra kilusi iš „Simula 67“, kuri yra programavimo kalba, skirta modeliavimui atlikti. Tai sukūrė Ole Joha Dahl ir Kristen Nygaard, priklausę Norvegijos duomenų centrui Osle.

Šis centras buvo skirtas laivų modeliavimui, dėl sprogimo kilo daug painiavos dėl skirtumų tarp vieno ir kito, kai šie laivai buvo sugrupuoti pagal atitinkamą klasifikaciją, kad būtų galima geriau kontroliuoti atliekant tyrimus. , būtent tada ši idėja išsipildė.

Šis programavimo stilius devintajame dešimtmetyje vyravo beveik visose kompiuterijos srityse, nes jis puikiai priskiriamas C ++, kuri yra dar viena programavimo kalba C. Dėl grafinių vartotojo sąsajų šio metodo dominavimas veikė labai gerai.

Į objektą orientuoto programavimo polimorfizmas turi keletą charakteristikų, kurios buvo taikomos skirtingomis tuo metu naudojamomis kalbomis, tokiomis kaip: Ada, BASIC, LISP, Pascal ir daugelis kitų, nors ir sukėlė įvairių suderinamumo problemų.

Norėdami išsamiau paaiškinti, kas yra polimorfizmas objektiniame programavime, kviečiame žiūrėti šį vaizdo įrašą:

Polimorfizmas ir paveldėjimas

Priešdėlio poli kilmė yra graikų kalba, todėl tikslus jo aprašymas reiškia gausą, daugybę ar įvairovę, o morfizmas yra graikų priesaga, įeinanti į žodžių, turinčių kūno formą, kompoziciją ar struktūrą, formavimą. Atsižvelgdami į tai, galime pereiti prie to, ką norime paaiškinti šiame fragmente, pagrindinis mūsų žodis iš esmės yra apibrėžimas, kurį sudaro kūno struktūra; Įvairiose matematikos srityse žemėlapiai vadinami taikiniais tarp matematinių struktūrų, kurios išsaugo vidinę struktūrą.

Kad tai būtų visiškai aišku, galime palyginti polimorfizmą ir paveldėjimą. Kitaip tariant, tai leidžia mums atlikti polimorfizmus klasifikavimo hierarchijose. Taip pat svarbu paminėti, kad jie suteikiami paveldint, jei palikimas, kurį galėtume suprasti kaip daikto išvestines, visada priklauso tai pačiai klasei; Pateikdami pavyzdį to, kas buvo paaiškinta, galime pasakyti, kad iš žodžio transporto priemonė išryškėja kelios klasės, tokios kaip automobilis, motociklas ir autobusas, taip matant, polimorfizmas ir paveldėjimas yra dvi neabejotinai susietos sąvokos.

Tipo sistemos svarba polimorfizme

Pavadinkite šią klasifikaciją kaip tipo sistemą, nes to žodžio vediniai vis dar yra jų dalis, tačiau kodėl tai svarbu objektinio programavimo polimorfizme?

Daugelis žmonių, įvedusių šį straipsnį, gali būti susipažinę su tuo, ką reiškia programuoti silpnai įvestomis kalbomis, kaip tai būtų „Javascript“ ir PHP atveju, tačiau svarbu gerai suprasti, kas tai yra.

Tokio tipo kalba, apibrėždami kintamąjį, visada turime nurodyti, kokio tipo norime, kad kintamasis būtų, pavyzdžiui: int myNumber.

Tokiu būdu mes galime nurodyti, kad kintamajame, nustatytame kaip „myNumber“, visada bus sveikasis skaičius; jei būtų kitaip, kompiliatorius mums pateiktų klaidos pranešimą, neleidžiantį sukompiliuoti mūsų sukurtos programos.

Tiesą sakant, tai gali atsitikti ir mums su objektais, jei „Java“ klasėje apibrėžiame „vaidybinį filmą“, žinodami šį žodį kaip daugiau nei valandą trunkantį kino filmą, kai mes kuriame klasės „vaidybinio filmo“ objektus. turi nurodyti kintamuosius, kuriuose nurodomas objekto tipas, kurį ketinama padaryti. Mes galime tai išreikšti taip:

Vaidybinis filmas „miLargo“ = naujas vaidybinis filmas

Mūsų kintamasis būtų „myLong“ ir tai atskleisime, turėdami nuorodą į „Vaidybinių filmų“ klasės ar tipų objektą, ir kol jis tęsis, jis visada turėtų turėti bet kurį tos pačios klasės ar tipo objektą. tai svarbu žinoti, kad negalėtumėte kintamajame išsaugoti sveiko skaičiaus ar kito kito tipo ar klasės objekto, kuris nėra paveldimas ir neturi ryšio.

Jei dar kartą paminėtume transporto priemonių ir jų tipų pavyzdį, svarbu patikslinti, kad jei nuspręsime apibrėžti kintamąjį, nurodantį į „moto“ klasės objektą, kol šis kintamasis tęsiasi, jis visada turi nurodyti į susijusį ar paveldėjimo objektas „moto“ klasei, o ne klasei „automobilis“ ar „autobusas“; tačiau tokiose silpnai išdarinėtose kalbose, kaip minėjome anksčiau, šis nelankstumas neegzistuoja, nors tai yra bendras stipriai išdarinėtų kalbų, tokių kaip „Java“, bruožas. Štai platesnis pavyzdys:

  • Automobilis myCar = naujas automobilis („Mazda 2 ″): „Mazda 2“ būtų mūsų paveldėtas objektas, priklausantis tai klasei ar tipui, ir į kurį kintamasis rodo, o jei norėtume, rytoj jis galėtų nurodyti kitą objektą Mano automobilis.

„MyCar“ = naujas automobilis („Ford Focus 2.0 ″)

Tai, ko mes niekada negalime padaryti, yra išsaugoti savo kintamųjų rinkinyje kaip automobilių klasė-tai kažkas, kas nesusiję su automobilio tipu, nes tada turėtume kompiliavimo laiko klaidą, jei taip nutiktų, ji turėjo išsaugoti naują automobilį „Ford Focus“ 2.0 būtume pasirinkę „New Moto Yamaha YBR“.

Reikėtų patikslinti, kad šiuo metu mes dar nekalbame apie polimorfizmą kaip tokį, bet mes tikriname programavimą apskritai su tipo sistema; Esmė ta, kad turime atverti savo mintis komplikacijoms, kurias gali sukelti stipriai trigubų kalbų apribojimas, kad vėliau suprastume, kodėl polimorfizmas yra svarbus ir pagrindinis polimorfizmo objektinio programavimo elementas.

Naudojant visiškai įvestą kompiuterinę kalbą, kai funkcija pasireiškia, mes visada turime tai laikyti svarbiu dalyku, informuodami apie tai, kokių taisyklių ji gaus. Į mūsų nustatytą funkciją negalime perduoti nieko kito, išskyrus kintamuosius ar literalus su sveikųjų skaičių reikšmėmis kaip normas, jei atsitiktinai perduosime kitus duomenis su kitų tipų, kompiliatorius ketina keisti, jis neleis mums sudaryti programą, nes tokiu atveju ji negalėjo rasti numatytų tipų funkcijos parametruose.

moto-automobilis-1

Polimorfizmas objektuose

Galiausiai mes pasiekėme tą dalį, kuri iš tikrųjų nurodo šią dominančią temą, todėl pagal šią sistemą bus sukurti jos elementai, kurie parodys jo klases ir tikslus, nes veikia griežtai įvestos kalbos, kintamasis visada turi nukreipti į objektą tokią, kokią nurodėme ją steigdami.

Būtina prisiminti, kad dabar funkcija, kurios parametras buvo paskelbtas klasei, priims tik tos klasės objektus; masyvas, kuris buvo paskelbtas sudarytas iš tam tikro tipo elementų, leis mums tik užpildyti jo langelius tokio tipo objektais, kuriuos mes nustatėme; pateiksime kitą pavyzdį:

Transporto priemonė [] myVehiculos = nauja transporto priemonė [3]

Šis pavyzdys, kurį mes pateikiame, yra kintamasis, kuris yra masyvas, ir jame mes deklaruojame, kad langelių turinys bus transporto priemonių klasės objektai, stipriai trigubai vartojama kalba jame gali būti tik transporto priemonių klasės objektai, kaip turėjome jau paaiškinta, bet dabar mes randame polimorfizmą, su kuriuo galime suteikti šiek tiek daugiau lankstumo tipo sistemai, suteikdami mums galimybę kintamajam priimti ir „vaikų“ klasės objektus ar darinius.

Padarę lankstesnę tipo sistemą kalbame ne apie visumą, bet apie tai, ką ji turėtų daryti su paveldėjimo klasifikacijomis, kurias turime savo klasėje ar tipo sistemose. Jei mums pavyktų apibrėžti masyvą naudojant nustatytos klasės ląsteles, kompiliatorius sutiktų, kad į tuos laukus įterptume to objekto žodžius „vaikai“. Jei nustatysime, kad funkcija kaip parametrus gauna tam tikros klasės objektus , kompiliatorius leis mums atsiųsti jam klasės objektų, gautų iš jau deklaruotos, iškvietimą.

Kalbant apie ką nors konkretesnio, mūsų transporto priemonių masyvas ne tik leis mums įterpti bendro pobūdžio transporto priemones į jo kintamąjį, bet ir visus vaiko objektus ar išvestines šios klasės klases, tada turėtume autobuso, automobilio ir motociklo objektus klasę ar bet kurį vaiką, kurį mes apibrėžėme, ir visa tai polimorfizmo dėka.

Taikant polimorfizmą

Nepaisant paaiškinimo, kurį davėme vaidybiniam filmui, norime paaiškinti, kad be to, kad esame filmas, galime turėti ir dokumentinių filmų, be kita ko; galbūt abu turi skirtingas charakteristikas, skirtingą auditorijos laiką, skirtingas kainas ir dėl šios priežasties galėjome nuspręsti, kad mūsų vaidybinių filmų klasėje yra dukterinių klasių ar paveldų, tokių kaip „filmas“ ar „dokumentika“.

Jei sukursime klasę, įsteigtą kaip kinas, ir metodą, kurį pavadinsime „atgaminti“, tai bus parametras to, ką norime atkurti kino teatre, į kurį gali atvykti tiek kino klasės, tiek dokumentinės klasės objektai, jei gerai suprantame tipo sistemą (net neįvesdami polimorfizmo), mūsų metodai nustatys gautų parametrų tipus. Tai atrodytų maždaug taip:

  • Paleisti (filmą, kurį reikia paleisti)

Bet jei norime atkurti dokumentinį filmą, turėtume pakeisti savo formulę.

  • Žaisti (žaisti dokumentinį dokumentinį filmą)

Ir ar tikrai reikia sukurti dvi skirtingas formules? Abu šių dviejų dalykų atkūrimo metodai būtų visiškai vienodi, kodėl nerimauti? Mums tektų įdėti vaidybinį filmą į grotuvą, paspausti (ar paleisti) ir sukurti įrašą su bilietų, kuriuos pavyko parduoti, skaičiumi. Nors abu metodai nėra varginantys, turime žinoti, kad mums gali būti pateikta situacija, kai turime sukurti kitą formulę, galėtume pateikti pavyzdį, kad turime filmą, tačiau šį kartą 3D formatu.

Šiuo metu mes galime pasinaudoti polimorfizmu, jo pagalba galime sukurti atkūrimo metodą, kuris atpažintų visų rūšių elementus, dokumentinius filmus, filmus ar bet ką kitą tos pačios klasės (tai yra susiję), kuriuos turime sukurti ateitį. Kalbos mums leistų nustatyti atkūrimo metodą, nurodantį, kad klasės parametras, kurį mes ketiname gauti, yra bruožas ilgio, tačiau kalba ir kompiliatorius priims bet kokį iš filmo ar dokumentinis filmas, mums liktų kažkas panašaus: vaidinimas (vaidybinis filmas itemToPlay).

Nesvarbu, ar norime kurti filmus, ar dokumentinius filmus atgaminti, visa tai bus įmanoma naudojant vieną atkūrimo metodą, nes dėl objektyvaus programavimo polimorfizmo mes padarome sistemą lankstesnę. būtinas. Pavyzdžiui, jei norite atkurti filmą, o ne dokumentinį filmą, neturėsime pasirinkti „Kino“ klasės, tačiau pakanka, kad tai, ką norime atkurti, būtų vaidybinio filmo objekto paveldėjimo dalis.

Grįžtant prie transporto priemonės pavyzdžio, net ir turint omenyje polimorfizmo naudingumą ir jo siūlomas galimybes sumažinti visą kompiuterinių programų priežiūrą, kurią turėtume daryti, jei neturėtume šios koncepcijos pagalbos.

Tarkime, turime automobilių stovėjimo klasę (ispanų kalba tai būtų klasė išmokti parkuotis), kurioje mes turime stovėjimo funkciją. Automobilių stovėjimo aikštelėje turime galimybę statyti autobusus ir motociklus, be tik automobilių, ir be polimorfizmo turėtume sukurti metodą, kuris leistų statyti „automobilio“ tipo objektus ir kitą, kuris leidžia statyti objektus. „autobuso“ tipo ir kitas, leidžiantis pastatyti „motociklo“ tipo objektus, nors šių veiksmų atlikimo tvarka, nepaisant pastebimo šių trijų transporto priemonių išvaizdos skirtumo, iš esmės yra ta pati, tik kad viena užima daugiau vietos nei kitas.

Tiksliausia būtų turėti vieną metodą, kuris mums viską supaprastintų ir leistų priimti visų tipų transporto priemones, ne tik automobilius ir automobilių markes, bet ir visus priimtinus ir brangius transporto priemonės objekto darinius. Pirmiausia turėtume pakartotinai naudoti kodą, nes, kaip jau minėjome, šių tipų transporto priemonių statymas yra panašus, tik skiriasi kiekvieno užimama vieta, tačiau be to, jei rytoj būtų kitos rūšies transporto priemonės norėdami pradėti prekiauti rinkoje, turėtume galimybę, kad mūsų programinė įranga gali ją priimti be jokio poreikio keisti mūsų jau nustatytą automobilių stovėjimo klasę.

Mes turime vieną metodą, kad galėtume priimti visus tikslius transporto priemonės paveldėjimus, todėl darbas būtų lankstesnis ir sutaupytume laiko, kurį būtume praleidę kurdami kiekvieną transporto priemonės tipą. Polimorfizmas į objektinį programavimą atveria duris įvairiems objektams, kuriuos galima priimti vienu metodu.

Mes stengiamės kuo suprantamiau paaiškinti polimorfizmą ir plačiai apžvelgti viską, kas yra už jo, nebūtų buvę tinkama iškart pereiti prie šios sąvokos, nepateikus jos pagrindo, padedančio mums ją suprasti ir suprasti jos išskirtinę svarbą ir svarbą.naudokite tai, ką galime duoti.

Galimybė į vieną metodą įtraukti kelis metodus, o dariniai sutampa kaip objekto paveldėjimas, yra gana naudinga, nes taip sutaupoma poreikio sukurti kelis, priverčiančius būti labai konkrečiais, nesuteikiant mums galimybės atlikti daugiau lankstus darbas Tai, kad galime sukurti dinamiškesnį būdą tvarkyti tai, ką esame užprogramavę, taip paprasta, kaip žinoti teisingą vieno žodžio vedinį, ty viską, ką jis apima, padeda mums atlikti efektyvesnį darbą.

Tikimės, kad jums patiks šis straipsnis ir sužinosite, kas yra polimorfizmas objektiniame programavime. Jei norite perskaityti kitą mūsų straipsnį apie programavimą, rekomenduojame aplankyti šį straipsnį, kuriame pateikiama labai gerai žinoma kompiuterių pasaulyje programavimo forma: C ++ programavimas.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: „Actualidad“ tinklaraštis
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.