Polimorfism în programarea orientată pe obiecte

Vrei să știi ce este polimorfismul? În articolul următor, îți vom oferi informații detaliate despre ceea ce se numește polimorfism în programarea orientată pe obiecte.

polimorfism-în-obiect-orientat-programare-1

Polimorfism în programarea orientată pe obiecte

Deși poate părea un termen oarecum complex, acest tip de subiect de informatică se referă de fapt la aspecte foarte elementare ale domeniului. Atunci când învățăm programarea orientată pe obiecte , am putea întâlni această descriere, care înseamnă pur și simplu descrierea mai multor stări posibile ale unei singure proprietăți.

În informatică, este una dintre proprietățile fundamentale ale programării orientate pe obiecte și este, de asemenea, o tehnică utilizată de virușii sau viermii informatici pentru a modifica părți din codul lor, făcându-le mai greu de detectat. Acest lucru poate simplifica considerabil programarea atunci când nu vrem să fim prea specifici și avem nevoie de ceva mai funcțional care să se adapteze la un mod de lucru mai larg, reducându-ne volumul de muncă și ajutându-ne să gestionăm ceva mai dinamic și flexibil.

Înainte de a intra direct în subiectul principal, vom explica câteva concepte și vom detalia definițiile pentru a vă oferi o introducere , nu doar pentru a vă ajuta să înțelegeți mai bine polimorfismul, ci și pentru a înțelege funcția, importanța și utilitatea sa în domeniul informaticii, ajutându-ne să ne eficientizăm munca. Probabil că nu veți găsi nimic revoluționar înainte de a trece direct la polimorfismul din programarea orientată pe obiecte, dar este important să țineți cont de următoarele pentru o înțelegere corectă.

Conceptul de polimorfism în programarea orientată pe obiecte își are originea în Simula 67, care este un limbaj de programare, realizat pentru a efectua simulări. Aceasta a fost creată de Ole Joha Dahl și Kristen Nygaard care aparțineau centrului de date norvegian din Oslo.

Acest centru a fost dedicat simularii navelor, a existat o mulțime de confuzie din cauza exploziei din cauza diferențelor dintre una și alta, când aceste nave au fost grupate în funcție de clasificarea lor respectivă pentru a genera mai mult control în momentul efectuării studiilor , tocmai atunci această idee s-a concretizat.

Acest stil de programare în anii 80 a predominat în aproape toate domeniile de calcul datorită atribuirii sale excelente cu C ++, care este un alt limbaj de programare C. Datorită interfețelor grafice de utilizator, dominanța acestei metode a funcționat foarte bine.

Polimorfismul în programarea orientată pe obiecte are mai multe caracteristici, care au fost aplicate în diferite limbaje care erau utilizate la acea vreme, precum: Ada, BASIC, LISP, Pascal, printre multe altele, deși au dezvoltat diverse probleme de compatibilitate.

Pentru o explicație mai detaliată a ceea ce este polimorfismul în programarea orientată pe obiecte, vă invităm să urmăriți următorul videoclip:

Polimorfism și moștenire

Prefixul poli își are originea în greacă, deci descrierea sa exactă înseamnă abundență, multe sau varietate, iar morfismul este un sufix grecesc care intră în formarea cuvintelor cu semnificația formei, compoziției sau structurii unui corp. Luând în considerare acest lucru, putem intra în ceea ce vrem să explicăm în acest fragment, cuvântul nostru principal este practic prin definiție o varietate formată din structura unui corp; În diferite domenii ale matematicii, hărțile sunt numite aplicații între structurile matematice care păstrează structura internă.

Pentru a face acest lucru complet clar, putem compara polimorfismul și moștenirea. Cu alte cuvinte, acest lucru ne permite să realizăm polimorfismele în ierarhiile de clasificare. De asemenea, este important să menționăm că acestea sunt date prin moștenire, atâta timp cât moștenirea, pe care am putea să o înțelegem ca derivate ale unui obiect, aparține întotdeauna aceleiași clase; Pentru a da un exemplu de ceea ce a fost explicat, putem spune că din cuvântul vehicul, ies mai multe clase, cum ar fi o mașină, o motocicletă și un autobuz, văzând astfel, polimorfismul și moștenirea sunt două concepte legate incontestabil.

Importanța sistemului tip în polimorfism

Numind această clasificare ca un sistem de tip, deoarece derivatele acelui cuvânt fac încă parte din ele, dar de ce este important acest lucru în polimorfismul de programare orientată pe obiecte?

Mulți dintre cei care au intrat în acest articol ar putea fi familiarizați cu programarea în limbaje slab tastate, așa cum ar fi în cazul Javascript și PHP, totuși este important să înțelegem bine cum este.

În acest tip de limbaj, atunci când definim o variabilă, trebuie să indicăm întotdeauna tipul pe care dorim să îl conțină variabila respectivă, de exemplu: int Numărul meu.

În acest fel avem posibilitatea de a indica faptul că variabila stabilită ca „Numărul meu” va conține întotdeauna un număr întreg; în caz contrar, compilatorul ne aruncă un mesaj de eroare care ne împiedică să compilăm programul pe care l-am realizat.

De fapt, acest lucru ni se poate întâmpla și cu obiecte, dacă în Java definim clasa „lungmetraj”, știind acest cuvânt ca un film de film care durează mai mult de o oră, atunci când creăm obiecte din clasa „lungmetraj” trebuie să indicați variabilele în care este indicat tipul de obiect care se intenționează a fi realizat. O putem exprima astfel:

Lungmetraj miLargo = nou lungmetraj

Variabila noastră ar fi „lungul meu” și expunând acest lucru, vom avea o referință la un obiect din clasa sau tipurile de „Lungmetraj” și, în timp ce durează, ar trebui să aibă întotdeauna orice obiect din aceeași clasă sau tip, care a spus-o Este important să știți, astfel încât să nu puteți stoca un număr întreg în variabilă sau în alt obiect de alt tip sau clasă, care nu este moștenire și care nu are nicio relație.

Dacă menționăm din nou exemplul vehiculelor și tipurile lor, este important să clarificăm că, dacă decidem să definim o variabilă care indică obiectul clasei «moto», în timp ce această variabilă durează, trebuie să indice întotdeauna o legătură sau moștenire obiectează la clasa «moto», nu la clasa «mașină», nici «autobuz»; cu toate acestea, în limbaje slab evacuate, precum cele pe care le-am menționat mai devreme, această inflexibilitate nu există, deși este o caracteristică comună a limbajelor puternic eviscerate, cum ar fi Java. Iată un exemplu mai larg:

  • Mașină myCar = mașină nouă (Mazda 2 ″): Mazda 2 ar fi moștenirea noastră a obiectului aparținând acelei clase sau tipuri, și este spre care indică variabila și, dacă am dori, mâine ar putea indica un alt obiect al Mașina mea.

MyCar = Mașină nouă (Ford Focus 2.0 ″)

Ceea ce nu putem face niciodată este să păstrăm în setul nostru de variabile ca clasă Mașină, altceva care nu are nicio legătură cu tipul Mașinii, pentru că atunci am avea o eroare în timpul compilării, în cazul în care se întâmplă, trebuie să fi salvat Mașina nouă Ford Focus 2.0 am fi ales New Moto Yamaha YBR.

Ar trebui clarificat faptul că în acest moment nu vorbim încă despre polimorfism ca atare, dar testăm programarea în general cu sistemul de tip; punctul este că trebuie să ne deschidem mintea la complicațiile pe care ni le poate oferi restricția limbajelor puternic tripate pentru a înțelege ulterior de ce polimorfismul este important și o piesă cheie în polimorfism în programarea orientată pe obiecte.

Într-un limbaj de computer complet tastat atunci când se manifestă o funcție, trebuie să păstrăm întotdeauna ca punct de importanță pe care îl informăm despre tipul de reguli pe care urmează să le primească. Nu vom putea transmite altceva în afară de variabile sau literali cu valori întregi la funcția pe care am stabilit-o, dacă ne vine să trecem alte date cu alte tipuri, compilatorul va modifica, nu va permite pentru a compila programul, deoarece într-un astfel de caz nu a putut găsi tipurile așteptate în parametrii funcției.

moto-car-1

Polimorfismul în obiecte

În cele din urmă am ajuns la partea care specifică cu adevărat acest subiect de interes, de aceea, în cadrul acestui sistem, vor fi create propriile elemente care își vor manifesta clasele și obiectivele, deoarece limbajele puternic tastate funcționează, o variabilă trebuie să indice întotdeauna un obiect de genul pe care l-am indicat la momentul în care am stabilit-o.

Acesta este ceva esențial de reținut, acum, o funcție al cărei parametru a fost declarat de o clasă, ne va accepta doar să primim obiecte din acea clasă; O matrice care a fost declarată a fi alcătuită din elemente de un anumit tip ne va permite doar să completăm casetele sale cu obiecte de acel tip pe care le-am stabilit; vom prezenta un alt exemplu:

Vehicul [] myVehiculos = vehicul nou [3]

Acest exemplu pe care îl oferim, este o variabilă care este o matrice și în el declarăm că conținutul casetelor va fi obiecte din clasa Vehicul, într-un limbaj puternic tripat poate conține doar obiecte din clasa vehicul, așa cum am avut deja explicat, dar acum găsim polimorfism, cu care putem da ceva mai multă flexibilitate sistemului de tip, oferindu-ne posibilitatea ca o variabilă să accepte și obiecte din clasa „copii” sau derivate.

Facând mai flexibil sistemul de tipuri, nu vorbim în ansamblu, ci despre ceea ce ar avea de-a face cu clasificările de moștenire pe care le avem în clasa noastră sau în sistemele de tip. Dacă reușim să definim o matrice folosind celule dintr-o clasă stabilită, compilatorul ne-ar accepta să inserăm cuvintele „copii” ale acelui obiect pe care le-am stabilit deja în acele casete. Dacă stabilim că o funcție primește obiecte de o anumită clasă ca parametri , compilatorul ne va permite să ne lăsăm să îi trimitem invocarea obiectelor dintr-o clasă derivată din cea pe care o declarasem deja.

Luând-o la ceva mai concret, matricea noastră de vehicule nu ne va permite doar să introducem vehicule generice în variabila sa, ci și toate obiectele copilului sau clasele derivate din această clasă, apoi am avea obiecte de autobuz, mașină și motocicletă. clasă sau orice copil pe care l-am definit și toate acestea datorită polimorfismului.

Aplicarea polimorfismului

În ciuda explicațiilor pe care le-am dat-o lungmetrajului, vrem să clarificăm că, pe lângă faptul că suntem un film, putem avea și documentare și, printre altele; poate ambele au caracteristici diferite, timp de audiență diferit, prețuri diferite și din acest motiv am fi putut decide că clasa noastră de film de lung metraj are clase fiice sau moșteniri precum „film” sau „documentar”.

Dacă creăm o clasă stabilită ca Cinema și o metodă pe care o vom numi „reproduce”, aceasta va servi drept parametru pentru ceea ce vrem să reproducem într-un cinematograf, unde pot ajunge atât obiecte ale clasei de cinema, cât și ale clasei de documentare, dacă înțelegem bine sistemul de tip (fără a intra chiar în polimorfism) metodele noastre vor stabili tipurile de parametri pe care îi primim. Ar arăta cam așa:

  • Redare (film de redat)

În schimb, dacă vrem să reproducem un documentar, ar trebui să ne schimbăm formula.

  • Play (Documentar documentar de redat)

Și este cu adevărat necesar să creăm două formule diferite? Ambele metode de reproducere a celor două lucruri ar fi exact aceleași, de ce să ne deranjăm? Ar trebui să punem filmul în player, să jucăm (sau să jucăm) și să creăm un record cu numărul de bilete care au reușit să fie vândute. Deși nu este o pacoste să facem ambele metode, trebuie să fim conștienți de faptul că ni se poate prezenta situația în care trebuie să creăm o altă formulă, am putea da exemplul că avem un film, dar de data aceasta în format 3D.

Ajunși în acest punct, putem apela la polimorfism. Cu ajutorul său, putem crea o metodă `play` care va recunoaște tot felul de elemente - documentare, filme sau orice altceva din aceeași clasă (care este înrudit) - pe care am putea avea nevoie să le creăm în viitor. Ceea ce ne-ar permite limbajele de programare este să definim metoda `play` specificând că parametrul clasei pe care o vom primi este un obiect de film artistic, dar limbajul și compilatorul ar accepta orice obiect derivat din film sau documentar. Am ajunge la ceva de genul: `play(FeatureFilm elementToPlay)`.

Fie că dorim să creăm filme sau documentare pentru a le reproduce, toate acestea vor fi posibile cu o singură metodă, aceea de a reproduce, datorită faptului că, datorită polimorfismului din programarea orientată obiect, facem sistemul mai flexibil, acesta nu va fi fi necesar. De exemplu, dacă doriți să reproduceți un film și nu un documentar, nu va trebui să selectăm clasa Cinema, dar este suficient ca ceea ce dorim să reproducem să facă parte din moștenirea obiectului de lung metraj.

Dacă ne întoarcem la exemplul vehiculului, chiar ținând cont de utilitatea polimorfismului și de posibilitățile pe care ni le oferă pentru a reduce toată întreținerea programelor de calculator pe care ar trebui să le facem dacă nu am avea ajutorul acestui concept.

Să presupunem că avem clasa de parcare (în spaniolă ar fi clasa de a învăța să parcăm) în cadrul căreia avem funcția de parcare. Într-o parcare avem posibilitatea de a parca autobuze și motociclete, pe lângă doar mașinile, și fără polimorfism ar trebui să creăm o metodă care să ne permită să parcăm obiecte de tip „mașină” și o altă care ne permite să parcăm obiecte de tip „autobuz” și altul care ne permite să parcăm obiecte de tip „motocicletă”, deși procedura de efectuare a acestor acțiuni în ciuda diferenței notabile dintre aspectele acestor trei vehicule este practic aceeași, doar că unul ocupă mai mult spațiu decât celălalt.

Cel mai precis lucru ar fi să avem o singură metodă care simplifică lucrurile pentru noi și ne permite să primim toate tipurile de vehicule, nu numai mașini și mărci de mașini, ci toate derivatele acceptate și prețioase ale obiectului vehiculului. Mai întâi am avea refolosirea codului, deoarece așa cum am spus deja, parcarea acestor tipuri de vehicule este similară cu singura diferență în spațiul pe care îl ocupă fiecare, dar în plus față de asta, dacă mâine ar exista un alt tip de vehicul pentru a fi pus în vânzare pe piață, am avea posibilitatea ca software-ul nostru să îl accepte fără a fi nevoie să modificăm clasa noastră deja stabilită de parcare.

Avem la dispoziție o singură metodă acceptarea tuturor moștenirilor precise pe care le poate avea un vehicul, făcând munca mai flexibilă și economisindu-ne timpul pe care l-am fi petrecut creând unul pentru fiecare tip de vehicul. Polimorfismul în programarea orientată pe obiecte deschide porțile către o serie de obiecte care pot fi acceptate printr-o singură metodă.

Încercăm să explicăm polimorfismul în modul cel mai ușor de înțeles și să facem o trecere în revistă largă a tot ceea ce se află în spatele acestuia, nu ar fi fost adecvat să trecem imediat la conceptul ca atare, fără a oferi fundalul său care să ne ajute să îl înțelegem și să înțelegem importanța sa remarcabilă. și importanță.utilizare pe care i-o putem da.

Având posibilitatea de a putea include mai multe metode într-una, în timp ce derivările sunt de acord ca moștenire a obiectului, este destul de util, deoarece ne scutește nevoia de a crea mai multe, obligându-ne să fim foarte specifici fără a ne oferi posibilitatea de a face o lucru flexibil în Faptul că putem crea un mod mai dinamic de a gestiona ceea ce am programat, la fel de simplu ca să cunoaștem derivarea corectă a unui singur cuvânt, adică tot ceea ce cuprinde, ne ajută să facem o treabă mai eficientă.

Sperăm că v-a plăcut acest articol și că ați aflat despre polimorfismul în programarea orientată pe obiecte. Dacă doriți să citiți un alt articol despre programare, vă recomandăm să îl vizitați pe următorul, care tratează un limbaj de programare bine-cunoscut în lumea informaticii: Programarea C++.


Adăugați ca sursă preferată în Google