Class
Magické slovo třída (class) v objektovém programování (OOP)
Letmý úvod do objektového programování si naznačíme na tradičním hello world projektu: blikání ledky. Svítivá dioda (LED) je malá součástka, kterou snad nemusíme představovat. Takže jak je to s těmi "objekty"?
Všechno v Pythonu je objekt. Základní vlastnost objektů (v programu) je to, že obsahují jak data (informace), tak předpis chování – instrukce nebo metody, které s těmito daty pracují. U svítivé diody budou data (vlastnosti / property) 1 nebo 0 - podle toho, jestli svítí nebo nesvítí. A metoda bude třeba blikni
nebo v případě sviť
je to přesněji: změň hodnotu (value) na 1 value(1)
nebo pro zhasni
je to: změň hodnotu na 0 value(0)
.
Předpis objektu je ve třídě class()
. Podle tohoto předpisu vytváříme takzvanou instanci, do závorek se dávají případné vstupní parametry. Na PINU 2 máme připojenu LED a chceme s ní pracovat pomocí dostupných metod pro třídu Led? Mikrokontroléru to řekneme takto:
led = Led(2)
Což znamená: vytvoř novou instanci led
podle vzoru Led
s parametrem 2
(což je číslo PINu, na kterém tuto ledku chceme mít). Je vhodné dodržet nepsané pravilo, že třída začíná vždy velkým písmenem. Abychom odlišili led
od Led
led.value(1)
Syntaxe je pak: instance objektu led
"tečka" metoda value
"( parametry )" (1)
, ze pouze 1, možno i True
Chceme jinou Led? Na jiném pinu? Třeba druhou na PINu 33? Vytvoříme instanci stejného objektu:
led2 = Led(33)
> a pak jí používáme "stejně": led2.value(1)
Na rozdíl od proměnné: a = 123
Metoda nebo funkce data získá nebo na základě parametrů zpracuje, proměnná je obsahuje.
Třída je jako formička na vánoční cukroví. Kolečko, Hvězdička, Prasátko
- to je určení tvaru. A instance jsou jednotlivé kousky cukroví touto formičkou vyrobené. Můžeme si vytvořit tucet hvězdiček, podobným způsobem si můžeme připojit více LEDek (každou na jiném PINu)
led1 = Led(20)
led2 = Led(2)
led3 = Led(33)
rozsvícení druhé ledky je: led2.value(1)
no a zhasnutí třetí je led3.value(0)
Shrnutí:
Téměř vše v Pythonu je objekt. Objekt je kolekce dat (proměnných) a metod (funkcí), které s danými daty pracují. Prototypem objektů jsou třídy, z nichž jsou všechny objekty (čísla, řetězce, funkce, moduly, metody, atp) odvozeny coby instance.