Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

2. diel - Prvá objektová aplikácia v Pythone - Hello object world

Predchádzajúca lekcia, Úvod do objektovo orientovaného programovania v Pythone, nás uviedla do objektovo orientovaného programovania.

V dnešnej lekcii sa budeme venovať tomu, ako OOP funguje a vytvoríme si svoju prvú objektovú aplikáciu v Pythone.

Ako OOP funguje

Snažíme sa nasimulovať realitu tak, ako sme ju zvyknutí vnímať. Môžeme teda povedať, že sa odpútavame od toho, ako program vidí počítač (stroj) a píšeme program skôr z pohľadu programátora (človeka). Tak ako sme kedysi nahradili assembler človeku čitateľnými matematickými zápismi, teraz ideme ešte ďalej a nahradíme aj tie. Ide teda o určitú úroveň abstrakcie nad programom. To má značné výhody už len v tom, že je to pre nás prirodzenejšie a prehľadnejšie.

Základnou jednotkou je objekt, ktorý zodpovedá nejakému objektu z reálneho sveta (napr. objekt human alebo database).

Objekty v objektovo orientovanom programovaní - Objektovo orientované programovanie v Pythone

Objekt má svoje atribúty a metódy.

Atribúty

Atribúty objektu sú vlastnosti čiže dáta, ktoré uchováva (napr. u človeka meno a vek, u databázy heslo). Ide o prosté premenné, s ktorými sme už stokrát pracovali. Niekedy o nich hovoríme ako o vnútornom stave objektu.

Metódy

Metódy sú schopnosti, ktoré objekt dokáže vykonávať. U človeka by to mohli byť metódy: go_to_work(), greet() alebo blink(). Pri databáze add_entry() alebo search(). Metódy môžu mať parametre a môžu tiež vracať nejakú hodnotu. Veľmi dobre ich poznáme, používali sme napr. metódu upper() na objekte str. Reťazec je vlastne objekt, ktorý reprezentuje v realite nejaký text. Vidíte, že si môžeme jednoducho predstaviť, že jednáme s reťazcom textu, niečo mu prikazujeme alebo na ňom niečo nastavujeme. Obsahuje metódy, ktoré reťazec vie vykonávať (kopírovanie, mazanie, delenie na časti...). Zoznam má napríklad metódu count(), ktorá vracia počet prvkov v zozname.

Objekty v objektovo orientovanom programovaní - Objektovo orientované programovanie v Pythone

V tejto lekcii si vysvetlíme len úplné základy, teda ako objekty vytvárať. Ďalším témam OOP sa budú venovať ďalšie lekcie, aby toho nebolo naraz priveľa 🙂

Trieda

S pojmom trieda sme sa už tiež stretli, chápali sme ju ako súbor príkazov. Trieda však umožňuje oveľa viac. Trieda je vzor, podľa ktorého sa objekty vytvárajú. Definuje ich vlastnosti a schopnosti.

Objekt, ktorý sa vytvorí podľa triedy, sa nazýva inštancia. Inštancie majú rovnaké rozhranie ako trieda, podľa ktorej sa vytvárajú, ale navzájom sa líšia svojimi dátami (atribútmi). Majme napríklad triedu Human a od nej si vytvorme inštancie carl a john. Obe inštancie majú iste tie isté metódy a atribúty ako trieda (napr. name a age) a metódy (go_to_work() a greet()). Hodnoty v nich sa však líšia (prvá inštancia má v atribúte name hodnotu Carl a v atribúte age hodnotu 22, druhá John a 45).

Komunikácia medzi objektmi prebieha pomocou volania metód, vďaka čomu je syntax prehľadná. Volanie zvyčajne vyzerá takto: receiver.method_name(parameters). Napr. carl.greet(neighbor) by mohlo spôsobiť, že inštancia carl pozdraví inštanciu neighbor.

Prvá objektová aplikácia

Už vieme, že objekty majú atribúty a metódy. Tiež vieme, že na vytvorenie objektu najprv vytvoríme triedu. Tá je vzorom, podľa ktorého následne tvoríme jej inštancie.

Na začiatku kurzu so základnými štruktúrami jazyka Python sme si vytvorili program Hello world. Urobme si teraz podobný program ako úvod do objektovo orientovaného programovania. Naprogramujme si aplikáciu Hello object world!

Vytvorenie triedy

Vytvorme si nový Python projekt tak, ako sme to robili doteraz.

Ďalej vytvoríme súbor greeter.py. Triedy sa vytvárajú kľúčovým slovom class. Triedu pomenujeme Greeter. V triede bude blok kódu, takže za meno triedy píšeme dvojbodku. Prvý riadok teda vyzerá takto:

class Greeter:

Názov súboru (modulu) píšeme notáciou snake_case a triedy naopak notáciou PascalCase. Na rozdiel od premenných má teda každé slovo v názve triedy veľké prvé písmeno. Názov je samozrejme tiež bez diakritiky, ktorú v programe používame maximálne vo vnútri textových reťazcov, nie v identifikátoroch. Podľa tejto triedy neskôr vytvoríme objekt greeter, ktorý nás bude vedieť pozdraviť. Vidíme, že sa na program už pozeráme úplne inak, za každú akciu je zodpovedný nejaký objekt. V našom prípade sa to môže zdať zbytočné, avšak pri zložitejších aplikáciách si to budete pochvaľovať :)

Metódy

Teraz si do triedy Greeter pridáme metódu greet(). Nebude mať žiadnu návratovú hodnotu ani atribúty.

Deklarácia metódy v Pythone je teda nasledujúca:

def [method_name]([parameters]) -> [return_type]:

Deklarácia metódy v Pythone je podobná deklarácii funkcie. Za kľúčovým slovom def nasleduje samotný názov metódy. Metódy píšeme rovnako ako premenné a funkcie malými písmenami. V prípade viacslovného názvu použijeme notáciu snake_case. Zátvorka s parametrami je povinná. Prvý povinný pozičný argument je self. Do neho sa vloží "odkaz" na objekt, do ktorého metóda patrí. Tento argument tam vloží sám objekt. Návratový typ nie je povinné uvádzať. Do tela metódy zapíšeme kód pre výpis na konzole.

Naša trieda bude teraz vyzerať takto:

class Greeter:
    def greet(self):
        print("Hello object world!")

Teraz si vytvoríme inštanciu triedy Greeter. Bude to teda ten objekt greeter, s ktorým budeme pracovať. Objekty sa ukladajú do premenných, názov triedy slúži ako dátový typ. Inštancia má spravidla názov triedy, len má prvé písmeno malé. Deklarujme si teda premennú a následne v nej vytvorme novú inštanciu triedy Greeter:

greeter = Greeter()

Pri vytvorení novej inštancie sa zavolá tzv. konštruktor. To je špeciálna metóda na triede, preto pri vytvorení inštancie píšeme tie prázdne zátvorky, pretože voláme túto "vytváraciu" metódu. Konštruktor spravidla obsahuje nejakú inicializáciu vnútorného stavu inštancie (napr. dosadí východiskové hodnoty do premenných). My sme v kóde žiadny konštruktor nedeklarovali a Python si preto vytvoril tzv. implicitný prázdny konštruktor. Vytvorenie inštancie objektu je teda podobné volanie metódy.

Keďže v premennej teraz máme naozaj inštanciu triedy Greeter, môžeme inštanciu nechať pozdraviť. Zavoláme na ňu metódu greet() a to ako greeter.greet(). Náš kód bude teda teraz vyzerať takto:

class Greeter:
    def greet(self):
        print("Hello object world!")

greeter = Greeter()
greeter.greet()

Program spustíme a v konzole sa nám zobrazí:

Konzolová aplikácia
Hello object world!

Máme svoju prvú objektovú aplikáciu!

V nasledujúcej lekcii, Atribúty a metódy v Pythone, si vysvetlíme ako pridávať objektom atribúty a metódam parametre. Dokončíme svoju prvú objektovú aplikáciu.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 63x (1.29 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Python

 

Predchádzajúci článok
Úvod do objektovo orientovaného programovania v Pythone
Všetky články v sekcii
Objektovo orientované programovanie v Pythone
Preskočiť článok
(neodporúčame)
Atribúty a metódy v Pythone
Článok pre vás napísal gcx11
Avatar
Užívateľské hodnotenie:
131 hlasov
(^_^)
Aktivity