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

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. Dědičnost a polymorfismus

Základy objektové orientace I. Únor 2010

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

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

1. Programování proti rozhraní

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

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

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

PB161 Základy OOP. Tomáš Brukner

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

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

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

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

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

Objektové programování

Projekt Obrázek strana 135

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

DUM 06 téma: Tvorba makra pomocí VBA

Úvod do programovacího jazyka Python

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

typová konverze typová inference

7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ

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

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

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

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

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

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

Výčtový typ strana 67

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

Generické programování

9. Polymorfismus a rozhraní

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.

Programování v Pythonu

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

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

Objektově orientovaný přístup

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

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

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

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

Kombinované úlohy - 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.

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

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

Programovací jazyky Přehled a vývoj

Úvod do programovacího jazyka Python

Dědění, polymorfismus

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

6 Příkazy řízení toku

2 Datové typy v jazyce C

Natural Language Toolkit

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

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

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

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

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

CAD_Inventor -cvičení k modelování a tvorbě technické obrazové dokumentace Spirála

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

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

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

Programování II. Polymorfismus

Programování v Pythonu

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

Programování v Pythonu

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

Prioritní fronta, halda

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

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í

6 Objektově-orientovaný vývoj programového vybavení

Matematika v programovacích

Algoritmy a datové struktury

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

Návrhové vzory OMO, LS 2014/2015

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

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

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

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

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)

Pokud neuvedeme override, vznikne v synu nová (nevirtuální) metoda (a pochopitelně se nezavolá, jak bychom

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

3. Třídy. Základní pojmy objektového programování. Třídy

Diagram tříd (class diagram)

JavaScript 101. "Trocha života do statických stránek"

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Transkript:

Objektově orientované programování v jazyce Python Základní pojmy objektově orientovaného programování Objekt vychází z reálného světa. Má dva charakteristické rysy. Všechny objekty mají stav Všechny objekty mají chování Objekt má své vlastnosti a může vykonávat určité činnosti. Každý objekt je instancí třídy objektů. Třída objektu definuje množinu činností, které mají všechny objekty této třídy společné. Jednotlivé objekty stejné třídy se od sebe tedy liší pouze hodnotami vlastností. Třída - Třída je základní konstrukční prvek objektově orientovaného programování. Třída slouží k vytváření objektů. Pomocí třídy definujeme vlastnosti a metody objektu. Atribut určuje vlastnost objektu. Metoda je funkce přidružená k určité třídě. Python je objektově orientovaný jazyk. V této kapitole se budeme zabývat: a) Dědičností b) Vícenásobnou dědičností c) Polymorfismem d) Zapouzdřením Objekty nejsou jenom instance třídy, ale i samotná třída je objekt v Pythonu. Mezi objekty v Pythonu patří moduly, uživatelské funkce. 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. - 1 -

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. 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): auto. init (self, znacka = Fiat ) self.zaber = z def ukaz(self): auto.ukazznacku(self) print Typ auta:, self.zaber autodoterenu = SUV() - 2 -

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 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. - 3 -

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(). 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 -