VÝUKOVÝ MATERIÁL Identifikační údaje školy
Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vytvořeno Určeno pro Přílohy
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 CZ.1.07/1.5.00/34.1076 Pro vzdělanější Šluknovsko 32 – Inovace a zkvalitnění výuky prostřednictvím ICT 0207 Mgr. Bc. Jan Škoda Programování VY_32_INOVACE_0207_0106 Objektově orientované programování Žák si upevní učivo o objektově orientovaném programování 14. 7. 2013 3. ročník oboru Informační technologie 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 upřesňovat.
dále
může
modifikovat
nebo
• 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 Zdroj: Autor
Lvi
Kočky divoké
Příklad třída: OBRAZEC data: X,Y souřadnice středu barva
třída: OBDÉLNÍK data: výška šířka
metody: zvětšit Zdroj: Autor
metody: vykreslit smazat přesunout přebarvit
třída: KRUH data: poloměr
metody: zvětšit
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í).