Među programerima, objektno orijentirano programiranje privuklo je znatan broj sljedbenika. Popularni kompjuterski jezik Python se takođe pridržava objektno orijentisane paradigme.
Bavi se definisanjem objekata i klasa u Pythonu, koji čini osnovu za OOP principe. U ovom vodiču o “programiranju orijentiranom na objekte u Pythonu” naučit ćete kako deklarirati Python klase, kreirati objekte iz njih i koristiti četiri OOP tehnike.
Dakle, prva stvar.
Šta je objektno orijentirano programiranje?
Glavni fokus objektno orijentisanog programiranja (OOP) je stvaranje „objekata“. Zbirka međusobno povezanih varijabli i funkcija čini objekt.
Ove varijable se često nazivaju atributima objekta, a njegovo ponašanje se često naziva njegovim funkcijama. Ove stavke daju aplikaciji efikasniju i razumljiviju strukturu. Automobil je primjer predmeta.
Da je automobil stavka, njegovi atributi bi uključivali stvari kao što su boja, model, cijena, marka, itd. Osim toga, on bi ubrzavao, usporavao i mijenjao brzine.
Još jedna ilustracija: Ako o psu razmišljamo kao o predmetu, onda neke od njegovih karakteristika mogu biti boja, pasmina, ime, težina, itd. I on bi se kretao, lajao, igrao se itd.
Budući da uključuje koncepte iz stvarnog svijeta kao što su objekti, skrivanje, nasljeđivanje, itd. u programiranje, objektno orijentirano programiranje je dobro poznato. Budući da je toliko slična stvarnim okolnostima, vizualizacija je pojednostavljena.
Koncepti objektno orijentiranog programiranja
Klase i objekti u Pythonu
Kao i svi drugi objektno orijentisani jezici, Python vam omogućava da dizajnirate klase za generisanje objekata. Najpopularniji tipovi podataka u Pythonu, uključujući nizove, liste, rječnike i druge objekte, su ugrađene klase.
Klasa je grupa povezanih metoda i varijabli instance koje definiraju određenu vrstu objekta. Klasa se može posmatrati kao model ili šablon za objekat. Varijable koje čine klasu poznate su kao atributi.
Objekt je član klase koja ima definirani skup atributa. Zbog toga se bilo koji broj objekata može kreirati koristeći istu klasu.
Python klase se definiraju korištenjem riječi class, nakon koje slijedi naziv klase i dvotočka. Ilustracija klase papagaja može biti:
Ovdje deklariramo praznu klasu Parrot koristeći ključnu riječ class. Mi kreiramo instance iz klasa. Instanca je određeni objekat koji je napravljen od određene klase. 'pass' se često koristi kao zamjena za kod čije implementacije za sada možemo odustati. Možemo izvršiti Python kod bez pojave greške koristeći ključnu riječ “pass”.
Instancija klase rezultira objektom (instancom). Kada se kreira klasa, definira se samo opis objekta. Kao rezultat toga, nema dodijeljene memorije ili RAM-a.
Primjer objekta klase papagaja je:
Obj je objekat klase Papagaj u ovoj instanci.
Recimo da znamo pojedinosti o papagajima. Sada ćemo pokazati kako kreirati klasu papagaja i njene objekte.
Posebna metoda ( __init__ )
Metoda koja se zove init definira atribute koje svaki Parrot objekt mora imati (). Kada se formira novi objekat Parrot, funkcija __init__ kreira početno stanje objekta dodeljivanjem vrednosti koje dajemo u okviru svojstava objekta.
Dakle, svaka nova instanca klase se inicijalizira korištenjem __init__(). Iako __init__() može prihvatiti bilo koji broj parametara, self je uvijek prvi parametar.
Referenca na aktivnu instancu klase je uključena u self-argument. Parametar self, koji se povezuje sa adresom trenutnog objekta klase i daje nam pristup podacima njegovih (objekta) varijabli, to označava.
primjer 1
Uspostavili smo klasu pod nazivom Papagaj u gornjem kodu. Zatim se definišu svojstva. Karakteristike stvari su njena svojstva. Funkcija __init__ klase je mjesto gdje su navedene karakteristike.
Kada se formira objekat, inicijalno se poziva metoda inicijalizatora. Zatim se kreiraju instance klase Parrot. Blaze i Wonda u ovoj instanci su reference (vrijednosti) na naše nove objekte. __class .species nam omogućava pristup atributu klase.
Svaka instanca klase ima iste karakteristike. Karakteristikama instance se također može pristupiti korištenjem blaze.name i blaze.age. Ipak, sve instance klase imaju jedinstvene atribute instance.
primjer 2
metode
Funkcije definirane unutar tijela klase nazivaju se metode. Oni se koriste da specificiraju kako će se stavka ponašati.
Dvije metode, sing() i dance, definirane su u prethodno spomenutoj aplikaciji (). Budući da se pozivaju na objekt instance, kao što je plamen, oni se nazivaju metodama instance.
Osnove koncepta OOPS
Četiri osnovne ideje objektno orijentisanog programiranja su:
- nasljeđe
- Inkapsulacija
- Polimorfizam
- Apstrakcija
nasljeđe
Ljudi često govore novorođenčadi da imaju karakteristike lica koje podsjećaju na one njihovih roditelja ili da su neke osobine naslijedile od svojih roditelja.
Moguće je da ste također primijetili da dijelite neke karakteristike sa svojim roditeljima. Situacija u stvarnom svijetu također je prilično slična nasljeđivanju.
Međutim, u ovom slučaju, karakteristike "roditeljskih klasa" se prenose na "podređene klase". Ovi aspekti se u ovom kontekstu nazivaju “osobine” i “metode”.
Klasa može izvesti svoje metode i atribute iz druge klase koristeći tehniku poznatu kao nasljeđivanje. Nasljeđivanje je proces kojim podređena klasa prima svojstva roditeljske klase.
primjer:
Roditeljsku klasu Human nasljeđuje podređena klasa Boy u gornjem primjeru. Budući da je Boy naslijedio od Human, možemo pristupiti svim njegovim metodama i atributima kada kreiramo instancu klase Boy.
U klasi Boy je također definirana metoda pod nazivom schoolName. Objekat roditeljske klase ne može pristupiti metodi schoolName. Metoda schoolName se, međutim, može pozvati kreiranjem podređenog objekta klase (Boy).
Inkapsulacija
Davanje globalnog pristupa svakoj varijabli u programu nije mudar potez kada radite sa klasama i rukujete osjetljivim podacima.
Bez davanja programu potpuni pristup bilo kojoj od tih varijabli, enkapsulacija nam pruža mehanizam za dobijanje potrebnih varijabli.
Metode koje su eksplicitno definirane za tu svrhu mogu se koristiti za ažuriranje, uređivanje ili brisanje podataka iz varijabli. Ova metoda programiranja ima prednosti poboljšane sigurnosti i kontrole nad unosom podataka.
Pogledajte koliko brzo varijable mogu biti dostupne u demonstraciji ispod:
Polimorfizam
Recimo da koristite svoj telefon za pretraživanje Instagram feedovi. Kada ste dobili želju da slušate muziku, pristupili ste Spotifyju i počeli da puštate svoju omiljenu pesmu.
Nakon nekog vremena, primili ste poziv, pa ste pauzirali sve što ste radili u pozadini da biste odgovorili. Vaš prijatelj je nazvao i zatražio da mu pošaljete poruku na broj telefona određene osobe.
Dakle, poslali ste mu broj telefona putem SMS-a i nastavili sa svojim zadacima. Jesi li nešto shvatio? Sa samo jednim uređajem – vašim mobilnim telefonom – mogli biste surfovati po feedovima, slušati muziku, primati i upućivati telefonske pozive i slati poruke.
Stoga je polimorfizam uporediv s tim. Poli znači brojne, a morf označava različite oblike. Stoga se polimorfizam u cjelini odnosi na nešto s različitim oblicima.
Ili “nešto” što, ovisno o okolnostima, može pokazati različita ponašanja. U OOPS-u, polimorfizam opisuje funkcije s istim imenima, ali različita ponašanja. Alternativno, drugi potpis funkcije s istim imenom funkcije (parametri proslijeđeni funkciji).
primjer:
Ovdje možemo koristiti promjenjivu životinju za ponavljanje objekata Zebre i Zebra, koristeći njihove odgovarajuće metode instance. Kao rezultat, ponašanje (color() & eats()) i Zebre i Zeca ovdje je predstavljeno jednom varijablom zvanom životinja. Stoga se pridržava pravila polimorfizma.
Apstrakcija
Za čitanje ovog sadržaja najvjerovatnije koristite laptop, telefon ili tablet. Dok ga čitate, vjerovatno pravite bilješke, podvlačite ključne pasuse i možda pohranjujete neke informacije u svoje lične datoteke.
Sve što možete vidjeti kada ovo pročitate je “ekran” sa podacima koji vam se prikazuju. Vi samo vidite tastere na tastaturi dok kucate, tako da ne morate da brinete o unutrašnjim suptilnostima kao što je kako pritiskanje tastera može dovesti do pojave te reči na ekranu.
Alternativno, kako pritiskom na dugme na ekranu možete pokrenuti novu karticu.
Dakle, sve što možemo uočiti u ovoj situaciji je apstraktno. Možemo vidjeti samo rezultat koji stvara, a ne unutrašnje zamršenosti (koje su nam zapravo važne).
Slično ovome, apstrakcija samo otkriva funkcije koje sve posjeduje, dok prikriva bilo kakve implementacije ili unutrašnje detalje.
Glavni cilj apstrakcije je da sakrije pozadinske informacije i implementaciju bilo kakvih stranih podataka tako da ljudi vide samo ono što treba da vide. Pomaže u upravljanju složenošću koda.
primjer:
Ovdje je prisutna apstraktna klasa vezana za vozilo. Budući da nasljeđuje od apstraktne klase ABC, on je apstraktan. Budući da apstraktne metode nisu definirane ili ostaju prazne, klasa Vehicle ima apstraktnu metodu koja se zove no of wheels kojoj nedostaje definicija.
Oni predviđaju klase koje nasljeđuju apstraktne klase da bi dale implementaciju metode.
Prednosti OOPS koncepata
- Enkapsulacijom se postižu visoka sigurnost i privatnost podataka.
- Fleksibilnost u posjedovanju mnogo polimorfnih verzija iste klase.
- Visok nivo složenosti koda smanjen je apstrakcijom.
- Umjesto pregledavanja stotina linija koda kako bi se locirao jedan problem, modularnost programiranja čini otklanjanje grešaka jednostavnim.
- Ponovno korištenje koda je uzrokovano nasljeđivanjem svojstava nadređene klase od strane podređene klase.
- Učinkovito rješavanje problema je moguće jer kreiramo klase koje rade potrebne radnje za svaki mini-problem. Sljedeći problem se može riješiti još brže jer možemo ponovo koristiti te klase.
zaključak
U zaključku, naučili smo o OOPS idejama u Pythonu, trenutno najtoplijoj programskoj paradigmi.
Nakon što ste ovo pročitali, sigurno ste shvatili da se OOPS paradigma u potpunosti bavi idejom klasa i objekata. i OOPS koncepti kao što su enkapsulacija, polimorfizam, nasljeđivanje i apstrakcija.
Ostavite odgovor