V Pythonu je každá hodnota (tj. něco, co můžeme uložit do proměnné, vrátit z funkce nebo třeba seznamu) objekt. Dále jsou programovací jazyky (třeba Java, Javascript nebo C++), které mají i jiné hodnoty než objekty. Také jsou programovací jazyky (např. v C), kde objekty vůbec nejsou. V Pythonu mezi hodnotou a objektem není rozdíl. My to ovšem nepotřebujeme vědět do detailů. To co je nutné vědět je, že základní vlastnost objektů je to, že obsahují jak data (informace), tak chování - instrukce nebo metody, které s těmito daty pracují. Například řetězce v Pythonu obsahují jak informace (nějakou posloupnost znaků), tak užitečné metody jako count nebo upper. Objekty spojují data a funkčnost dohromady. Python není "stoprocentně" objektový jazyk.
Třídu použijeme, když chceme mít ve svém programu více objektů s podobným chováním. Například laboratorní učebna by mohla mít třídu Ucebna, webová aplikace třídu User, tabulkový procesor třídu Bunka.
Můžeme si vytvořit třídu společnou pro všechna za a do ní napsat všechno, co je společné. Ve třídách pro jednotlivé druhy zařízení pak zbude jen to, co se liší.
Dědičnost budeme používat, abychom nepsali stejný kód dvakrát. Nadtřídy mají ještě jednu důležitou vlastnost: když víme, že každá Tiskarna nebo Plotter nebo jakákoli jiná podtřída je Zarizeni, můžeme si udělat seznam zarizeni s tím, že nám pak bude jedno, jaká přesně zarizeni to jsou:
Důležitá vlastnost podtříd: když máš nějakou Tiskárnu, můžeš ji použít kdekoliv kde program očekává Zařízení, protože každá Tiskárna je Zařízení.
U třídy Zarizeni je nutné vhodně pojmenovat metody, aby se daly použít pro všechna zařízení. Definice nadtříd, ze kterých se dobře dědí, není jednoduché. Zvlášť to platí, kdyby se z nich mělo dědit v dalších programech, než kde je nadtřída. I z toho důvodu je dobré dědičnost používat hlavně v rámci svého kódu. Není dobré dědit od tříd, které napsali jiní programátoři, pokud vlastník nadtřídy nezmíní jak se z ní má dědit.
Heineman G., Pollice G., Selkow S., Algorithms in a Nutshell , O'Reilly, USA 2008
Lutz, Mark, Learning Python , Sebastopol : O'Reilly 2009
Pilgrim, Mark, Ponořme se do Python(u) 3 , Edice CZ.NIC 2010
Beazley, David M.; Jones, Brian K., Python cookbook , Sebastopol : O'Reilly 2013
Summerfield, Mark, Python 3 : výukový kurz , Brno : Computer Press 2010
Jsem správcem neuroinformatické laboratoře na Západočeské univerzitě na Katedře informatiky a inženýrství. V rámci ZČU jsem pracoval na několika projektech (sémantický web v EEG / ERP portálu, OEN ontologie, vývojová koordinační porucha u dětí, kontrola pozornosti řidiče, analýza EEG u myší, asistenční systém řízený mozkovými vlnami pro osoby se sníženou pohyblivostí, BodyInNumbers).
St: 13:00-13:55
Pá: 10:00-11:00