VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu CZ.1.07/1.5.00/34.1076 Název projektu Pro vzdělanější Šluknovsko Číslo a název šablony 32 Inovace a zkvalitnění výuky prostřednictvím ICT Autor 0207 Mgr. Bc. Jan Škoda Tematická oblast Programování Číslo a název materiálu VY_32_INOVACE_0207_0106 Objektově orientované programování Anotace Žák si upevní učivo o objektově orientovaném programování Vytvořeno 14. 7. 2013 Určeno pro 3. ročník oboru Informační technologie Přílohy Bez příloh
Metodický list Učitel: Výklad s projekcí elektronického učebního materiálu. Ukázka obecného postupu činností. Monitorování činnosti žáků. Žák: Sleduje výkladovou projekci a demonstraci učitele.
Objektově orientované programování
Objektově orientované programování Zkratka OOP (Object-oriented programming). Souhrn doporučených praktik a postupů pro tvorbu nebo vývoj softwaru či aplikací. Důvodem vzniku OOP bylo vytvořit nový přístup k programování, který by dovolil psát složitější programy.
Objektově orientované programování Objekt je nějaká skutečnost, o níž uchováváme data a operace pro manipulaci s těmito daty. např. konkrétní člověk, konkrétní firma. Třída je kategorie, do níž daný objekt patří, např. třída všech lidí, třída všech firem.
Objektově orientované programování OOP charakterizují tyto základní vlastnosti: Dědičnost Zapouzdření Polymorfismus Kompozice
Objektově orientované programování Existuje mnoho programovacích jazyků umožňující objektově orientované programování. Příklad: Java, C++, C#, Visual Basic, PHP, a další
Dědičnost inheritance Umožňuje vytvářet nové objekty jako potomky již existujících objektů. Existující objekty dále může modifikovat nebo upřesňovat. K popisu vztahů v hierarchii se používá pojmenování předchůdce-následník nebo rodič-syn. Při programování se nemusí znovu opakovat části, které jsou zděděné; následník automaticky přebírá všechna data i metody svého předchůdce.
Dědičnost inheritance Typy dědičnosti: Jednoduchá inheritance. Vícenásobná inheritance. Opakovaná inheritance.
Jednoduchá inheritance Třída má jen jednoho předka, vytváří se stromová hierarchie tříd, každá odvozená třída má jen jednoho předka.
Jednoduchá inheritance Savci Kočkovité šelmy Tygři Lvi Kočky divoké Zdroj: Autor
Příklad třída: OBDÉLNÍK data: výška šířka metody: zvětšit třída: OBRAZEC data: X,Y souřadnice středu barva metody: vykreslit smazat přesunout přebarvit třída: KRUH data: poloměr metody: zvětšit Zdroj: Autor
Vícenásobná inheritance Třída může mít více předků, odvozená třída může mít více než jednoho předka, realizace této dědičnosti je obtížná a některé programovací jazyky ji neumožňují, ve většině případů lze tuto dědičnost nahradit dědičností jednoduchou.
Vícenásobná inheritance Otec Matka Syn Zdroj: Autor
Opakovaná inheritance Odvozená třída může zdědit vlastnosti potomků různými cestami, mnohé programovací jazyky ji neumožňují z důvodu obtížné realizace. Dědeček Matka Syn Zdroj: Autor
Zapouzdření encapsulation Metoda, která svazuje dohromady kód a data. Zabezpečuje kód a data před vnějšími zásahy či zneužitím. Spojením kódu s daty vzniká objekt.
Polymorfismus Umožňuje celou obecnou třídu procesů určit jedním jménem. Uvnitř obecné třídy procesů je pak volba konkrétního procesu dána typem dat. Umožňuje objektům volání jedné metody se stejným jménem. Typy polymorfismu: univerzální (parametr typu může být jakýkoliv), omezený (typ jen z určitého výčtu).
Kompozice Schopnost vytvářet nové třídy skládáním z již existujících tříd. Kompozice není dědičnost! Pomůcka pro rozlišení kompozice a dědičnosti otázky Je? a Má? Kladná odpověď na otázku Je? = Dědičnost. Kladná odpověď na otázku Má? = Kompozice.
Objektově orientované programování 1. Mějme nalézt vztah mezi třídami Osoba a Zaměstnanec. Je Zaměstnanec Osobou? ANO! Jedná se o dědičnost. 2. Mějme nalézt vztah mezi třídami Osoba a Datum. Je Osoba Datem nebo je Datum Osobou? NE! Nejedná se o dědičnost. Má osoba datum? ANO! Jedná se o kompozici.
Zdroje FOJTÍK, Rostislav. UNIVERSITAS OSTRAVIENCIS. Vývoj objektových aplikací. Ostrava, 2002. Dostupné z: http://www1.osu.cz/~fojtik/doc/voa1.pdf. Kapitola 2. Jazyk C++: 2.1. Objektově orientované programování (OOP). In: JANKŮ, Matouš. Homel.vsb.cz [online]. 2002 [cit. 2013-07-14]. Dostupné z: http://homel.vsb.cz/~s1a10/educ/c_cpp/kurs_cpp/ch02s01.html. Objektově orientované programování. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2001- [cit. 2013-07-14]. Dostupné z: http://cs.wikipedia.org/wiki/objektově_orientované_ programování. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ. In: Isd.cz [online]. 2002 [cit. 2013-07-14]. Dostupné z: http://www.isd.cz/pascal/7oop.html. Polymorfismus (programování). In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2001- [cit. 2013-07-14]. Dostupné z: http://cs.wikipedia.org/wiki/polymorfismus_(programování).