Vyučující
|
-
Tříska Jan, Mgr. Ph.D.
-
Krupka Michal, doc. RNDr. Ph.D.
-
Kühr Tomáš, Mgr. Ph.D.
-
Vyjídáček Roman, Mgr.
-
Kočíř David, Mgr.
|
Obsah předmětu
|
Jedná se o třetí část čtyřdílného kurzu věnovaného základním programovacím paradigmatům, stylům a technikám. Obecným cílem kurzu je seznámit studenty s principy programování bez úzké vazby na konkrétní programovací jazyk. Jako modelovací jazyk je většinu kurzu použit jazyk Common Lisp. Náplní třetí části je všeobecný úvod do objektově orientovaného programování. Cílem je poskytnout studentům nadhled nad probíranou problematikou, proto se věnuje i dnes méně rozšířeným oblastem objektového programování. Kurs tak slouží jako protiváha předmětů, v nichž je objektové programování probíráno se zřetelem k přímému uplatnění v praxi. Principy objektově orientovaného programování jsou procvičovány na netriviálních příkladech, student si vyzkouší tři základní role při práci v OOP: roli implementátora objektově orientovaného programovacího jazyka, roli autora objektové knihovny i roli jejího uživatele. 1. Třídy a instance, zprávy a metody. Sloty a jejich inicializace. Jednoduchá objektová grafická knihovna. 2. Zapouzdření. Motivace: tři problémy řešené principem zapouzdření. Formulace principu, vyjímky. Použití v objektové grafické knihovně. 3. Polymorfismus. Princip polymorfismu. Použití v objektové grafické knihovně. 4. Jednoduchá dědičnost. Pojem dědičnosti. Dědičnost jako nástroj redukující opakování v kódu. Hierarchie tříd. Přepisování metod, volání zděděné metody. Zásady používání dědičnosti, princip "is-a". Použití při inicializaci instancí. Použití v objektové grafické knihovně. 5. Události. Programování řízené událostmi. Pojem delegáta. Práce s událostmi v jednoduché grafické knihovně. Zprávy a události jako data a jejich využití. 6. Prototypové jazyky. Dědičnost a zprávy v prototypových jazycích. Srovnání prototypových jazyků a jazyků založených na třídách, implementace jednoduchého prototypového jazyka a práce s ním, implementace a použití prototypové objektové knihovny. Ukázka čistě objektového prototypového jazyka. 7. Vícenásobná dědičnost. Pojem vícenásobné dědičnosti, vícenásobná dědičnost v různých programovacích jazycích. Programování pomocí rozhraní (interface) a mixinů. Výhody a úskalí vícenásobné dědičnosti. 8. Netradiční rysy CLOSu. Generické funkce a multimetody, kombinace metod a jejich využití. Spojení funkcionálního a objektového programování, dynamické objektové programování. Metaobjektové protokoly.
|
Studijní aktivity a metody výuky
|
Přednášení, Demonstrace
|
Výstupy z učení
|
Studenti se seznámí se základními pojmy z objektově orientovaného programování.
1. Znalost Definuj výhody a styly vývoje objektově orientovaných programů.
|
Předpoklady
|
nespecifikováno
|
Hodnoticí metody a kritéria
|
Ústní zkouška, Písemná zkouška
Aktivní účast v hodině. Plnění zadaných úkolů. Složení ústní (příp. písemné) zkoušky.
|
Doporučená literatura
|
-
Fowler, M. (2003). Patterns of enterprise application architecture. Addison-Wesley.
-
GRAHAM P. (1996). ANSI Common Lisp. Prentice Hall.
-
KICZALES GREGOR, DES RIVIERES JIM AND BOBROW DANIEL G. (1991). The Art of the Metaobject Protocol. London.
-
MEYER BERTRAND. (1997). Object-Oriented Software Construction. Prentice Hall.
|