Obsah[Skrýt][Ukázat]
Mezi vývojáři přilákalo objektově orientované programování značné množství fanoušků. Populární počítačový jazyk Python se rovněž drží objektově orientovaného paradigmatu.
Zabývá se definováním objektů a tříd v Pythonu, který tvoří základ pro principy OOPs. V tomto tutoriálu o „objektově orientovaném programování v Pythonu“ se naučíte, jak deklarovat třídy Pythonu, vytvářet z nich objekty a používat čtyři techniky OOP.
Takže první věc.
Co je objektově orientované programování?
Hlavním zaměřením objektově orientovaného programování (OOP) je vytváření „objektů“. Kolekce vzájemně propojených proměnných a funkcí tvoří objekt.
Tyto proměnné jsou často označovány jako atributy objektu a jeho chování se často označuje jako jeho funkce. Tyto položky poskytují aplikaci efektivnější a srozumitelnější strukturu. Automobil je příkladem položky.
Pokud by byl automobil předmětem, jeho atributy by zahrnovaly věci jako jeho barva, model, cena, značka atd. Navíc by zrychloval, zpomaloval a měnil rychlostní stupně.
Další ilustrace: Pokud uvažujeme o psu jako o předmětu, pak některé z jeho vlastností mohou být barva, plemeno, jméno, váha atd. A on by se pohyboval, štěkal, hrál si atd.
Objektově orientované programování je dobře známé, protože do programování zahrnuje koncepty reálného světa, jako jsou objekty, skrývání, dědičnost atd. Vzhledem k tomu, že je to tak podobné okolnostem v reálném světě, je vizualizace jednodušší.
Koncepty objektově orientovaného programování
Třídy a objekty v Pythonu
Stejně jako všechny ostatní objektově orientované jazyky vám Python umožňuje navrhovat třídy pro generování objektů. Nejoblíbenější datové typy v Pythonu, včetně řetězců, seznamů, slovníků a dalších objektů, jsou vestavěné třídy.
Třída je skupina propojených metod a proměnných instance, které definují určitý druh objektu. Třída může být chápána jako model nebo šablona pro objekt. Proměnné, které tvoří třídu, jsou známé jako atributy.
Objekt je členem třídy, která má definovanou sadu atributů. Z tohoto důvodu lze pomocí stejné třídy vytvořit libovolný počet objektů.
Třídy Pythonu jsou definovány pomocí slova class, za kterým následuje název třídy a dvojtečka. Příkladem třídy papoušků může být:
Zde deklarujeme prázdnou třídu Parrot pomocí klíčového slova class. Vytváříme instance z tříd. Instance je konkrétní objekt, který byl vytvořen z určité třídy. 'pass' se často používá jako záskok pro kód, jehož implementaci můžeme v tuto chvíli opustit. Pomocí klíčového slova „pass“ můžeme spustit kód Pythonu bez vyvolání chyby.
Výsledkem konkretizace třídy je objekt (instance). Při vytváření třídy je definován pouze popis objektu. V důsledku toho není přiděleno žádné úložiště ani RAM.
Příkladem objektu třídy papoušek je:
Obj je v tomto případě objekt třídy Parrot.
Řekněme, že víme specifika o papoušcích. Nyní si ukážeme, jak vytvořit třídu papoušek a její objekty.
Speciální metoda ( __init__ )
Metoda zvaná init definuje atributy, které musí mít každý objekt Parrot (). Když se vytvoří nový objekt Parrot, funkce __init__ vytvoří počáteční stav objektu přiřazením hodnot, které dodáme v rámci vlastností objektu.
Každá nová instance třídy je tedy inicializována pomocí __init__(). Ačkoli __init__() může přijmout libovolný počet parametrů, self je vždy prvním parametrem.
Odkaz na instanci aktivní třídy je součástí vlastního argumentu. Svědčí o tom parametr self, který odkazuje na adresu aktuálního objektu třídy a umožňuje nám přístup k datům jeho (objektových) proměnných.
Příklad 1
Ve výše uvedeném kódu jsme založili třídu s názvem Parrot. Dále jsou definovány vlastnosti. Charakteristikou věci jsou její vlastnosti. Funkce __init__ třídy je místo, kde jsou tyto vlastnosti specifikovány.
Když je objekt vytvořen, metoda inicializátoru je ta, která je volána zpočátku. Poté se vytvoří instance třídy Parrot. Blaze a Wonda jsou v tomto případě odkazy (hodnoty) na naše nové objekty. __class .species nám umožňuje přístup k atributu class.
Každá instance třídy má stejné vlastnosti. K charakteristikám instance lze také přistupovat pomocí blaze.name a blaze.age. Všechny instance třídy však mají jedinečné atributy instance.
Příklad 2
Metody
Funkce definované uvnitř těla třídy se nazývají metody. Používají se k určení toho, jak se bude předmět chovat.
Dvě metody, sing() a dance, jsou definovány ve výše uvedené aplikaci (). Protože jsou vyvolány na objektu instance, jako je například flame, označují se jako metody instance.
Základy konceptu OOPS
Čtyři základní myšlenky objektově orientovaného programování jsou:
- Dědictví
- Zapouzdření
- Polymorfismus
- Abstrakce
Dědictví
Lidé často novorozencům říkají, že mají vlastnosti obličeje, které se podobají vlastnostem jejich rodičů, nebo že zdědili určité rysy od svých rodičů.
Je možné, že jste si také všimli, že s rodiči sdílíte několik vlastností. Situace v reálném světě je také dost podobná dědičnosti.
V tomto případě se však charakteristiky „rodičovských tříd“ předávají na „třídy dětí“. Tyto aspekty jsou v tomto kontextu označovány jako „vlastnosti“ a „metody“.
Třída může odvodit své metody a atributy z jiné třídy pomocí techniky známé jako dědičnost. Dědičnost je proces, kdy podřízená třída získává vlastnosti nadřazené třídy.
Příklad:
Nadřazená třída Člověk je ve výše uvedeném příkladu zděděna podřízenou třídou Boy. Protože Boy dědí od člověka, můžeme při vytváření instance třídy Boy přistupovat ke všem jeho metodám a atributům.
Ve třídě Boy byla také definována metoda zvaná schoolName. Nadřazený objekt třídy nemá přístup k metodě schoolName. Metoda schoolName však může být volána vytvořením podřízeného objektu třídy (Chlapec).
Zapouzdření
Poskytnutí globálního přístupu každé proměnné v programu není moudrý krok při práci s třídami a manipulaci s citlivými daty.
Aniž bychom dali programu úplný přístup k jakékoli z těchto proměnných, zapouzdření nám poskytuje mechanismus, jak získat potřebné proměnné.
Metody, které jsou pro tento účel výslovně definovány, lze použít k aktualizaci, úpravě nebo odstranění dat z proměnných. Tento způsob programování má výhody zvýšeného zabezpečení a kontroly nad vkládáním dat.
Podívejte se, jak rychle mohou být proměnné dostupné v ukázce níže:
Polymorfismus
Řekněme, že používáte telefon k procházení Instagramové kanály. Když jste dostali chuť si poslechnout nějakou hudbu, spustili jste Spotify a začali hrát svou oblíbenou skladbu.
Po chvíli jste přijali hovor, takže jste pozastavili, co jste dělali na pozadí, abyste na něj odpověděli. Váš přítel vám zavolal a požádal, abyste mu poslali SMS na telefonní číslo určité osoby.
Takže jste mu poslali telefonní číslo prostřednictvím SMS a pokračovali ve svých úkolech. Zjistil jsi něco? S jediným zařízením – vaším mobilním telefonem – můžete procházet kanály, poslouchat hudbu, přijímat a telefonovat a posílat zprávy.
Polymorfismus je tedy srovnatelný s tím. Poly znamená mnoho a morph označuje různé formy. Proto polymorfismus jako celek označuje něco s různými formami.
Nebo „něco“, co v závislosti na okolnostech může vykazovat různé chování. V OOPS polymorfismus popisuje funkce se stejnými názvy, ale odlišným chováním. Případně jiný podpis funkce se stejným názvem funkce (parametry předané funkci).
Příklad:
Zde můžeme použít proměnnou zvíře k iteraci přes objekty zebry a králíka pomocí jejich příslušných instančních metod. Výsledkem je, že chování (color() & eats()) zebry i králíka je zde reprezentováno jedinou proměnnou zvanou zvíře. Dodržuje tedy pravidla polymorfismu.
Abstrakce
Ke čtení tohoto obsahu s největší pravděpodobností používáte notebook, telefon nebo tablet. Při čtení si také pravděpodobně děláte poznámky, podtrháváte klíčové pasáže a možná ukládáte nějaké informace do svých osobních souborů.
Vše, co můžete vidět, když toto čtete, je „obrazovka“ s údaji, která se vám zobrazují. Při psaní vidíte pouze klávesy klávesnice, takže se nemusíte obávat vnitřních jemností, jako je to, jak může stisknutí klávesy způsobit zobrazení daného slova na obrazovce.
Případně, jak lze stisknutím tlačítka na obrazovce spustit novou kartu.
Proto vše, co můžeme v této situaci pozorovat, je abstraktní. Můžeme vidět pouze výsledek, který vytváří, a ne vnitřní složitosti (na kterých nám skutečně záleží).
Podobně jako v tomto, abstrakce pouze odhaluje funkce, které všechno má, zatímco skrývá jakékoli implementace nebo vnitřní detaily.
Hlavním cílem abstrakce je skrýt základní informace a jakoukoli implementaci cizích dat, aby lidé viděli jen to, co vidět potřebují. Pomáhá při řízení složitosti kódu.
Příklad:
Je zde přítomna abstraktní třída týkající se vozidla. Protože dědí z abstraktní třídy ABC, je abstraktní. Protože abstraktní metody nejsou definovány nebo zůstávají prázdné, má třída Vehicle abstraktní metodu nazvanou no of wheels, která postrádá definici.
Předpokládají třídy, které zdědí abstraktní třídy, aby poskytly implementaci metody.
Výhody konceptů OOPS
- Zapouzdřením je dosaženo vysoké bezpečnosti a soukromí dat.
- Flexibilita díky mnoha polymorfním verzím stejné třídy.
- Vysoká úroveň složitosti kódu byla snížena abstrakcí.
- Namísto prosévání stovek řádků kódu k nalezení jediného problému modularita programování usnadňuje ladění.
- Opětovné použití kódu je způsobeno dědičností vlastností nadřazené třídy podřízené třídy.
- Efektivní řešení problémů je možné, protože vytváříme třídy, které provádějí potřebné akce pro každý miniproblém. Následující problém lze vyřešit ještě rychleji, protože můžeme tyto třídy znovu použít.
Proč investovat do čističky vzduchu?
Na závěr jsme se dozvěděli o nápadech OOPS v Pythonu, aktuálně nejžhavějším programovacím paradigmatu.
Po přečtení tohoto článku jste si museli uvědomit, že paradigma OOPS se výhradně zabývá myšlenkou tříd a objektů. a koncepty OOPS, jako je zapouzdření, polymorfismus, dědičnost a abstrakce.
Napsat komentář