Edukien aurkibidea[Ezkutatu][Erakutsi]
Garatzaileen artean, objektuetara zuzendutako programazioak jarraitzaile handiak erakarri ditu. Python ordenagailu-lengoaia ezaguna, era berean, objektuetara zuzendutako paradigmari atxikitzen zaio.
Python-en objektuak eta klaseak definitzeaz arduratzen da, eta horrek OOPs printzipioen oinarria osatzen du. "Python-en objektuetara zuzendutako programazioa"ri buruzko tutorial honetan, Python klaseak deklaratu, haietatik objektuak sortzen eta lau OOP teknikak erabiltzen ikasiko duzu.
Beraz, lehenik eta behin.
Zer da objektuetara zuzendutako programazioa?
Objektuetara zuzendutako programazioaren (OOP) ardatz nagusia "objektuak" sortzea da. Elkarri lotuta dauden aldagai eta funtzioen bilduma batek osatzen du objektu bat.
Aldagai horiei maiz objektuaren atributu gisa deitzen zaie, eta haren jokabideak bere funtzio gisa aipatzen dira. Elementu hauek aplikazioari egitura eraginkorragoa eta ulergarriagoa eskaintzen diote. Automobila elementu baten adibidea da.
Automobila elementu bat balitz, bere ezaugarriek kolorea, modeloa, prezioa, marka, etab. besteak beste, besteak beste. Gainera, bizkortu, moteldu eta martxa aldatuko luke.
Beste ilustrazio bat: txakur bat elementutzat hartzen badugu, bere ezaugarrietako batzuk kolorea, arraza, izena, pisua, etab izan daitezke. Eta mugitzen, zaunka egiten, jolasten, etab.
Objektuak, ezkutatzeak, herentzia eta abar bezalako mundu errealeko kontzeptuak programazioan barneratzen dituenez, objektuetara bideratutako programazioa ezaguna da. Mundu errealeko zirkunstantzien antzekoa denez, bistaratzea errazagoa da.
Objektuetara zuzendutako programazio kontzeptuak
Python-en klaseak eta objektuak
Objektuetara zuzendutako beste hizkuntza guztiak bezala, Python-ek objektuak sortzeko klaseak diseinatzeko aukera ematen dizu. Python-en datu-mota ezagunenak, kateak, zerrendak, hiztegiak eta beste objektu batzuk barne, barne-klaseak dira.
Klase bat objektu mota jakin bat definitzen duten estekatutako metodo eta instantzia-aldagaien multzoa da. Klase bat objektu baten eredu edo txantiloi gisa ikus daiteke. Klase bat osatzen duten aldagaiak atributu gisa ezagutzen dira.
Objektu bat atributu multzo definitu bat duen klase bateko kidea da. Horregatik, edozein objektu sor daitezke klase bera erabiliz.
Python klaseak klase hitza erabiliz definitzen dira, eta ondoren klasearen izena eta bi puntuak jartzen dira. Loro klase baten ilustrazioa izan daiteke:
Hemen, Parrot klase hutsa deklaratuko dugu class gako-hitza erabiliz. Instantziak sortzen ditugu klaseetatik. Instantzia bat klase jakin batetik egindako objektu jakin bat da. "pasatu" sarritan erabiltzen da une honetan inplementazioari uko egin diezaiokegun kodearen ordezko gisa. Python kodea exekutatu dezakegu errorerik sortu gabe "pass" gako-hitza erabiliz.
Klase baten instantziazioak objektu bat (instantzia) sortzen du. Objektuaren deskribapena soilik definitzen da klase bat sortzen denean. Ondorioz, ez da biltegiratze edo RAM esleitzen.
Loro klaseko objektu baten adibidea hau da:
Obj Parrot klaseko objektu bat da kasu honetan.
Demagun loroei buruzko zehaztasunak ezagutzen ditugula. Loro klasea eta bere objektuak nola sortu erakutsiko dugu orain.
Metodo berezia ( __init__ )
init izeneko metodoak Parrot objektu bakoitzak izan behar dituen atributuak definitzen ditu (). Parrot objektu berri bat eratzen denean, __init__ funtzioak objektuaren hasierako egoera sortzen du objektuaren propietateen barruan ematen ditugun balioak esleituz.
Beraz, klasearen instantzia berri bakoitza __init__() erabiliz hasieratzen da. __init__() edozein parametro onar ditzakeen arren, self da beti lehen parametroa.
Klase aktiboaren instantziari erreferentzia bat sartzen da auto-argumentuan. Self parametroak, klase baten uneko objektuaren helbidea lotzen duena eta bere (objektuaren) aldagaien datuetara sarbidea ematen diguna, hori adierazten du.
Adibidea 1
Parrot izeneko klasea ezarri genuen goiko kodean. Ondoren, propietateak definitzen dira. Gauza baten ezaugarriak bere propietateak dira. Klasearen __init__ funtzioa da non ezaugarri hauek zehazten diren.
Objektu bat eratzen denean, hasierako metodoa da hasiera batean deitzen dena. Ondoren, Parrot klaseko instantziak sortzen dira. Blaze eta Wonda kasu honetan gure objektu berrien erreferentziak (balioak) dira. __class .species klase atributuan sartzeko aukera ematen digu.
Klase baten instantzia bakoitzak ezaugarri berdinak ditu. Instantziaren ezaugarriak blaze.name eta blaze.age erabiliz ere atzi daitezke. Klase baten instantzia guztiek instantzia-atributu bakarrak dituzte, hala ere.
Adibidea 2
Metodoak
Klase baten gorputzaren barruan definitutako funtzioei metodo deitzen zaie. Elementu batek nola jokatuko duen zehazteko erabiltzen dira.
Aipatutako aplikazioan () bi metodo definitzen dira, sing() eta dance. Instantzia-objektu batean deitzen direnez, adibidez, flame, instantzia-metodo gisa deitzen zaie.
OOPS kontzeptuaren oinarriak
Objektuetara zuzendutako programazioaren lau ideia nagusiak hauek dira:
- herentzia
- kapsulatzea
- polimorfismo
- abstrakzioa
herentzia
Jendeak maiz esaten die jaioberriei gurasoen antza duten aurpegi-ezaugarriak dituztela edo gurasoengandik ezaugarri partikularrak jaso dituztela.
Baliteke gurasoekin ezaugarri batzuk partekatzen dituzula ere ikusi izana. Mundu errealeko egoera jaraunspenaren nahiko antzekoa da.
Hala ere, kasu honetan, "gurasoen klaseak" ezaugarriak "haur klaseetara" pasatzen dira. Alderdi horiei "propietateak" eta "metodoak" esaten zaie testuinguru honetan.
Klase batek bere metodoak eta atributuak beste klase batetik atera ditzake herentzia deritzon teknika erabiliz. Oinordetza klase seme batek klase nagusi baten propietateak jasotzen dituen prozesua da.
Adibidea:
Guraso klasea Human klase umeak heredatzen du goiko adibideko Boy. Boy Humanetik heredatzen ari denez, bere metodo eta atributu guztiak atzi ditzakegu Boy klasearen instantzia bat sortzen dugunean.
Boy klasean, schoolName izeneko metodoa ere definitu da. Klase nagusiaren objektuak ezin du eskola-izena metodora atzitu. SchoolName metodoari, ordea, dei egin daiteke klaseko objektu ume bat (Boy) sortuz.
kapsulatzea
Programako aldagai guztiei sarbide globala ematea ez da zentzuzkoa klaseekin lan egiten eta datu sentikorrak maneiatzen direnean.
Programari aldagai horietako edozeinetarako sarbide osoa eman gabe, kapsulak mekanismo bat eskaintzen digu beharrezko aldagaiak lortzeko.
Helburu horretarako espresuki definitutako metodoak aldagaietako datuak eguneratzeko, editatzeko edo ezabatzeko erabil daitezke. Programatzeko metodo honek segurtasun eta datuen sarreraren gaineko kontrola hobetzearen abantailak ditu.
Ikusi zein azkar erabil daitezkeen aldagaiak beheko erakustaldian:
polimorfismo
Demagun zure telefonoa erabiltzen ari zarela arakatzeko Instagram jarioak. Musika entzuteko gogoa izan zenuenean, Spotify-ra sartu eta zure abesti gogokoena erreproduzitzen hasi zinen.
Denbora baten buruan, dei bat jaso zenuen, eta, beraz, atzeko planoan egiten ari zarena pausatu zenuen erantzuteko. Zure lagunak deitu zuen eta pertsona jakin baten telefono-zenbakira mezuak bidaltzeko eskatu zion.
Beraz, telefono zenbakia SMS bidez bidali eta zure zereginekin jarraitu zenion. Zerbait jaso al duzu? Gailu bakarrarekin —zure telefono mugikorra— jarioetan nabiga dezakezu, musika entzun, telefono deiak hartu eta egin eta mezuak bidali.
Beraz, polimorfismoa horren parekoa da. Poly ugari esan nahi du, eta morph forma desberdinak adierazten ditu. Beraz, polimorfismoak bere osotasunean hainbat forma dituen zerbaiti egiten dio erreferentzia.
Edo, zirkunstantziaren arabera, hainbat jokabide erakutsi ditzakeen "zerbait". OOPS-en, polimorfismoak izen bereko baina portaera desberdineko funtzioak deskribatzen ditu. Bestela, beste funtzio sinadura bat funtzioaren izen bera duena (funtzioari pasatu zaizkion parametroak).
Adibidea:
Hemen, animalia aldakorra erabil dezakegu Zebraren eta Untxiaren objektuetan zehar errepikatzeko, dagozkien instantzia-metodoak erabiliz. Ondorioz, zebraren eta untxiaren portaera (kolorea () eta jaten ()) animalia izeneko aldagai bakarrarekin adierazten da. Beraz, polimorfismoaren arauak betetzen ari da.
abstrakzioa
Seguruenik ordenagailu eramangarria, telefonoa edo tableta erabiliko duzu eduki hau irakurtzeko. Irakurtzen duzun bitartean, ustez oharrak hartzen ari zara, pasarte gakoak azpimarratuz eta agian informazioren bat zure fitxategi pertsonaletan gordetzen ari zara.
Hau irakurtzean ikus dezakezun guztia "pantaila" bat da bistaratzen ari zaizkizun datuekin. Idazten duzun bitartean teklatuaren teklak ikusten dituzu, beraz, ez duzu kezkatu behar barneko ñabarduraz, esate baterako, tekla bat sakatzeak hitz hori pantailan agertzea eragin dezakeen.
Bestela, zure pantailako botoi bat sakatzeak fitxa berri bat abiarazi dezakeen.
Beraz, egoera honetan beha dezakegun guztia abstraktua da. Sortzen ari den emaitza baino ezin dugu ikusi eta ez barruko korapilatsuak (egiaz axola zaizkigunak).
Honen antzera, abstrakzioak denak dituen funtzioak bakarrik agerian uzten ditu inplementazio edo barne xehetasunak ezkutatzen dituen bitartean.
Abstrakzioaren helburu nagusia atzeko informazioa eta kanpoko edozein datu ezkutatzea da, jendeak ikusi behar duena soilik ikus dezan. Kodearen konplexutasuna kudeatzen laguntzen du.
Adibidea:
Ibilgailuarekin lotutako klase abstraktu bat dago hemen. ABC klase abstraktutik heredatzen duenez, abstraktua da. Metodo abstraktuak definitzen ez direnez edo hutsik geratzen ez direnez, Ibilgailu klaseak gurpilen no izeneko metodo abstraktua du, definiziorik ez duena.
Klase abstraktuak heredatzen dituzten klaseak aurreikusten dituzte metodoaren ezarpena emateko.
OOPS kontzeptuen onurak
- Kapsulatuz, segurtasun handia eta datuen pribatutasuna lortzen dira.
- Klase bereko bertsio polimorfiko asko izateko malgutasuna.
- Kodearen konplexutasun maila altua abstrakzioaren bidez murriztu zen.
- Arazo bakar bat aurkitzeko ehunka kode lerro bahetu beharrean, programazioaren modularitateak arazketa erraza egiten du.
- Kodea berrerabiltzea seme-alaba klasearen gurasoen propietateen herentziagatik sortzen da.
- Arazoen ebazpen eraginkorra posible da, mini-arazo bakoitzerako beharrezko ekintzak egiten dituzten klaseak sortzen ditugulako. Hurrengo arazoa are azkarrago konpon daiteke klase horiek berrerabil ditzakegulako.
Ondorioa
Bukatzeko, OOPS ideiak ezagutu ditugu Python-en, oraintxe bertan programazio-paradigmarik beroena.
Hau irakurri ondoren, konturatu behar zara OOPS paradigmak klaseen eta objektuen ideia erabat jorratzen duela. eta OOPS kontzeptuak, hala nola enkapsulazioa, polimorfismoa, herentzia eta abstrakzioa.
Utzi erantzun bat