Inter programistoj, objekt-orientita programado altiris konsiderindan sekvantan. Populara komputillingvo Python same aliĝas al la objekt-orientita paradigmo.
Ĝi traktas difinajn objektojn kaj klasojn en Python, kiu formas la bazon por OOPs principoj. En ĉi tiu lernilo pri "objekt-orientita programado en Python", vi lernos kiel deklari Python-klasojn, krei objektojn el ili kaj uzi la kvar OOP-teknikojn.
Do, unue.
Kio Estas Objekt-Orientita Programado?
La ĉefa fokuso de objekt-orientita programado (OOP) estas la kreado de "objektoj". Kolekto de interligitaj variabloj kaj funkcioj konsistigas objekton.
Tiuj variabloj estas ofte referitaj kiel la atributoj de la objekto, kaj ĝiaj kondutoj estas ofte referitaj kiel ĝiaj funkcioj. Ĉi tiuj eroj provizas la aplikaĵon kun pli efika kaj komprenebla strukturo. Aŭto estas ekzemplo de objekto.
Se la aŭtomobilo estus objekto, ĝiaj atributoj inkludus aferojn kiel ĝian koloron, modelon, prezon, markon, ktp. Aldone, ĝi akcelus, malrapidigus kaj ŝanĝus dentaĵojn.
Alia ilustraĵo: Se ni pensas pri hundo kiel objekto, tiam iuj el ĝiaj trajtoj povus esti koloro, raso, nomo, pezo, ktp. Kaj li moviĝus, bojus, ludus ktp.
Ĉar ĝi enkorpigas realmondajn konceptojn kiel objektojn, kaŝejon, heredon ktp. en programadon, objekt-orientita programado estas bone konata. Ĉar ĝi estas tiel simila al realaj cirkonstancoj, bildigo fariĝas pli simpla.
Objekt-Orientitaj Programaj Konceptoj
Klasoj kaj Objektoj en Python
Kiel ĉiuj aliaj objekto-orientitaj lingvoj, Python ebligas vin desegni klasojn por generi objektojn. La plej popularaj datumtipoj en Python, inkluzive de ĉenoj, listoj, vortaroj kaj aliaj objektoj, estas enkonstruitaj klasoj.
Klaso estas grupo de ligitaj metodoj kaj okazaj variabloj, kiuj difinas certan specon de objekto. Klaso povas esti vidita kiel la modelo aŭ ŝablono por objekto. La variabloj kiuj konsistigas klason estas konataj kiel atributoj.
Objekto estas membro de klaso kiu havas difinitan aron de atributoj. Pro tio, ajna nombro da objektoj povas esti kreita uzante la saman klason.
Python-klasoj estas difinitaj per la vorto klaso, kiu estas poste sekvata de la klasnomo kaj dupunkto. Ilustraĵo de papaga klaso povus esti:
Ĉi tie, ni deklaras la malplenan klason Papago uzante la klasŝlosilvorton. Ni kreas ekzemplojn el klasoj. Kazo estas aparta objekto kiu estis farita el certa klaso. 'pasi' estas ofte uzata kiel anstataŭaĵo por kodo, kies efektivigon ni povas rezigni por la momento. Ni povas ekzekuti la Python-kodon sen kaŭzi eraron uzante la ŝlosilvorton "pasi".
Instanciigo de klaso rezultigas objekton (instanco). Nur la priskribo de la objekto estas difinita kiam klaso estas kreita. Kiel rezulto, neniu stokado aŭ RAM estas asignita.
Ekzemplo de papaga klasobjekto estas:
Obj estas Papago-klasa objekto en ĉi tiu kazo.
Ni diru, ke ni scias detalojn pri papagoj. Ni nun montros kiel krei la papagoklason kaj ĝiajn objektojn.
Speciala Metodo ( __init__ )
Metodo nomita init difinas la atributojn kiujn ĉiu Papaga objekto devas havi (). Kiam nova Parrot-objekto estas formita, la funkcio __init__ kreas la komencan staton de la objekto asignante la valorojn kiujn ni provizas ene de la propraĵoj de la objekto.
Do, ĉiu nova okazo de la klaso estas pravigita uzante __init__(). Kvankam __init__() povas akcepti ajnan nombron da parametroj, mem ĉiam estas la unua parametro.
Referenco al la aktiva klasokazaĵo estas inkluzivita en la memargumento. La mem-parametro, kiu ligas al la adreso de la nuna objekto de klaso kaj donas al ni aliron al la datumoj de ĝiaj (la objekto) variabloj, signifas tion.
ekzemple 1
Ni establis klason nomitan Papago en la supra kodo. Poste, propraĵoj estas difinitaj. La trajtoj de aĵo estas ĝiaj propraĵoj. La funkcio __init__ de la klaso estas kie ĉi tiuj karakterizaĵoj estas specifitaj.
Kiam objekto estas formita, la komenca metodo estas tiu, kiu estas nomita komence. Tiam, kazoj de la Parrot-klaso estas kreitaj. Blaze kaj Wonda ĉi-okaze estas referencoj (valoroj) al niaj novaj objektoj. __class .species permesas al ni aliri la klasatributon.
Ĉiu okazo de klaso havas la samajn trajtojn. La instancaj trajtoj ankaŭ povas esti aliritaj uzante blaze.name kaj blaze.age. Ĉiuj okazoj de klaso tamen havas unikajn petskribojn.
ekzemple 2
metodoj
Funkcioj difinitaj ene de la korpo de klaso estas nomitaj metodoj. Ili estas uzataj por specifi kiel ero kondutos.
Du metodoj, kanti () kaj danci, estas difinitaj en la menciita aplikaĵo (). Ĉar ili estas alvokitaj sur ekzempla objekto, kiel flamo, tiuj estas referitaj kiel ekzemplaj metodoj.
Fundamentoj de la OOPS-koncepto
La kvar kernaj ideoj de objekt-orientita programado estas:
- heredaĵo
- Enkapsuligo
- Polimorfismo
- Abstraktado
heredaĵo
Homoj ofte rakontas al novnaskitoj, ke ili havas vizaĝajn trajtojn, kiuj similas tiujn de siaj gepatroj aŭ ke ili heredis apartajn trajtojn de siaj gepatroj.
Eblas, ke vi ankaŭ observis, ke vi kunhavas kelkajn trajtojn kun viaj gepatroj. La reala monda situacio estas sufiĉe simila al heredo ankaŭ.
Tamen, en ĉi tiu kazo, la karakterizaĵoj de la "gepatraj klasoj" estas transdonitaj al la "infanaj klasoj". Ĉi tiuj aspektoj estas referitaj kiel "trajtoj" kaj "metodoj" en ĉi tiu kunteksto.
Klaso povas derivi siajn metodojn kaj atributojn de alia klaso uzante la teknikon konatan kiel heredo. Heredo estas la procezo de infanklaso ricevanta la trajtojn de gepatra klaso.
ekzemple:
La gepatra klaso Homo estas heredita de la infanklaso Boy en la supra ekzemplo. Ĉar Boy heredas de Homo, ni povas aliri ĉiujn ĝiajn metodojn kaj atributojn kiam ni kreas ekzemplon de la Boy-klaso.
En la Knabo-klaso, metodo nomata schoolName ankaŭ estis difinita. La gepatra klasobjekto ne povas aliri la metodon schoolName. La metodo schoolName tamen povas esti vokita per kreado de infanklasa objekto (Knabo).
Enkapsuligo
Doni ĉiun variablon en la programo tutmondan aliron ne estas saĝa movo kiam oni laboras kun klasoj kaj pritraktas sentemajn datumojn.
Sen doni al la programo kompletan aliron al iu ajn el tiuj variabloj, enkapsuligo disponigas mekanismon por ni akiri la necesajn variablojn.
Metodoj kiuj estas difinitaj eksplicite por la celo povas esti uzitaj por ĝisdatigi, redakti aŭ forigi datenojn de variabloj. Ĉi tiu metodo de programado havas la avantaĝojn de plifortigita sekureco kaj kontrolo de la enigo de datumoj.
Vidu kiom rapide variabloj povas esti alireblaj en la pruvo sube:
Polimorfismo
Ni diru, ke vi uzas vian telefonon por foliumi la Instagram-fluoj. Kiam vi ekis aŭskulti muzikon, vi aliris Spotify kaj komencis ludi vian plej ŝatatan kanton.
Post iom da tempo, vi ricevis vokon, do vi paŭzis kion ajn vi faris en la fono por respondi ĝin. Via amiko vokis kaj petis, ke vi tekstu al ili la telefonnumeron de certa persono.
Do vi sendis al li la telefonnumeron per SMS kaj daŭrigis viajn taskojn. Ĉu vi ekprenis ion? Per nur unu aparato—via poŝtelefono—vi povus navigi tra fluoj, aŭskulti muzikon, preni kaj fari telefonvokojn kaj mesaĝi.
Tial, polimorfismo estas komparebla al tio. Poli signifas multnombra, kaj morfo indikas malsamajn formojn. Tial polimorfismo kiel tuto rilatas al io kun diversaj formoj.
Aŭ "io" kiu, depende de la cirkonstanco, povas elmontri diversajn kondutojn. En OOPS, polimorfismo priskribas funkciojn kun la samaj nomoj sed apartaj kondutoj. Alternative, malsama funkciosignaturo kun la sama funkcionomo (parametroj pasitaj al la funkcio).
ekzemple:
Ĉi tie, ni povas uzi la varian beston por ripeti la objektojn de la Zebro kaj la Kuniklo, uzante iliajn respektivajn ekzemplajn metodojn. Kiel rezulto, la konduto (koloro () & manĝas ()) de kaj la Zebro kaj la Kuniklo estas reprezentita ĉi tie per ununura variablo nomita besto. Ĝi do aliĝas al la polimorfismaj reguloj.
Abstraktado
Vi plej verŝajne uzas tekkomputilon, telefonon aŭ tablojdon por legi ĉi tiun enhavon. Legante ĝin, vi ankaŭ supozeble prenas notojn, substrekas ŝlosilajn paŝojn, kaj eble konservas iujn informojn en viaj personaj dosieroj.
Ĉio, kion vi povas vidi, kiam vi legas ĉi tion, estas "ekrano" kun la datumoj, kiuj estas montrataj al vi. Vi nur vidas la klavojn de la klavaro dum vi tajpas, do vi ne devas zorgi pri internaj subtilecoj kiel kiel premado de klavo povas kaŭzi tiun vorton aperi surekrane.
Alternative, kiel premante butonon sur via ekrano povas lanĉi novan langeton.
Tial, ĉio, kion ni povas observi en ĉi tiu situacio, estas abstrakta. Ni povas nur vidi la rezulton, kiun ĝi kreas, kaj ne la internajn komplikaĵojn (kiuj fakte gravas por ni).
Simile al ĉi tio, abstraktado nur rivelas la funkciojn, kiujn ĉio posedas, kaŝante iujn ajn efektivigojn aŭ internajn detalojn.
La plej grava celo de Abstraktado estas kaŝi foninformojn kaj ajnan eksterlandan datuman efektivigon por ke homoj vidu nur tion, kion ili bezonas vidi. Ĝi helpas administri la kompleksecon de la kodo.
ekzemple:
Veturil-rilata abstrakta klaso ĉeestas ĉi tie. Ĉar ĝi heredas de la abstrakta klaso ABC, ĝi estas abstrakta. Ĉar abstraktaj metodoj ne estas difinitaj aŭ restas malplenaj, la klaso Veturilo havas abstraktan metodon nomitan no de radoj al kiu mankas difino.
Ili antaŭvidas la klasojn kiuj heredas la abstraktajn klasojn por doni la efektivigon de la metodo.
Avantaĝoj de OOPS-konceptoj
- Per enkapsulado, alta sekureco kaj datuma privateco estas atingitaj.
- Fleksebleco en havado de multaj polimorfaj versioj de la sama klaso.
- La altnivela de kodkomplekseco estis reduktita per abstraktado.
- Anstataŭ kribri tra centoj da linioj de kodo por lokalizi ununuran problemon, la modulareco de programado simpligas sencimigon.
- Kodreuzo estas kaŭzita de la heredo de infanklaso de gepatraj klasaj trajtoj.
- Efika problemo-solvado estas ebla ĉar ni kreas klasojn kiuj faras la necesajn agojn por ĉiu mini-problemo. La sekva problemo povas esti solvita eĉ pli rapide ĉar ni povas reuzi tiujn klasojn.
konkludo
Konklude, ni lernis pri OOPS-ideoj en Python, la plej varma programa paradigmo nun.
Post legi ĉi tion, vi certe rimarkis, ke la OOPS-paradigmo tute traktas la ideon de klasoj kaj objektoj. kaj OOPS-konceptoj kiel enkapsuligo, polimorfismo, heredo kaj abstraktado.
Lasi Respondon