A doni të dini se çfarë është polimorfizmi? Në artikullin vijues, do t'ju japim informacion të detajuar rreth asaj që quhet polimorfizëm në programimin e orientuar nga objektet.

Polimorfizmi në programimin e orientuar nga objekti
Edhe pse mund të duket si një term disi kompleks, ky lloj teme e shkencës kompjuterike në fakt lidhet me aspekte shumë themelore të fushës. Kur mësojmë Programimin e Orientuar nga Objektet , mund të hasim këtë përshkrim, që thjesht do të thotë përshkrimi i shumë gjendjeve të mundshme të një vetie të vetme.
Në shkencën kompjuterike, është një nga vetitë themelore të programimit të orientuar nga objektet dhe është gjithashtu një teknikë e përdorur nga viruset kompjuterike ose krimbat për të modifikuar pjesë të kodit të tyre, duke i bërë ato më të vështira për t'u zbuluar. Kjo mund ta thjeshtojë shumë programimin kur nuk duam të jemi shumë specifikë dhe kemi nevojë për diçka më funksionale që përshtatet me një mënyrë më të gjerë pune, duke zvogëluar ngarkesën tonë të punës dhe duke na ndihmuar të menaxhojmë diçka më dinamike dhe fleksibile.
Para se të futemi drejtpërdrejt në temën kryesore, do të shpjegojmë disa koncepte dhe do të analizojmë përkufizimet për t'ju dhënë një hyrje , jo vetëm për t'ju ndihmuar ta kuptoni më mirë, por edhe për të kuptuar funksionin, rëndësinë dhe sa i dobishëm mund të jetë në fushën e shkencës kompjuterike, duke na ndihmuar të përmirësojmë punën tonë. Ndoshta nuk do të gjeni asgjë të jashtëzakonshme përpara se të hidheni drejtpërdrejt në polimorfizëm në programimin e orientuar nga objektet, por është e rëndësishme të mbani mend sa vijon për një kuptim të duhur.
Koncepti i polimorfizmit në programimin e orientuar nga objekti e ka origjinën në Simula 67, e cila është një gjuhë programimi, e krijuar për të kryer simulime. Kjo u krijua nga Ole Joha Dahl dhe Kristen Nygaard të cilët i përkisnin qendrës norvegjeze të të dhënave në Oslo.
Kjo qendër iu kushtua simulimit të anijeve, pati shumë konfuzion për shkak të shpërthimit për shkak të dallimeve midis njërës dhe tjetrës, kur këto anije u grupuan sipas klasifikimit të tyre përkatës për të gjeneruar më shumë kontroll në kohën e kryerjes së studimeve , ishte atëherë që kjo ide u realizua. notoj.
Ky stil programimi në vitet '80 mbizotëronte në pothuajse të gjitha fushat e llogaritjes për shkak të atribuimit të tij të madh me C ++ që është një gjuhë tjetër programimi C. Falë ndërfaqeve grafike të përdoruesit dominimi i kësaj metode funksionoi shumë mirë.
Polimorfizmi në programimin e orientuar drejt objekteve ka disa karakteristika, të cilat u aplikuan në gjuhë të ndryshme që përdoreshin në atë kohë, si: Ada, BASIC, LISP, Pascal, ndër shumë të tjera, edhe pse zhvilluan probleme të ndryshme të përputhshmërisë.
Për një shpjegim më të detajuar të asaj që është Polimorfizmi në programimin e orientuar drejt objekteve, ju ftojmë të shikoni videon e mëposhtme:
Polimorfizmi dhe Trashëgimia
Prefiksi poli e ka origjinën në greqisht, kështu që përshkrimi i tij i saktë do të thotë bollëk, shumë ose shumëllojshmëri, dhe morfizmi është një prapashtesë greke që hyn në formimin e fjalëve me kuptimin e formës, përbërjes ose strukturës së një trupi. Duke marrë parasysh këtë, ne mund të hyjmë në atë që duam të shpjegojmë në këtë fragment, fjala jonë kryesore është në thelb sipas përkufizimit një larmi e formuar nga struktura e një trupi; Në fusha të ndryshme të matematikës, hartat quhen aplikimet midis strukturave matematikore që ruajnë strukturën e brendshme.
Për ta bërë këtë plotësisht të qartë, ne mund të krahasojmë polimorfizmin dhe trashëgiminë. Me fjalë të tjera, kjo na lejon të kryejmë polimorfizmat në hierarkitë e klasifikimit. Isshtë gjithashtu e rëndësishme të përmendet se këto jepen përmes trashëgimisë, përderisa trashëgimia, të cilën ne mund ta kuptojmë si derivate të një objekti, i përket gjithmonë të njëjtës klasë; Për të dhënë një shembull të asaj që është shpjeguar, mund të themi se nga fjala automjet, dalin disa klasa, të tilla si një makinë, një motor dhe një autobus, duke e parë atë në këtë mënyrë, polimorfizmi dhe trashëgimia janë dy koncepte të lidhura pa dyshim.
Rëndësia e Sistemit të Tipit në Polimorfizëm
Emërtimi i këtij klasifikimi si sistem tipik, sepse derivatet e asaj fjale janë ende pjesë e tyre, por pse është e rëndësishme kjo në polimorfizmin e programimit të orientuar nga objekti?
Shumë nga njerëzit që kanë hyrë në këtë artikull mund të jenë të njohur me atë që do të thotë të programosh në gjuhë të shtypura dobët, siç do të ishte në rastin e Javascript dhe PHP, megjithatë është e rëndësishme që të kuptojmë mirë se si është.
Në këtë lloj gjuhe, kur përkufizojmë një ndryshore, ne gjithmonë duhet të tregojmë llojin që ne duam që ajo ndryshore të përmbajë, për shembull: int myNumber.
Në këtë mënyrë ne kemi mundësinë të tregojmë se ndryshorja e vendosur si "numri im" do të përmbajë gjithmonë një numër të plotë; nëse përndryshe, përpiluesi do të na hidhte një mesazh gabimi që na pengon të përpilojmë programin që kemi bërë.
Në fakt, kjo mund të ndodhë edhe me objektet, nëse në Java përkufizojmë klasën "film artistik", duke e ditur këtë fjalë si një film film që zgjat më shumë se një orë, kur krijojmë objekte të klasës "film artistik" duhet të tregojmë variablat në të cilat tregohet lloji i objektit që synohet të bëhet. Ne mund ta shprehim atë në këtë mënyrë:
Filmi artistik miLargo = film i ri me metrazh të gjatë
Variabla jonë do të ishte "myLong" dhe duke e ekspozuar këtë, ne do të kemi një referencë për një objekt të klasës ose llojeve të "Filmit të Veçantë", dhe derisa të zgjasë duhet të ketë gjithmonë çdo objekt të së njëjtës klasë ose lloj, që e tha atë është e rëndësishme të dini në mënyrë që të mos ruani një numër të plotë në ndryshore, ose ndonjë objekt tjetër të një lloji ose klase tjetër, që nuk është trashëgimi dhe që nuk ka asnjë lidhje.
Nëse përmendim përsëri shembullin e automjeteve dhe llojet e tyre, është e rëndësishme të sqarojmë se nëse vendosim të përcaktojmë një ndryshore që tregon për objektin e klasës «moto», ndërsa kjo variabël zgjat, ajo gjithmonë duhet të tregojë një lidhje ose trashëgimi kundërshtoni klasën «moto», jo klasën «makinë», as «autobus»; megjithatë, në gjuhët e dobëta si ato që përmendëm më parë, kjo papërkulshmëri nuk ekziston, megjithëse është një tipar i zakonshëm i gjuhëve të rrënuara shumë si Java. Këtu është një shembull më i gjerë:
- Makina myCar = makinë e re (Mazda 2 ″): Mazda 2 do të ishte trashëgimia jonë e objektit që i përket asaj klase ose tipi, dhe është ajo në të cilën ndryshorja tregon, dhe nëse do të donim, nesër ajo mund të tregonte një objekt tjetër të Makina ime.
MyCar = makinë e re (Ford Focus 2.0 ″)
Ajo që ne kurrë nuk mund të bëjmë është të ruajmë në grupin tonë të ndryshueshëm si klasa e makinave, diçka tjetër që nuk ka lidhje me llojin e makinës, sepse atëherë do të kishim një gabim në kohën e përpilimit, në rast se ndodh, duhet të ketë ruajtur New Car Ford Focus 2.0 do të kishim zgjedhur New Moto Yamaha YBR.
Duhet sqaruar se në këtë pikë nuk po flasim ende për polimorfizmin si të tillë, por po testojmë programimin në përgjithësi me sistemin e tipit; çështja është se ne duhet të hapim mendjen për ndërlikimet që mund të na japë kufizimi i gjuhëve të fuqishme, në mënyrë që të kuptojmë më vonë pse polimorfizmi është i rëndësishëm dhe një pjesë kyçe në polimorfizmin në programimin e orientuar drejt objekteve.
Në një gjuhë kompjuterike të shtypur plotësisht kur shfaqet një funksion, ne gjithmonë duhet ta mbajmë si pikë të rëndësishme atë kur informojmë llojin e rregullave që do të marrë. Ne nuk do të jemi në gjendje të kalojmë asgjë tjetër përveç ndryshoreve ose fjalë për fjalë me vlera të plota në funksionin që kemi krijuar, nëse na bie ndërmend të kalojmë të dhëna të tjera me lloje të tjera, përpiluesi do të ndryshojë, nuk do të lejojë ne për të përpiluar programin sepse në një rast të tillë ai nuk mund të gjente llojet e pritshme në parametrat e funksionit.
Polimorfizmi në objekte
Më në fund kemi arritur në pjesën që vërtet specifikon këtë temë me interes, prandaj nën këtë sistem, elementet e veta do të bëhen që shfaqin klasat dhe objektivat e tij, pasi funksionojnë gjuhët e shtypura fort, një ndryshore duhet të tregojë gjithmonë një objekt të llojit që treguam në kohën kur e krijuam atë.
Kjo është diçka thelbësore për të kujtuar, tani, një funksion parametri i të cilit është deklaruar i një klase, do të na pranojë vetëm të marrim objekte të asaj klase; Një grup që është deklaruar i përbërë nga elementë të një lloji të caktuar do të na lejojë vetëm të mbushim kutitë e tij me objekte të atij lloji që kemi krijuar; do të paraqesim një shembull tjetër:
Automjet [] myVehiculos = automjet i ri [3]
Ky shembull që po japim, është një variabël që është një grup dhe në të deklarojmë se përmbajtja e kutive do të jetë objekt i klasës së Automjeteve, në gjuhën e trefishtë mund të përmbajë vetëm objekte të klasës së automjetit, siç kishim shpjeguar tashmë, por tani gjejmë polimorfizëm, me të cilin mund t'i japim pak më shumë fleksibilitet sistemit të tipit, duke na dhënë mundësinë që një variabël të pranojë gjithashtu objekte të klasës "fëmijë" ose derivate.
Duke e bërë sistemin e tipit më fleksibël nuk po flasim në tërësi, por me atë që do të kishte të bënte me klasifikimet e trashëgimisë që kemi në klasat tona ose sistemet e tipit. Nëse arrijmë të përcaktojmë një grup duke përdorur qelizat e një klase të vendosur, përpiluesi do të na pranonte të fusnim fjalët "fëmijë" të atij objekti që ne kishim vendosur tashmë në ato kuti. Nëse vërtetojmë se një funksion merr objekte të një klase si parametra , përpiluesi do të na lejojë të na lejojë t'i dërgojmë thirrjen e objekteve të një klase që rrjedhin nga ajo që kishim deklaruar tashmë.
Duke e marrë atë në diçka më konkrete, grupi ynë i automjeteve jo vetëm që do të na lejojë të fusim automjete të përgjithshme në variablin e tij, por edhe të gjitha objektet e fëmijës ose klasat e derivuara të kësaj klase, atëherë do të kishim objekte të autobusit, makinës dhe motoçikletës klasës apo ndonjë fëmije.që e kemi përcaktuar, dhe e gjithë kjo falë polimorfizmit.
Zbatimi i polimorfizmit
Pavarësisht shpjegimit që i kishim dhënë filmit artistik, ne duam të sqarojmë se përveç të qenit film, mund të kemi edhe dokumentarë, dhe ndër të tjera; ndoshta të dyja kanë karakteristika të ndryshme, kohë të ndryshme auditori, çmime të ndryshme dhe për këtë arsye ne mund të kishim vendosur që klasa jonë e Filmit Tipar të ketë klasa bije ose trashëgimi të tilla si "film" ose "dokumentar".
Nëse krijojmë një klasë të krijuar si Kinema dhe një metodë që do ta quajmë "riprodho", ajo do të shërbejë si një parametër për atë që duam të riprodhojmë në një kinema, ku mund të arrijnë objekte të klasës së kinemasë dhe klasës së dokumentarit, nëse e kuptojmë mirë sistemin e tipit (pa hyrë as në polimorfizëm) metodat tona do të përcaktojnë llojet e parametrave që marrim. Do të duket diçka si kjo:
-
Luani (Filmi i filmit për tu luajtur)
Por në vend që të duam të riprodhojmë një dokumentar, do të na duhej të ndryshonim formulën tonë.
-
Luaj (Dokumentar dokumentar për të luajtur)
Dhe a është vërtet e nevojshme të krijohen dy formula të ndryshme? Të dyja metodat për të riprodhuar të dy gjërat do të ishin saktësisht të njëjta, pse të shqetësohesh? Ne vetëm do të na duhet të vendosim filmin artistik në luajtës, të godisim shfaqjen (ose të luajmë) dhe të krijojmë një rekord me numrin e biletave që arritën të shiten. Edhe pse nuk është shqetësim të bëjmë të dyja metodat, duhet të jemi të vetëdijshëm se mund të na paraqitet situata në të cilën duhet të krijojmë një formulë tjetër, mund të japim shembullin që kemi një film, por këtë herë në formatin 3D.
Pasi të kemi arritur në këtë pikë, mund të kalojmë te polimorfizmi. Me ndihmën e tij, mund të krijojmë një metodë `play` që do të njohë të gjitha llojet e elementeve - dokumentarë, filma ose çdo gjë tjetër të së njëjtës klasë (që është e lidhur) - që mund të na duhet të krijojmë në të ardhmen. Ajo që gjuhët do të na lejonin të bënim është të përcaktonim metodën `play` duke specifikuar që parametri i klasës që do të marrim është një objekt filmi artistik, por gjuha dhe kompiluesi do të pranonin çdo objekt të nxjerrë nga filmi ose dokumentari. Do të përfundonim me diçka të tillë: `play(FeatureFilm elementToPlay)`.
Pavarësisht nëse duam të krijojmë filma ose dokumentarë për t'i riprodhuar ato, e gjithë kjo do të jetë e mundur me një metodë të vetme, atë të riprodhimit, falë faktit se për shkak të polimorfizmit në programimin e orientuar drejt objekteve ne e bëjmë sistemin më fleksibël, nuk do të të jetë e nevojshme. Për shembull, nëse doni të riprodhoni një film dhe jo një dokumentar, ne nuk do të duhet të zgjedhim klasën e Kinemasë, por mjafton që ajo që duam të riprodhojmë është pjesë e trashëgimisë së objektit të filmit artistik.
Nëse i kthehemi shembullit të automjetit, madje duke pasur parasysh dobinë e polimorfizmit dhe mundësitë që na ofron për të zvogëluar të gjithë mirëmbajtjen e programeve kompjuterike që do të na duhej të bënim nëse nuk do të kishim ndihmën e këtij koncepti.
Le të themi se kemi klasën e Parkimit (në spanjisht do të ishte klasa të mësosh të parkosh) brenda së cilës kemi funksionin e parkimit. Në një parking kemi mundësinë e parkimit të autobusëve dhe motoçikletave, përveç veturave, dhe pa polimorfizëm do të na duhej të krijonim një metodë që na lejon të parkojmë objekte të tipit "makinë" dhe një tjetër që na lejon të parkojmë objekte të tipit "autobus" dhe një tjetër që na lejon të parkojmë objekte të tipit "motor", megjithëse procedura për të kryer këto veprime pavarësisht nga ndryshimi i dukshëm midis paraqitjeve të këtyre tre automjeteve është në thelb e njëjtë, vetëm se ai merr më shumë hapësirë se tjetri.
Gjëja më e saktë do të ishte të kishim një metodë të vetme që na thjeshton gjërat dhe na lejon të marrim të gjitha llojet e automjeteve, jo vetëm makina dhe marka makinash, por të gjithë derivatet e pranuara dhe të çmuara të objektit të automjetit. Së pari do të kishim ripërdorimin e kodit, sepse siç e kishim thënë tashmë, parkimi i këtyre llojeve të automjeteve është i ngjashëm me ndryshimin e vetëm në hapësirën që zë secili, por përveç kësaj, nëse nesër do të kishte ndonjë lloj tjetër automjeti për të dalë në shitje në treg, ne do të kishim mundësinë që softueri ynë të jetë në gjendje ta pranojë atë pa ndonjë nevojë për të modifikuar klasën tonë të krijuar tashmë të Parkimit.
Ne kemi në dispozicion një metodë të vetme pranimin e të gjitha trashëgimive të sakta që mund të ketë një automjet, duke e bërë punën më fleksibël dhe duke na kursyer kohën që do të kishim shpenzuar për krijimin e një për secilin lloj automjeti. Polimorfizmi në programimin e orientuar drejt objekteve hap dyert për një sërë objektesh që mund të pranohen me një metodë të vetme.
Ne përpiqemi të shpjegojmë polimorfizmin në mënyrën më të kuptueshme dhe të bëjmë një përmbledhje të gjerë të gjithçkaje që qëndron pas tij, nuk do të ishte e përshtatshme të hidheshim menjëherë në koncept si të tillë pa siguruar sfondin e tij për të na ndihmuar ta kuptojmë atë dhe të kuptojmë rëndësinë e tij të jashtëzakonshme dhe rëndësia.përdorimi që mund t’i japim.
Të kesh mundësinë për të qenë në gjendje të përfshish disa metoda në një, ndërsa derivacionet pajtohen si trashëgimi e objektit, është mjaft e dobishme sepse na kursen nevojën për të krijuar disa duke na detyruar të jemi shumë specifikë pa na dhënë mundësinë për të bërë më shumë punë fleksibile në Fakti që ne mund të krijojmë një mënyrë më dinamike të trajtimit të asaj që kemi programuar, aq e thjeshtë sa të njohësh rrjedhjen e saktë të një fjale të vetme, domethënë gjithçka që përfshin, na ndihmon të bëjmë një punë më efikase.
Shpresojmë që ju ka pëlqyer ky artikull dhe keni mësuar rreth polimorfizmit në programimin e orientuar nga objektet. Nëse dëshironi të lexoni një tjetër nga artikujt tanë mbi programimin, ju rekomandojmë të vizitoni artikullin vijues, i cili mbulon një gjuhë programimi të njohur në botën e shkencës kompjuterike: Programimi C++.

