Medzi vývojármi prilákalo objektovo orientované programovanie značný počet fanúšikov. Populárny počítačový jazyk Python sa tiež drží objektovo orientovanej paradigmy.
Zaoberá sa definovaním objektov a tried v Pythone, ktorý tvorí základ pre princípy OOPs. V tomto návode na „objektovo orientované programovanie v Pythone“ sa naučíte, ako deklarovať triedy Pythonu, vytvárať z nich objekty a používať štyri techniky OOP.
Takže prvá vec.
Čo je objektovo orientované programovanie?
Hlavným zameraním objektovo orientovaného programovania (OOP) je vytváranie „objektov“. Súbor vzájomne prepojených premenných a funkcií tvorí objekt.
Tieto premenné sa často označujú ako atribúty objektu a jeho správanie sa často označuje ako jeho funkcie. Tieto položky poskytujú aplikácii efektívnejšiu a zrozumiteľnejšiu štruktúru. Automobil je príkladom položky.
Ak by bol automobil predmetom, jeho atribúty by zahŕňali veci ako jeho farba, model, cena, značka atď. Okrem toho by zrýchľoval, spomalil a preraďoval.
Iná ilustrácia: Ak uvažujeme o psovi ako o predmete, potom niektoré z jeho vlastností môžu byť farba, plemeno, meno, váha atď. A on by sa pohyboval, štekal, hral sa atď.
Objektovo orientované programovanie je dobre známe, pretože do programovania zahŕňa koncepty reálneho sveta, ako sú objekty, skrývanie, dedičnosť atď. Pretože je to veľmi podobné okolnostiam v reálnom svete, vizualizácia je jednoduchšia.
Koncepty objektovo orientovaného programovania
Triedy a objekty v Pythone
Rovnako ako všetky ostatné objektovo orientované jazyky, aj Python vám umožňuje navrhovať triedy na generovanie objektov. Najpopulárnejšie dátové typy v Pythone, vrátane reťazcov, zoznamov, slovníkov a iných objektov, sú vstavané triedy.
Trieda je skupina prepojených metód a premenných inštancií, ktoré definujú určitý druh objektu. Triedu možno považovať za model alebo šablónu objektu. Premenné, ktoré tvoria triedu, sú známe ako atribúty.
Objekt je členom triedy, ktorá má definovanú množinu atribútov. Z tohto dôvodu je možné pomocou rovnakej triedy vytvoriť ľubovoľný počet objektov.
Triedy Pythonu sú definované pomocou slova class, za ktorým nasleduje názov triedy a dvojbodka. Ilustráciou triedy papagájov môže byť:
Tu deklarujeme prázdnu triedu Parrot pomocou kľúčového slova class. Vytvárame inštancie z tried. Inštancia je konkrétny objekt, ktorý bol vytvorený z určitej triedy. 'pass' sa často používa ako záskok kódu, ktorého implementáciu môžeme nateraz vynechať. Pomocou kľúčového slova „pass“ môžeme spustiť kód Pythonu bez vyvolania chyby.
Výsledkom inštancie triedy je objekt (inštancia). Pri vytváraní triedy je definovaný iba popis objektu. V dôsledku toho nie je pridelené žiadne úložisko ani RAM.
Príkladom objektu triedy papagáj je:
Obj je v tomto prípade objekt triedy Parrot.
Povedzme, že poznáme špecifiká o papagájoch. Teraz si ukážeme, ako vytvoriť triedu papagája a jej objekty.
Špeciálna metóda ( __init__ )
Metóda nazývaná init definuje atribúty, ktoré musí mať každý objekt Parrot (). Keď sa vytvorí nový objekt Parrot, funkcia __init__ vytvorí počiatočný stav objektu priradením hodnôt, ktoré dodáme v rámci vlastností objektu.
Takže každá nová inštancia triedy je inicializovaná pomocou __init__(). Hoci __init__() môže akceptovať ľubovoľný počet parametrov, self je vždy prvým parametrom.
V samoargumente je zahrnutý odkaz na inštanciu aktívnej triedy. Znamená to parameter self, ktorý sa spája s adresou aktuálneho objektu triedy a poskytuje nám prístup k údajom jeho (objektových) premenných.
Príklad 1
Vo vyššie uvedenom kóde sme založili triedu s názvom Parrot. Ďalej sú definované vlastnosti. Charakteristikou veci sú jej vlastnosti. Funkcia __init__ triedy je miesto, kde sú špecifikované tieto charakteristiky.
Keď sa vytvorí objekt, metóda inicializátora je tá, ktorá sa volá pôvodne. Potom sa vytvoria inštancie triedy Parrot. Blaze a Wonda sú v tomto prípade referencie (hodnoty) na naše nové objekty. __class .species nám umožňuje prístup k atribútu class.
Každá inštancia triedy má rovnaké vlastnosti. K charakteristikám inštancie možno pristupovať aj pomocou blaze.name a blaze.age. Všetky inštancie triedy však majú jedinečné atribúty inštancie.
Príklad 2
Metódy
Funkcie definované v tele triedy sa nazývajú metódy. Používajú sa na určenie toho, ako sa bude položka správať.
Dve metódy, sing() a dance, sú definované vo vyššie uvedenej aplikácii (). Pretože sa vyvolávajú na objekte inštancie, ako je napríklad plameň, označujú sa ako metódy inštancie.
Základy konceptu OOPS
Štyri základné myšlienky objektovo orientovaného programovania sú:
- Dedičnosť
- zapuzdrenie
- polymorfizmus
- abstrakcie
Dedičnosť
Ľudia často hovoria novorodencom, že majú vlastnosti tváre, ktoré sa podobajú na ich rodičov, alebo že po rodičoch zdedili určité črty.
Je možné, že ste si všimli aj to, že s rodičmi zdieľate niekoľko vlastností. Situácia v reálnom svete je tiež dosť podobná dedeniu.
V tomto prípade sa však charakteristiky „rodičovských tried“ prenášajú na „triedy detí“. Tieto aspekty sa v tomto kontexte označujú ako „vlastnosti“ a „metódy“.
Trieda môže odvodiť svoje metódy a atribúty z inej triedy pomocou techniky známej ako dedičnosť. Dedičnosť je proces, keď podradená trieda získa vlastnosti nadradenej triedy.
Príklad:
Rodičovská trieda Človek je zdedená podradenou triedou Chlapec vo vyššie uvedenom príklade. Pretože Boy dedí od človeka, môžeme pristupovať ku všetkým jeho metódam a atribútom, keď vytvoríme inštanciu triedy Boy.
V triede Chlapec bola definovaná aj metóda s názvom schoolName. Nadradený objekt triedy nemá prístup k metóde schoolName. Metódu schoolName však možno volať vytvorením objektu triedy potomka (Chlapec).
zapuzdrenie
Poskytnutie globálneho prístupu každej premennej v programe nie je múdry krok pri práci s triedami a zaobchádzaní s citlivými údajmi.
Bez toho, aby sme programu poskytli úplný prístup k niektorej z týchto premenných, zapuzdrenie nám poskytuje mechanizmus na získanie potrebných premenných.
Metódy, ktoré sú na tento účel výslovne definované, možno použiť na aktualizáciu, úpravu alebo vymazanie údajov z premenných. Tento spôsob programovania má výhody zvýšenej bezpečnosti a kontroly nad zadávaním údajov.
Pozrite sa, ako rýchlo môžu byť premenné dostupné v ukážke nižšie:
polymorfizmus
Povedzme, že používate telefón na prehliadanie Instagramové kanály. Keď ste dostali chuť počúvať nejakú hudbu, spustili ste Spotify a začali prehrávať svoju obľúbenú skladbu.
Po chvíli ste dostali hovor, takže ste prerušili čokoľvek, čo ste robili na pozadí, aby ste naň odpovedali. Váš priateľ zavolal a požiadal, aby ste mu poslali správu s telefónnym číslom určitej osoby.
Takže ste mu poslali telefónne číslo prostredníctvom SMS a pokračovali vo svojich úlohách. Zachytili ste niečo? Len s jedným zariadením – vaším mobilným telefónom – môžete surfovať po kanáloch, počúvať hudbu, prijímať a telefonovať a posielať správy.
Preto je polymorfizmus porovnateľný s tým. Poly znamená početné a morph označuje rôzne formy. Preto polymorfizmus ako celok označuje niečo s rôznymi formami.
Alebo „niečo“, čo v závislosti od okolností môže prejavovať rôzne správanie. V OOPS polymorfizmus opisuje funkcie s rovnakými názvami, ale odlišným správaním. Prípadne iný podpis funkcie s rovnakým názvom funkcie (parametre odovzdané funkcii).
Príklad:
Tu môžeme použiť premenné zviera na iteráciu cez objekty Zebra a Králik pomocou ich príslušných metód inštancie. Výsledkom je, že správanie (color() & eats()) zebry aj králika je tu reprezentované jedinou premennou nazývanou zviera. Preto dodržiava pravidlá polymorfizmu.
abstrakcie
Na čítanie tohto obsahu s najväčšou pravdepodobnosťou používate laptop, telefón alebo tablet. Pri jej čítaní si tiež pravdepodobne robíte poznámky, podčiarkujete kľúčové pasáže a možno si ukladáte nejaké informácie do svojich osobných súborov.
Všetko, čo môžete vidieť, keď toto čítate, je „obrazovka“ s údajmi, ktoré sa vám zobrazujú. Pri písaní vidíte iba klávesy klávesnice, takže sa nemusíte obávať vnútorných jemností, ako napríklad to, že stlačenie klávesu môže spôsobiť, že sa dané slovo objaví na obrazovke.
Prípadne, ako stlačením tlačidla na obrazovke spustíte novú kartu.
Preto všetko, čo môžeme v tejto situácii pozorovať, je abstraktné. Vidíme len výsledok, ktorý vytvára, a nie vnútorné zložitosti (na ktorých nám skutočne záleží).
Podobne ako toto, abstrakcia odhaľuje iba funkcie, ktoré všetko má, pričom zakrýva akékoľvek implementácie alebo vnútorné detaily.
Hlavným cieľom abstrakcie je skryť základné informácie a akúkoľvek implementáciu externých údajov, aby ľudia videli len to, čo vidieť potrebujú. Pomáha pri riadení zložitosti kódu.
Príklad:
Je tu prítomná abstraktná trieda týkajúca sa vozidla. Pretože dedí z abstraktnej triedy ABC, je abstraktný. Pretože abstraktné metódy nie sú definované alebo zostávajú prázdne, trieda Vehicle má abstraktnú metódu s názvom no of wheels, ktorá nemá definíciu.
Predvídajú triedy, ktoré zdedia abstraktné triedy, aby poskytli implementáciu metódy.
Výhody konceptov OOPS
- Zapuzdrením sa dosahuje vysoká bezpečnosť a súkromie údajov.
- Flexibilita v mnohých polymorfných verziách rovnakej triedy.
- Vysoká úroveň zložitosti kódu bola znížená abstrakciou.
- Namiesto preosievania stovkami riadkov kódu na nájdenie jediného problému modularita programovania zjednodušuje ladenie.
- Opätovné použitie kódu je spôsobené dedením vlastností rodičovskej triedy podradenou triedou.
- Efektívne riešenie problémov je možné, pretože vytvárame triedy, ktoré vykonávajú potrebné akcie pre každý mini-problém. Nasledujúci problém sa dá vyriešiť ešte rýchlejšie, pretože tieto triedy môžeme znova použiť.
záver
Na záver sme sa dozvedeli o nápadoch OOPS v Pythone, momentálne najhorúcejšej programovacej paradigme.
Po prečítaní tohto článku ste si museli uvedomiť, že paradigma OOPS sa úplne zaoberá myšlienkou tried a objektov. a koncepty OOPS, ako je zapuzdrenie, polymorfizmus, dedičnosť a abstrakcia.
Nechaj odpoveď