Objektově orientované programování v jazyce Python



Podobné dokumenty
Objektově orientované programování v jazyce Python

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Vlákna a internetové protokoly

Základy objektové orientace I. Únor 2010

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

1. Dědičnost a polymorfismus

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

1. Programování proti rozhraní

24. listopadu 2013, Brno Připravil: David Procházka

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v C++ VI

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Projekt Obrázek strana 135

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

Programování v C++ 2, 4. cvičení

DUM 06 téma: Tvorba makra pomocí VBA

Delphi - objektově orientované

20. Projekt Domácí mediotéka

OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH 8 Proudová knihovna 8.1 Hierarchie proudů Standardně zavedené proudy

NMIN201 Objektově orientované programování 1 / :36:09

7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ

typová konverze typová inference

10 Balíčky, grafické znázornění tříd, základy zapozdření

PB161 Základy OOP. Tomáš Brukner

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

PB161 programování v C++ Výjimky Bezpečné programování

Výčtový typ strana 67

Chování konstruktorů a destruktorů při dědění

9. Polymorfismus a rozhraní

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

Objektové programování

Dědičnost. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 23.března

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

NPRG031 Programování II 1 / :25:46

Programování v Pythonu

Úvod do programovacího jazyka Python

Anotace. Objekt self, Zapouzdření, polymorfismus,

10. března 2015, Brno Připravil: David Procházka. Programovací jazyk C++

Programování v C++ 3, 3. cvičení

Dalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.

Kombinované úlohy - cvičení

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Generické programování

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

Prioritní fronta, halda

Objektově orientovaný přístup

Vyřešené teoretické otázky do OOP ( )

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Připravil: David Procházka. Programovací jazyk C++

Z. Kotala, P. Toman: Java ( Obsah )

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Programování v Pythonu

Programování v Pythonu

Dědění, polymorfismus

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Úvod do programovacího jazyka Python

Natural Language Toolkit

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Programování II. Dědičnost změna chování 2018/19

Metatřídy v Pythonu a jejich využití

16. února 2015, Brno Připravil: David Procházka. Konstruktory a destruktory

IRAE 07/08 Přednáška č. 1

Výjimky a ošetřování chyb v PHP. Who is General Failure and why is he reading my disk?!

Programovací jazyky Přehled a vývoj

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Dědičnost (inheritance)

Obrázek. Základní popis, zadání úkolu. Struktura tříd,

Cvičení z programování v C++ ZS 2016/2017 Přemysl Čech

Diagram tříd (class diagram)

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

8 Třídy, objekty, metody, předávání argumentů metod

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Abstraktní třída a rozhraní

Objektově orientované programování

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Programování v C++ 1, 5. cvičení

Softwarové komponenty a Internet

Programování - Karel rekurze (pracovní list)

PB161 Programování v jazyce C++ Přednáška 1

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal

Objekt. základní prvek v OOP. má vlastnosti. má metody. vznikne vytvoření nové instance definován pomocí třídy

Dědičnost. seskupování tříd do hierarchie. potomek získá všechny vlastnosti a metody. provádí se pomocí dvojtečky za názvem třídy.

Matematika v programovacích

Jazyk C++ I. Polymorfismus

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Návrhové vzory OMO, LS 2014/2015

Transkript:

Objektově orientované programování v jazyce Python Co to je objektově orientované programování Python není přímo objektově orientovaný jazyk, ale podporuje nejdůležitější části objektově orientovaného programování. Těmito částmi jsou: a) Dědičnost b) Vícenásobná dědičnost c) Polymorfismus d) Zapouzdření Objekty nejsou jenom instance třídy, ale i samotná třída je objekt v Pythonu. Mezi objekty v Pythonu patří moduly, uživatelské funkce. Stejně i jako v jako jiných jazycích může mít objekt mnoho atributů a metod a k těmto atributům, můžeme přistupovat veřejně (public) a nebo soukromně (private). Přístup veřejný znamená, že má určitý objekt přístup k atributům jiné třídy. Naopak soukromý přístup k atributům pouze v rámci stejného objektu. Definování třídy Třída se v Pythonu definuje pomocí konstrukce class. Popis této konstrukce si lépe představíme na následujícím příkladu. class auto: def init (self, z = Fiat ): self.znacka = z def ukazznacku(self): print Toto je auto:, self print Znacka:, self.barva Po klíčovém slovu class následuje libovolný název třídy. Stejně v jako jiných konstrukcích tak i tady následuje odsazení. Poté co odsadíme, můžeme definovat funkci. - 1 -

Dědičnost Dědičnost je velice využívaná, kvůli zjednodušení a lepší orientaci v kódu a ušetření práce programátorům. Vysvětlil bych to opět na příkladu, kde využijeme předcházející ukázku. class SUV (auto): def init (self, z = 4x4): def ukaz(self): auto. init (self, znacka = Fiat ) self.zaber = z auto.ukazznacku(self) print Typ auta:, self.zaber autodoterenu = SUV() autodoterenu.ukaz() Zavolání a výpis bude vypadat takto: Toto je auto: < main.autodoterenu instance at 0x82a6a8c> znacka: fiat zaber: 4x4 Pokud bychom chtěli použít vícenásobnou dědičnost, pak bychom byli nuceni dopsat do závorek k příkazu class SUV (auto):, jednotlivé rodičovské třídy oddělené čárkami. Postup Pythonu, při hledání atributu - 2 -

Python nejdříve projde třídu objektu. Následně pokračuje prohledáváním první rodičovské třídy stejné třídy. Stejný princip se aplikuje i na předky této třídy. Pokud je však atribut nenalezen, přesune se na další rodičovské třídy. Pokud nastane varianta, že interpret nenajde žádný hledaný atribut, vyvolá se výjimka. Nastane- li situace a bude chtít volat metodu z některých rodičovských tříd, použijeme zápis. Chceme-li volat metodu některé z rodičovských tříd, použijeme zápis podobný tomu, jako je těmto: auto.ukazznacku(self). Zde voláme funkci ukazznacku, která se nachází ve třídě auto a je součástí objektu self. Třídní a statické metody Novinkou, co se týče Pythonu, jsou třídní a statické metody. Třídní metoda je metoda, která dostane místo instance, třídu samotnou. Dostane ovšem první argument. U třídní metody není důležité, jestli je volána jako metoda instance nebo funkce, která je definována ve funkci. Pokud vytvoříme metodu, která bude třídní, vytvoříme vlastně klasickou funkci. Tato funkce bude obsahovat jako první argument, odkaz na třídu a poté se s funkcí classmethod() zkonvertuje. Statické metody jsou takové metody, které nepříbírají žádný argument, v němž je instance nebo třída. Mohli by jsme si to představit jako funkce, které jsou definované ve třídě. Jejich sestrojení je obdobné jako u předchozího typu metod. Místo funkce classmethod() použijeme funkci staticmethod(). - 3 -

Bibliografie ŠVEC, Jan. Učebnice jazyka Python (aneb Létající cirkus) [online]. 16.prosince.2002 [cit. 2009-12-01]. Dostupný z WWW: <http://www.pythondocs.ic.cz/tut/node6.html#section006100000000000000000>. ŠVEC, Jan. Létající cirkus,python tutoriál [online]. 13.února.2003 [cit. 2009-12-15]. Dostupný z WWW: < http://i.iinfo.cz/r/old/data/letajici_cirkus.pdf>. - 4 -

Ověření znalostí z kapitoly 4 - Objektově orientované programování v jazyce Python 1. Patří mezi objekt v Pythonu modul? a) Ano b) Ne c) Nevím 2. Jak může přistupovat k atributům? a) public b) private c) public i private 3. Je součástí objektově orientovaného programování v Pythonu dědičnost? a) Ano b) Ne c) Ano, ale ne v Pythonu - 5 -