Lekce 2 - První objektová aplikace v Pythonu - Hello object world
Minulá lekce, Úvod do objektově orientovaného programování v Pythonu, nás uvedla do objektově orientovaného programování.
V dnešním tutoriálu se budeme věnovat tomu, jak OOP funguje a vytvoříme si svou první objektovou aplikaci v Pythonu.
Jak OOP funguje
Snažíme se nasimulovat realitu tak, jak ji jsme zvyklí vnímat. Můžeme tedy říci, že se odpoutáváme od toho, jak program vidí počítač (stroj) a píšeme program spíše z pohledu programátora (člověka). Jako jsme tehdy nahradili assembler lidsky čitelnými matematickými zápisy, nyní jdeme ještě dál a nahradíme i ty. Jde tedy o určitou úroveň abstrakce nad programem. To má značné výhody už jen v tom, že je to pro nás přirozenější a přehlednější.
Základní jednotkou je objekt, který odpovídá nějakému objektu z reálného světa (např. objekt člověk nebo databáze).

Objekt má své atributy a metody.
Atributy
Atributy objektu jsou vlastnosti neboli data, která uchovává (např. u člověka jméno a věk, u databáze heslo). Jedná se o prosté proměnné, se kterými jsme již stokrát pracovali. Někdy o nich hovoříme jako o vnitřním stavu objektu.
Metody
Metody jsou schopnostmi, které umí objekt vykonávat. U
člověka by to mohly být metody: jdi_do_prace()
,
pozdrav()
nebo mrkni()
. U databáze
pridej_zaznam()
nebo vyhledej()
. Metody mohou mít
parametry a mohou také vracet nějakou hodnotu. Velmi dobře je známe,
používali jsme např. metodu upper()
na objektu str
.
Řetězec je vlastně objekt, který reprezentuje v realitě nějaký text.
Vidíte, že si můžeme jednoduše představit, že jednáme s řetězcem
textu, něco mu přikazovat nebo na něm něco nastavovat. Obsahuje metody,
které řetězec umí vykonávat (kopírování, mazání, splitování,...).
Seznam má například metodu count()
, která vrací počet prvků
v seznamu.

V této lekci si vysvětlíme jen úplné základy, tedy jak objekty vytvářet. Dalším tématům OOP budou věnovány další lekce, aby toho nebylo najednou moc 🙂
Třída
S pojmem třída jsme se již také setkali, chápali jsme ji jako soubor příkazů. Třída však umožňuje mnohem více. Třída je vzor, podle kterého se objekty vytváří. Definuje jejich vlastnosti a schopnosti.
Objekt, který se vytvoří podle třídy, se nazývá
instance. Instance mají stejné rozhraní
jako třída, podle které se vytváří, ale navzájem se liší svými daty
(atributy). Mějme například třídu Clovek
a od ní si vytvořme
instance karel
a josef
. Obě instance mají jistě ty
samé metody a atributy, jako třída (např. jmeno
a
vek
) a metody (jdi_do_Prace()
a
pozdrav()
). Ale hodnoty v nich se liší (první instance má v
atributu jmeno
hodnotu Karel
a v atributu
vek
hodnotu 22
, druhá Josef
a
45
).
Komunikace mezi objekty probíhá pomocí volání metod, díky čemuž je
syntaxe přehledná. Volání obvykle vypadá takto:
prijemce.nazev_metody(parametry)
. Např.
karel.pozdrav(sousedka)
by mohl způsobit, že instance
karel
pozdraví instanci sousedka
.
První objektová aplikace
Již víme, že objekty mají atributy a metody. Také víme, že k vytvoření objektu vytvoříme nejprve třídu. Ta je vzorem, podle kterého následně tvoříme její instance.
Na začátku kurzu se základními strukturami jazyka Python jsme si vytvořili program Hello world. Udělejme si nyní podobný program jako úvod do objektově orientovaného programování. Naprogramujme si aplikaci Hello object world!
Vytvoření třídy
Založme si nový Python projekt tak, jak jsme to dělali doposud.
Dále vytvoříme soubor zdravic.py
. Třídy se vytvářejí
klíčovým slovem class
. Třídu pojmenujeme Zdravic
.
Ve třídě bude blok kódu, takže za jméno třídy píšeme dvojtečku.
První řádka tedy vypadá takto:
class Zdravic:
Název souboru (modulu) píšeme notací snake_case
a třídy
naopak notací PascalCase
. Na rozdíl od proměnných má tedy
každé slovo v názvu třídy velké první písmeno. Název je samozřejmě
také bez diakritiky, kterou v programu používáme maximálně uvnitř
textových řetězců, nikoli v identifikátorech. Podle této třídy později
vytvoříme objekt zdravic
, který nás bude umět pozdravit.
Vidíme, že se na program již díváme úplně jinak, za každou akci je
zodpovědný nějaký objekt. V našem případě se to může zdát zbytečné,
nicméně u složitějších aplikací si to budete pochvalovat
Metody
Nyní si do třídy Zdravic
přidáme metodu
pozdrav()
a nebude mít žádnou návratovou hodnotu ani
atributy.
Deklarace metody v Pythonu je tedy následující:
def [název_metody]([parametry]) -> [návratový_typ]:
Deklarace metody v Pythonu je podobná deklaraci funkce. Za klíčovým
slovem def
následuje samotný název metody. Metody píšeme
stejně jako proměnné a funkce malými písmeny. V případě víceslovného
názvu použijeme notaci snake_case
. Závorka s parametry
je povinná. První povinný poziční argument je self
.
Do něj se vloží "odkaz" na objekt, do kterého metoda náleží.
Tento argument tam vloží sám objekt. Návratový typ není
povinné uvádět. Do těla metody zapíšeme kód pro výpis na konzoli.
Naše třída bude nyní vypadat takto:
class Zdravic: def pozdrav(self): print("Hello object world!")
Nyní si vytvoříme instanci třídy Zdravic
.
Bude to tedy ten objekt zdravic
, se kterým budeme pracovat.
Objekty se ukládají do proměnných, název třídy slouží jako datový typ.
Instance má zpravidla název třídy, jen má první písmeno malé. Deklarujme
si tedy proměnnou a následně v ní založme novou instanci třídy
Zdravic
:
zdravic = Zdravic()
Při vytvoření nové instance se zavolá tzv. konstruktor. To je speciální metoda na třídě, proto při vytvoření instance píšeme ty prázdné závorky, jelikož voláme tuto "vytvářecí" metodu. Konstruktor zpravidla obsahuje nějakou inicializaci vnitřního stavu instance (např. dosadí výchozí hodnoty do proměnných). My jsme v kódu žádný konstruktor nedeklarovali a Python si proto vytvořil tzv. implicitní prázdný konstruktor. Vytvoření instance objektu je tedy podobné volání metody.
Jelikož v proměnné nyní máme opravdu instanci třídy
Zdravic
, můžeme instanci nechat pozdravit. Zavoláme na ni metodu
pozdrav()
a to jako zdravic.pozdrav()
. Náš kód bude
tedy nyní vypadat následovně:
class Zdravic:
def pozdrav(self):
print("Hello object world!")
zdravic = Zdravic()
zdravic.pozdrav()
Program spustíme a v konzoli se nám zobrazí:
Konzolová aplikace
Hello object world!
Máme tedy svou první objektovou aplikaci!
V příští lekci, Atributy a metody v Pythonu, si vysvětlíme jak přidávat objektům atributy a metodám parametry. Dokončíme svou první objektovou aplikaci.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 1028x (2.78 kB)
Aplikace je včetně zdrojových kódů v jazyce Python