Pregled sadržaja[Sakriti][Pokazati]
Među programerima, objektno orijentirano programiranje privuklo je znatan broj sljedbenika. Popularni računalni jezik Python također se pridržava objektno orijentirane paradigme.
Bavi se definiranjem objekata i klasa u Pythonu, što čini osnovu za OOP principe. U ovom vodiču o “objektno orijentiranom programiranju u Pythonu,” naučit ćete kako deklarirati Python klase, stvoriti objekte iz njih i koristiti četiri OOP tehnike.
Dakle, prva stvar.
Što je objektno orijentirano programiranje?
Glavni fokus objektno orijentiranog programiranja (OOP) je stvaranje "objekata". Zbirka međusobno povezanih varijabli i funkcija čini objekt.
Ove se varijable često nazivaju atributima objekta, a njegova ponašanja često se nazivaju njegovim funkcijama. Ove stavke daju aplikaciji učinkovitiju i razumljiviju strukturu. Automobil je primjer predmeta.
Da je automobil stavka, njegovi bi atributi uključivali stvari poput boje, modela, cijene, marke itd. Dodatno, ubrzavao bi, usporavao i mijenjao brzine.
Druga ilustracija: ako o psu razmišljamo kao o predmetu, onda bi neke od njegovih karakteristika mogle biti boja, pasmina, ime, težina itd. I on bi se kretao, lajao, igrao se itd.
Budući da u programiranje uključuje koncepte stvarnog svijeta poput objekata, skrivanja, nasljeđivanja itd., objektno orijentirano programiranje je dobro poznato. Budući da je toliko sličan stvarnim okolnostima, vizualizacija je jednostavnija.
Koncepti objektno orijentiranog programiranja
Klase i objekti u Pythonu
Kao i svi drugi objektno orijentirani jezici, Python vam omogućuje da dizajnirate klase za generiranje objekata. Najpopularnije vrste podataka u Pythonu, uključujući nizove, popise, rječnike i druge objekte, ugrađene su klase.
Klasa je skupina povezanih metoda i varijabli instance koje definiraju određenu vrstu objekta. Klasa se može promatrati kao model ili predložak za objekt. Varijable koje čine klasu poznate su kao atributi.
Objekt je član klase koji ima definiran skup atributa. Zbog toga se pomoću iste klase može kreirati bilo koji broj objekata.
Klase Pythona definirane su pomoću riječi klasa, nakon koje slijedi naziv klase i dvotočka. Ilustracija klase papiga može biti:
Ovdje deklariramo praznu klasu Parrot koristeći ključnu riječ class. Stvaramo instance iz klasa. Instanca je određeni objekt koji je napravljen iz određene klase. 'pass' se često koristi kao zamjena za kod čije se implementacije trenutno možemo odreći. Možemo izvršiti Python kod bez pokretanja pogreške korištenjem ključne riječi "pass".
Instanciranje klase rezultira objektom (instancom). Prilikom kreiranja klase definira se samo opis objekta. Kao rezultat toga, ne dodjeljuje se pohrana ili RAM.
Primjer objekta klase papiga je:
Obj je u ovom slučaju objekt klase Parrot.
Recimo da znamo pojedinosti o papigama. Sada ćemo pokazati kako kreirati klasu papiga i njene objekte.
Posebna metoda ( __init__ )
Metoda nazvana init definira atribute koje svaki Parrot objekt mora imati (). Kada se formira novi Parrot objekt, funkcija __init__ stvara početno stanje objekta dodjeljivanjem vrijednosti koje unosimo unutar svojstava objekta.
Dakle, svaka nova instanca klase se inicijalizira pomoću __init__(). Iako __init__() može prihvatiti bilo koji broj parametara, self je uvijek prvi parametar.
Referenca na instancu aktivne klase uključena je u samoargument. Parametar self, koji se povezuje s adresom trenutnog objekta klase i daje nam pristup podacima njegovih (objekta) varijabli, to znači.
Primjer 1
Uspostavili smo klasu pod nazivom Parrot u gornjem kodu. Zatim se definiraju svojstva. Karakteristike stvari su njena svojstva. Funkcija __init__ klase mjesto je gdje su navedene karakteristike.
Kada se objekt formira, metoda inicijalizatora je ona koja se inicijalno poziva. Zatim se kreiraju instance klase Parrot. Blaze i Wonda u ovom su slučaju reference (vrijednosti) na naše nove objekte. __class .species nam omogućuje pristup atributu klase.
Svaka instanca klase ima iste karakteristike. Karakteristikama instance također se može pristupiti pomoću 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 kako bi odredili kako će se stavka ponašati.
Dvije metode, sing() i dance, definirane su u gore navedenoj aplikaciji (). Budući da se pozivaju na objekt instance, kao što je flame, nazivaju se metode instance.
Osnove OOPS koncepta
Četiri temeljne ideje objektno orijentiranog programiranja su:
- Nasljeđivanje
- ovijanje
- polimorfizam
- Apstrakcija
Nasljeđivanje
Ljudi često govore novorođenčadi da imaju karakteristike lica koje podsjećaju na roditelje ili da su naslijedili određene osobine od svojih roditelja.
Moguće je da ste također primijetili da dijelite nekoliko karakteristika 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" prenose se na "podređene klase". Ovi se aspekti u ovom kontekstu nazivaju "svojstva" i "metode".
Klasa može izvesti svoje metode i atribute iz druge klase korištenjem tehnike poznate kao nasljeđivanje. Nasljeđivanje je proces u kojem klasa dijete prima svojstva roditeljske klase.
Primjer:
Roditeljsku klasu Human nasljeđuje klasa dijete Boy u gornjem primjeru. Budući da Boy nasljeđuje od Humana, možemo pristupiti svim njegovim metodama i atributima kada stvorimo instancu klase Boy.
U razredu dječaka također je definirana metoda pod nazivom schoolName. Objekt nadređene klase ne može pristupiti metodi schoolName. Metoda schoolName može se, međutim, pozvati stvaranjem objekta klase djeteta (Boy).
ovijanje
Davanje globalnog pristupa svakoj varijabli u programu nije mudar potez kada radite s klasama i rukujete osjetljivim podacima.
Bez davanja potpunog pristupa programu bilo kojoj od tih varijabli, enkapsulacija nam daje mehanizam za dobivanje potrebnih varijabli.
Metode koje su izričito definirane za tu svrhu mogu se koristiti za ažuriranje, uređivanje ili brisanje podataka iz varijabli. Ovaj način programiranja ima prednosti poboljšane sigurnosti i kontrole nad unosom podataka.
Pogledajte koliko brzo varijable mogu biti dostupne u demonstraciji u nastavku:
polimorfizam
Recimo da koristite svoj telefon za pregledavanje Instagram feedovi. Kad ste dobili želju slušati glazbu, pristupili ste Spotifyju i počeli puštati svoju omiljenu pjesmu.
Nakon nekog vremena ste primili poziv, pa ste pauzirali sve što ste radili u pozadini kako biste odgovorili. Vaš prijatelj je nazvao i tražio da mu pošaljete SMS na broj telefona određene osobe.
Dakle, poslali ste mu broj telefona putem SMS-a i nastavili sa svojim zadacima. Jeste li što pokupili? Sa samo jednim uređajem—vašim mobilnim telefonom—mogli biste surfati feedovima, slušati glazbu, primati i upućivati telefonske pozive i slati poruke.
Stoga je polimorfizam usporediv s tim. Poly znači brojne, a morph 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 pokazivati različita ponašanja. U OOPS-u polimorfizam opisuje funkcije s istim imenima, ali različitim ponašanjem. Alternativno, drugačiji potpis funkcije s istim nazivom funkcije (parametri proslijeđeni funkciji).
Primjer:
Ovdje možemo koristiti varijablu životinja za iteraciju kroz objekte Zebre i Zeca, koristeći njihove odgovarajuće metode instance. Kao rezultat toga, ponašanje (color() & eats()) i Zebre i Zeca ovdje je predstavljeno jednom varijablom koja se zove životinja. Stoga se pridržava pravila polimorfizma.
Apstrakcija
Za čitanje ovog sadržaja najvjerojatnije koristite prijenosno računalo, telefon ili tablet. Dok ga čitate, vjerojatno također vodite bilješke, podcrtavate ključne odlomke i možda spremate neke informacije u svoje osobne datoteke.
Sve što možete vidjeti kada ovo čitate je "ekran" s podacima koji vam se prikazuju. Vi samo vidite tipke na tipkovnici dok tipkate, tako da ne morate brinuti o internim suptilnostima poput toga kako pritisak na tipku može uzrokovati pojavu te riječi na zaslonu.
Alternativno, kako pritiskom na gumb na zaslonu možete pokrenuti novu karticu.
Stoga je sve što možemo promatrati u ovoj situaciji apstraktno. Možemo vidjeti samo rezultat koji stvara, a ne unutarnje zamršenosti (koje su nam zapravo važne).
Slično ovome, apstrakcija samo otkriva funkcije koje sve posjeduje dok skriva bilo kakve implementacije ili unutarnje detalje.
Glavni cilj apstrakcije je sakriti pozadinske informacije i implementaciju bilo kakvih vanjskih podataka tako da ljudi vide samo ono što trebaju vidjeti. Pomaže u upravljanju složenošću koda.
Primjer:
Ovdje je prisutna apstraktna klasa povezana s vozilom. Budući da nasljeđuje od apstraktne klase ABC, on je apstraktan. Budući da apstraktne metode nisu definirane ili ostaju prazne, klasa Vozilo ima apstraktnu metodu nazvanu no of wheels kojoj nedostaje definicija.
Oni predviđaju klase koje nasljeđuju apstraktne klase kako bi dale implementaciju metode.
Prednosti OOPS koncepata
- Enkapsulacijom se postiže visoka sigurnost i privatnost podataka.
- Fleksibilnost u postojanju mnogo polimorfnih verzija iste klase.
- Visoka razina složenosti koda smanjena je apstrakcijom.
- Umjesto pretraživanja stotina redaka koda kako bi se locirao jedan problem, modularnost programiranja čini uklanjanje pogrešaka jednostavnim.
- Ponovna upotreba koda uzrokovana je nasljeđivanjem svojstava nadređene klase od strane podređene klase.
- Učinkovito rješavanje problema je moguće jer stvaramo klase koje rade potrebne radnje za svaki mini-problem. Sljedeći problem može se riješiti čak i brže jer možemo ponovno koristiti te klase.
Zaključak
Zaključno, naučili smo o OOPS idejama u Pythonu, trenutno najpopularnijoj programskoj paradigmi.
Nakon što ste ovo pročitali, sigurno ste shvatili da se OOPS paradigma u potpunosti bavi idejom klasa i objekata. i OOPS koncepte kao što su enkapsulacija, polimorfizam, nasljeđivanje i apstrakcija.
Ostavi odgovor