Objektově orientované programování

Transkript

Objektově orientované programování
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í).