INHOUDSOPGAWE[Versteek][Wys]
Onder ontwikkelaars het objekgeoriënteerde programmering 'n aansienlike aanhang gelok. Gewilde rekenaartaal Python voldoen ook aan die objekgeoriënteerde paradigma.
Dit handel oor die definisie van voorwerpe en klasse in Python, wat die basis vorm vir OOPs-beginsels. In hierdie tutoriaal oor "objekgeoriënteerde programmering in Python," sal jy leer hoe om Python-klasse te verklaar, voorwerpe daaruit te skep en die vier OOPs-tegnieke te gebruik.
So, eerste ding eerste.
Wat is objekgeoriënteerde programmering?
Die hooffokus van objekgeoriënteerde programmering (OOP) is die skep van "objekte". 'n Versameling van onderling gekoppelde veranderlikes en funksies vorm 'n voorwerp.
Daar word dikwels na hierdie veranderlikes verwys as die kenmerke van die voorwerp, en daar word gereeld na sy gedrag verwys as sy funksies. Hierdie items voorsien die toepassing met 'n meer effektiewe en verstaanbare struktuur. 'n Motor is 'n voorbeeld van 'n item.
As die motor 'n item was, sou sy eienskappe dinge soos sy kleur, model, prys, handelsmerk, ens insluit. Daarbenewens sou dit versnel, stadiger ry en ratte verander.
Nog 'n illustrasie: As ons aan 'n hond dink as 'n item, dan kan sommige van sy kenmerke kleur, ras, naam, gewig, ens. En hy sal rondbeweeg, blaf, speel, ens.
Omdat dit werklike konsepte soos voorwerpe, wegkruip, oorerwing, ens. by programmering inkorporeer, is objekgeoriënteerde programmering welbekend. Omdat dit so soortgelyk is aan werklike omstandighede, word visualisering eenvoudiger gemaak.
Objekgeoriënteerde programmeringskonsepte
Klasse en voorwerpe in Python
Soos alle ander objekgeoriënteerde tale, stel Python jou in staat om klasse te ontwerp om voorwerpe te genereer. Die gewildste datatipes in Python, insluitend stringe, lyste, woordeboeke en ander voorwerpe, is ingeboude klasse.
'n Klas is 'n groep gekoppelde metodes en instansieveranderlikes wat 'n sekere soort voorwerp definieer. 'n Klas kan gesien word as die model of sjabloon vir 'n voorwerp. Die veranderlikes waaruit 'n klas bestaan staan bekend as eienskappe.
'n Voorwerp is 'n lid van 'n klas wat 'n gedefinieerde stel eienskappe het. As gevolg hiervan kan enige aantal voorwerpe geskep word deur dieselfde klas te gebruik.
Python-klasse word gedefinieer deur die woordklas te gebruik, wat dan gevolg word deur die klasnaam en 'n dubbelpunt. 'n Illustrasie van 'n papegaaiklas kan wees:
Hier verklaar ons die leë klas Parrot deur die klassleutelwoord te gebruik. Ons skep gevalle uit klasse. 'n Instance is 'n spesifieke voorwerp wat uit 'n sekere klas gemaak is. 'slaag' word gereeld gebruik as 'n instaan vir kode waarvan ons vir die oomblik kan afsien van die implementering daarvan. Ons kan die Python-kode uitvoer sonder om 'n fout op te roep deur die "pass"-sleutelwoord te gebruik.
'n Instansiasie van 'n klas lei tot 'n objek (instansie). Slegs die objek se beskrywing word gedefinieer wanneer 'n klas geskep word. As gevolg hiervan word geen berging of RAM toegewys nie.
'n Voorbeeld van 'n papegaaiklasvoorwerp is:
Obj is in hierdie geval 'n Papegaai-klas-objek.
Kom ons sê ons weet besonderhede oor papegaaie. Ons sal nou demonstreer hoe om die papegaaiklas en sy voorwerpe te skep.
Spesiale metode (__init__)
'n Metode genaamd init definieer die eienskappe wat elke Parrot-voorwerp moet hê (). Wanneer 'n nuwe Papegaai-objek gevorm word, skep die funksie __init__ die voorwerp se aanvanklike toestand deur die waardes wat ons verskaf binne die voorwerp se eienskappe toe te ken.
Dus, elke nuwe instansie van die klas word geïnisialiseer deur __init__() te gebruik. Alhoewel __init__() enige aantal parameters kan aanvaar, is self altyd die eerste parameter.
'n Verwysing na die aktiewe klasinstansie is by die selfargument ingesluit. Die self-parameter, wat met die adres van die huidige objek van 'n klas skakel en ons toegang gee tot sy (die objek se) veranderlikes se data, dui dit aan.
Voorbeeld 1
Ons het 'n klas genaamd Parrot in die bogenoemde kode gestig. Vervolgens word eienskappe gedefinieer. Die kenmerke van 'n ding is sy eienskappe. Die klas se __init__ funksie is waar hierdie kenmerke gespesifiseer word.
Wanneer 'n voorwerp gevorm word, is die initialiseerdermetode die een wat aanvanklik genoem word. Dan word gevalle van die Parrot-klas geskep. Blaze en Wonda in hierdie geval is verwysings (waardes) na ons nuwe voorwerpe. __class .species laat ons toe om toegang tot die klaskenmerk te kry.
Elke geval van 'n klas het dieselfde kenmerke. Die instansiekenmerke kan ook verkry word deur blaze.name en blaze.age te gebruik. Alle gevalle van 'n klas het egter unieke instansie-kenmerke.
Voorbeeld 2
Metodes
Funksies wat binne 'n klas se liggaam gedefinieer word, word metodes genoem. Hulle word aangewend om te spesifiseer hoe 'n item sal optree.
Twee metodes, sing() en dans, word in die voorgenoemde toepassing () gedefinieer. Omdat hulle op 'n instansievoorwerp, soos vlam, opgeroep word, word daarna verwys as instansiemetodes.
Grondslae van die OOPS-konsep
Die vier kernidees van objekgeoriënteerde programmering is:
- Erfenis
- inkapseling
- polimorfisme
- onttrekking
Erfenis
Mense vertel gereeld vir pasgeborenes dat hulle gesigseienskappe het wat soos dié van hul ouers lyk of dat hulle spesifieke eienskappe van hul ouers geërf het.
Dit is moontlik dat jy ook opgemerk het dat jy 'n paar eienskappe met jou ouers deel. Die werklike situasie is ook redelik soortgelyk aan erfenis.
In hierdie geval word die "ouerklasse" se kenmerke egter oorgedra na die "kinderklasse". Daar word in hierdie konteks na hierdie aspekte verwys as "eienskappe" en "metodes".
'n Klas kan sy metodes en eienskappe van 'n ander klas aflei deur die tegniek bekend as oorerwing te gebruik. Oorerwing is die proses van 'n kinderklas wat die eiendomme van 'n ouerklas ontvang.
voorbeeld:
Die ouerklas Human word deur die kindklas Seun in die voorbeeld hierbo geërf. Omdat Boy van Human erf, kan ons toegang tot al sy metodes en eienskappe kry wanneer ons 'n instansie van die Boy-klas skep.
In die Seunklas is 'n metode genaamd schoolName ook gedefinieer. Die ouerklasvoorwerp kan nie toegang tot die metode skoolnaam kry nie. Die skoolNaam-metode kan egter opgeroep word deur 'n kinderklasobjek (Seun) te skep.
inkapseling
Om elke veranderlike in die program globale toegang te gee, is nie 'n wyse stap wanneer jy met klasse werk en sensitiewe data hanteer nie.
Sonder om die program volledige toegang tot enige van daardie veranderlikes te gee, verskaf enkapsulasie 'n meganisme vir ons om die nodige veranderlikes te verkry.
Metodes wat uitdruklik vir die doel gedefinieer word, kan gebruik word om data van veranderlikes op te dateer, te wysig of te skrap. Hierdie metode van programmering het die voordele van verbeterde sekuriteit en beheer oor die data-invoer.
Kyk hoe vinnig veranderlikes toeganklik kan wees in die demonstrasie hieronder:
polimorfisme
Kom ons sê jy gebruik jou foon om deur die Instagram voer. Toe jy die lus gekry het om na musiek te luister, het jy toegang tot Spotify gekry en jou gunstelingliedjie begin speel.
Na 'n tyd het jy 'n oproep ontvang, so jy het alles wat jy ook al gedoen het in die agtergrond onderbreek om dit te beantwoord. Jou vriend het gebel en gevra dat jy vir hulle 'n sekere persoon se telefoonnommer stuur.
So jy het vir hom die telefoonnommer per SMS gestuur en aangegaan met jou take. Het jy iets opgetel? Met net een toestel—jou selfoon—kan jy deur strome blaai, na musiek luister, oproepe neem en maak en boodskappe stuur.
Daarom is polimorfisme daarmee vergelykbaar. Poli beteken talle, en morf dui verskillende vorme aan. Daarom verwys polimorfisme as geheel na iets met verskillende vorme.
Of "iets" wat, afhangende van die omstandighede, 'n verskeidenheid gedrag kan toon. In OOPS beskryf polimorfisme funksies met dieselfde name maar verskillende gedrag. Alternatiewelik, 'n ander funksie handtekening met dieselfde funksie naam (parameters oorgedra na die funksie).
voorbeeld:
Hier kan ons die veranderlike dier gebruik om oor die voorwerpe van die Sebra en die Konyn te herhaal, deur hul onderskeie voorbeeldmetodes te gebruik. Gevolglik word die gedrag (kleur() & eet()) van beide die Sebra en die Konyn hier voorgestel deur 'n enkele veranderlike genaamd dier. Dit is dus die nakoming van die polimorfisme-reëls.
onttrekking
Jy gebruik heel waarskynlik 'n skootrekenaar, foon of tablet om hierdie inhoud te lees. Terwyl jy dit lees, neem jy vermoedelik ook aantekeninge, onderstreep sleutelgedeeltes en stoor dalk inligting in jou persoonlike lêers.
Al wat jy kan sien as jy dit lees is 'n "skerm" met die data wat aan jou vertoon word. Jy sien net die sleutelbord se sleutels terwyl jy tik, so jy hoef nie bekommerd te wees oor interne subtiliteite soos hoe die druk van 'n sleutel kan veroorsaak dat daardie woord op die skerm verskyn nie.
Alternatiewelik, hoe om 'n knoppie op jou skerm te druk, kan 'n nuwe oortjie begin.
Daarom is alles wat ons in hierdie situasie kan waarneem abstrak. Ons kan net die uitkoms sien wat dit skep en nie die innerlike ingewikkeldhede (wat eintlik vir ons saak maak nie).
Soortgelyk aan hierdie, onthul abstraksie slegs die funksies wat alles besit, terwyl enige implementerings of interne besonderhede verberg word.
Abstraksie se hoofdoelwit is om agtergrondinligting en enige eksterne data-implementering te verberg sodat mense net sien wat hulle moet sien. Dit help met die bestuur van die kode se kompleksiteit.
voorbeeld:
'n Voertuigverwante abstrakte klas is hier teenwoordig. Omdat dit van die abstrakte klas ABC erf, is dit abstrak. Omdat abstrakte metodes nie gedefinieer word nie of leeg bly, het die klas Voertuig 'n abstrakte metode genaamd geen wiele wat nie 'n definisie het nie.
Hulle verwag die klasse wat die abstrakte klasse erf om die metode se implementering te gee.
Voordele van OOPS-konsepte
- Deur inkapseling word hoë sekuriteit en dataprivaatheid bereik.
- Buigsaamheid om baie polimorfiese weergawes van dieselfde klas te hê.
- Die hoë vlak van kodekompleksiteit is deur abstraksie verminder.
- In plaas daarvan om deur honderde reëls kode te sif om 'n enkele probleem op te spoor, maak die modulariteit van programmering ontfouting eenvoudig.
- Kodehergebruik word veroorsaak deur 'n kinderklas se oorerwing van ouerklas-eiendomme.
- Effektiewe probleemoplossing is moontlik omdat ons klasse skep wat die nodige aksies vir elke mini-probleem doen. Die volgende probleem kan selfs vinniger opgelos word aangesien ons daardie klasse kan hergebruik.
Gevolgtrekking
Ten slotte, ons het geleer oor OOPS-idees in Python, die gewildste programmeringsparadigma op die oomblik.
Nadat u dit gelees het, moes u besef het dat die OOPS-paradigma geheel en al handel oor die idee van klasse en objekte. en OOPS-konsepte soos inkapseling, polimorfisme, oorerwing en abstraksie.
Lewer Kommentaar