Sisukord[Peida][Näita]
Arendajate seas on objektorienteeritud programmeerimine kogunud märkimisväärset jälgijaskonda. Populaarne arvutikeel Python järgib samuti objektorienteeritud paradigmat.
See käsitleb objektide ja klasside määratlemist Pythonis, mis on OOP põhimõtete aluseks. Selles õpetuses Pythoni objektorienteeritud programmeerimise kohta saate teada, kuidas Pythoni klasse deklareerida, neist objekte luua ja nelja OOP-i tehnikat kasutada.
Niisiis, esimene asi.
Mis on objektorienteeritud programmeerimine?
Objektorienteeritud programmeerimise (OOP) põhirõhk on "objektide" loomisel. Omavahel ühendatud muutujate ja funktsioonide kogum moodustab objekti.
Neid muutujaid nimetatakse sageli objekti atribuutideks ja selle käitumist nimetatakse sageli selle funktsioonideks. Need üksused annavad rakendusele tõhusama ja arusaadavama struktuuri. Auto on eseme näide.
Kui auto oleks ese, hõlmaksid selle atribuudid selliseid asju nagu värv, mudel, hind, kaubamärk jne. Lisaks kiirendaks, aeglustaks ja vahetaks käike.
Veel üks näide: kui mõelda koerale kui esemele, siis mõned tema omadused võivad olla värv, tõug, nimi, kaal jne. Ja ta liiguks, hauguks, mängiks jne.
Kuna see sisaldab programmeerimisse reaalseid mõisteid, nagu objektid, peitmine, pärimine jne, on objektorienteeritud programmeerimine hästi tuntud. Kuna see on nii sarnane tegelike oludega, on visualiseerimine lihtsam.
Objektorienteeritud programmeerimise kontseptsioonid
Klassid ja objektid Pythonis
Nagu kõik teised objektorienteeritud keeled, võimaldab Python teil luua klasse objektide genereerimiseks. Pythoni kõige populaarsemad andmetüübid, sealhulgas stringid, loendid, sõnastikud ja muud objektid, on sisseehitatud klassid.
Klass on lingitud meetodite ja eksemplarimuutujate rühm, mis määratlevad teatud tüüpi objekti. Klassi võib vaadelda kui objekti mudelit või malli. Klassi moodustavad muutujad on tuntud kui atribuudid.
Objekt on klassi liige, millel on määratletud atribuutide komplekt. Seetõttu saab sama klassi abil luua suvalise arvu objekte.
Pythoni klassid defineeritakse sõna klass abil, millele järgneb klassi nimi ja koolon. Papagoiklassi näide võib olla:
Siin deklareerime tühja klassi Parrot, kasutades klassi märksõna. Loome klassidest eksemplare. Eksemplar on konkreetne objekt, mis on valmistatud teatud klassist. 'pass' kasutatakse sageli koodi jaoks, mille rakendamisest me hetkel loobuda võime. Saame Pythoni koodi käivitada ilma viga tekitamata, kasutades märksõna "pass".
Klassi instantseerimise tulemuseks on objekt (eksemplar). Klassi loomisel määratletakse ainult objekti kirjeldus. Selle tulemusena ei eraldata salvestusruumi ega RAM-i.
Papagoiklassi objekti näide on:
Obj on antud juhul Parrot-klassi objekt.
Oletame, et teame papagoide kohta üksikasju. Nüüd näitame, kuidas luua papagoiklassi ja selle objekte.
Erimeetod (__init__)
Meetod nimega init määratleb atribuudid, mis peavad igal Parroti objektil olema (). Kui moodustatakse uus Parrot-objekt, loob funktsioon __init__ objekti algoleku, määrates väärtused, mida me objekti omadustes pakume.
Seega initsialiseeritakse klassi iga uus eksemplar, kasutades __init__(). Kuigi __init__() võib aktsepteerida mis tahes arvu parameetreid, on ise alati esimene parameeter.
Viide aktiivse klassi eksemplarile sisaldub eneseargumendis. Seda tähistab iseparameeter, mis lingib klassi praeguse objekti aadressiga ja annab meile juurdepääsu selle (objekti) muutujate andmetele.
Näiteks 1
Ülaltoodud koodis asutasime klassi nimega Parrot. Järgmisena määratletakse omadused. Asja omadused on selle omadused. Klassi funktsioon __init__ on koht, kus need omadused on täpsustatud.
Kui objekt on moodustatud, kutsutakse algselt välja lähtestamismeetod. Seejärel luuakse klassi Parrot eksemplarid. Blaze ja Wonda on antud juhul viited (väärtused) meie uutele objektidele. __class .species võimaldab juurdepääsu klassi atribuudile.
Igal klassi eksemplaril on samad omadused. Eksemplari omadustele pääseb juurde ka failide blaze.name ja blaze.age abil. Kõigil klassi eksemplaridel on aga ainulaadsed eksemplari atribuudid.
Näiteks 2
Meetodid
Klassi kehas määratletud funktsioone nimetatakse meetoditeks. Neid kasutatakse selleks, et määrata, kuidas üksus käitub.
Eelnimetatud rakenduses () on määratletud kaks meetodit, sing() ja dance. Kuna neid kutsutakse esile eksemplariobjektil, näiteks leegil, nimetatakse neid eksemplari meetoditeks.
OOPS-i kontseptsiooni alused
Objektorienteeritud programmeerimise neli põhiideed on järgmised:
- Pärisosa
- Kapseldamine
- Polümorfism
- Abstraktsioon
Pärisosa
Inimesed ütlevad sageli vastsündinutele, et neil on näoomadused, mis sarnanevad nende vanemate omadega või et nad on pärinud teatud tunnused oma vanematelt.
Võimalik, et olete ka märganud, et teil on oma vanematega mõned omadused. Tegelik olukord on üsna sarnane ka pärimisega.
Kuid sel juhul antakse "vanemaklasside" omadused edasi "lapsklassidele". Neid aspekte nimetatakse selles kontekstis "omadusteks" ja "meetoditeks".
Klass saab tuletada oma meetodid ja atribuudid teisest klassist, kasutades tehnikat, mida nimetatakse pärimiseks. Pärimine on protsess, mille käigus alamklass saab ülemklassi omadused.
Näide:
Vanemklassi Inimene pärib ülaltoodud näites olev alamklass Poiss. Kuna Boy pärib inimeselt, pääseme klassi Boy eksemplari loomisel juurde kõigile selle meetoditele ja atribuutidele.
Poiste klassis on defineeritud ka meetod nimega koolName. Vanemklassi objekt ei pääse juurde meetodile schoolName. Meetodit schoolName saab aga kutsuda, luues lapseklassi objekti (Boy).
Kapseldamine
Programmi igale muutujale globaalse juurdepääsu andmine ei ole klassidega töötamisel ja tundlike andmete käsitlemisel mõistlik samm.
Andmata programmile täielikku juurdepääsu ühelegi neist muutujatest, pakub kapseldamine meile mehhanismi vajalike muutujate hankimiseks.
Sel eesmärgil määratletud meetodeid saab kasutada muutujate andmete värskendamiseks, redigeerimiseks või kustutamiseks. Selle programmeerimismeetodi eelisteks on suurem turvalisus ja kontroll andmete sisestamise üle.
Vaadake allolevast demonstratsioonist, kui kiiresti on muutujatele juurdepääsetav.
Polümorfism
Oletame, et kasutate veebilehe sirvimiseks telefoni Instagrami kanalid. Kui tekkis isu muusikat kuulata, avasite Spotify ja alustasite oma lemmiklaulu esitamist.
Mõne aja pärast saite kõne, nii et peatasite kõik, mida taustal tegite, et sellele vastata. Teie sõber helistas ja palus, et saadaksite talle sõnumi teatud inimese telefoninumbriga.
Nii et saatsite talle SMS-iga telefoninumbri ja jätkasite oma ülesannetega. Kas olete midagi ette võtnud? Vaid ühe seadmega – oma mobiiltelefoniga – saate voogudes surfata, muusikat kuulata, helistada ja helistada ning sõnumeid saata.
Seetõttu on polümorfism sellega võrreldav. Poly tähendab arvukalt ja morf tähistab erinevaid vorme. Seetõttu viitab polümorfism tervikuna millelegi, millel on erinevad vormid.
Või "midagi", mis võib olenevalt olukorrast avaldada erinevat käitumist. OOPS-is kirjeldab polümorfism samade nimedega, kuid erineva käitumisega funktsioone. Alternatiivina on erinev funktsiooni allkiri sama funktsiooni nimega (funktsioonile edastatud parameetrid).
Näide:
Siin saame kasutada muutujat looma, et itereerida sebra ja küüliku objektide vahel, kasutades nende vastavaid eksemplari meetodeid. Selle tulemusena on nii sebra kui ka küüliku käitumine (värv() & sööb()) siin esindatud ühe muutujaga, mida nimetatakse loomaks. Seetõttu järgib see polümorfismi reegleid.
Abstraktsioon
Tõenäoliselt kasutate selle sisu lugemiseks sülearvutit, telefoni või tahvelarvutit. Seda lugedes teete ka oletatavasti märkmeid, joonite alla olulised lõigud ja võib-olla salvestate teavet oma isiklikesse failidesse.
Kõik, mida näete seda lugedes, on "ekraan" teile kuvatavate andmetega. Näete lihtsalt tippimise ajal klaviatuuri klahve, nii et te ei pea muretsema sisemiste nüansside pärast, nagu see, kuidas klahvi vajutamine võib selle sõna ekraanile ilmuda.
Teise võimalusena võib ekraanil oleva nupu vajutamine avada uue vahekaardi.
Seetõttu on kõik, mida me selles olukorras jälgida saame, abstraktne. Me näeme ainult tulemust, mida see loob, mitte aga sisemisi keerukusi (mis on meile tegelikult olulised).
Sarnaselt sellele näitab abstraktsioon ainult funktsioone, mis kõigel on, varjates seejuures teostusi või sisemisi detaile.
Abstraktsiooni peamine eesmärk on varjata taustteavet ja kõrvaliste andmete juurutamist, et inimesed näeksid ainult seda, mida nad peavad nägema. See aitab hallata koodi keerukust.
Näide:
Siin on sõidukiga seotud abstraktne klass. Kuna see pärineb abstraktsest klassist ABC, on see abstraktne. Kuna abstraktseid meetodeid ei määratleta või need jäävad tühjaks, on klassis Sõiduk abstraktne meetod nimega rataste arv ja millel puudub määratlus.
Nad näevad ette klassid, mis pärivad abstraktsed klassid, et anda meetodi rakendamine.
OOPS-i kontseptsioonide eelised
- Kapseldamisega saavutatakse kõrge turvalisus ja andmete privaatsus.
- Paindlikkus paljude sama klassi polümorfsete versioonide omamisel.
- Koodi keerukuse kõrget taset vähendas abstraktsioon.
- Selle asemel, et ühe probleemi leidmiseks läbi sõeluda sadu koodiridu, muudab programmeerimise modulaarsus silumise lihtsaks.
- Koodi taaskasutamise põhjustab alamklassi vanemklassi atribuutide pärimine.
- Tõhus probleemide lahendamine on võimalik, kuna loome klassid, mis teevad iga miniprobleemi jaoks vajalikud toimingud. Järgmise probleemi saab veelgi kiiremini lahendada, kuna saame neid klasse uuesti kasutada.
Järeldus
Kokkuvõtteks saime teada OOPS-i ideedest Pythonis, mis on praegu kuumim programmeerimisparadigma.
Pärast selle lugemist olete kindlasti mõistnud, et OOPS-i paradigma käsitleb täielikult klasside ja objektide ideed. ja OOPS-i mõisted, nagu kapseldamine, polümorfism, pärandumine ja abstraktsioon.
Jäta vastus