====== Zkouška ====== ===== Formát zkoušky ===== * Zkouška bude programovací. * Před začátkem zkoušky proběhne zahřívací kolo. V něm budou zadány 2 jednoduché příklady typu midterm, kdo projde bude připuštěn k další části zkoušky. * Vaším hlavním a prakticky jediným úkolem bude dopsat a vysvětlit kód specifikovaný v zadání, případně upravit ho podle instrukcí zkoušejících. * Po devadesáti minutách nastane rychlá smrt pro ty, kdo nevyrobí ani v zadání specifikované minimum. * Při zkoušce můžete používat donesené neelektronické materiály (učebnici, zápisky apod.). * Na zkoušku přijďte oblečení tak, aby se vám dobře pracovalo, doneste si dostatek jídla a pití. ===== Klíčová slova ===== **Třídy, rozhraní;** vnitřní třídy, anonymní vnitřní třídy, uzávěry. **Proměnné, statické proměnné, atributy, lokální proměnné, parametry, vázání jmen; halda, zásobník a prostor statických proměnných; primitivní typy a ukazatele, instance,** ''=='' a ''equals''. **Metody, pozdní a brzká vazba metod, dvojité volání; statické metody a konstruktory.** **Inkluzivní polymorfismus (vztah nadtyp/podtyp), subsumpce a substituční princip,** kovariance a kontravariance, operátor ''instanceof'' a přetypování. Parametrický polymorfismus (generické třídy), typové parametry, hranice typových parametrů, instanciace generické třídy, ko- a kontravariance generických tříd. Ad hoc polymorfismus: přetěžování metod a koerce. **Dědičnost, kaskádování konstruktorů, překrývání metod, stínění proměnných, abstraktní třídy a metody, klíčové slovo ''super''.** **Skrývání implementace (zapouzdření), invarianty a aserce,** zpřístupnění vnitřní reprezentace; problém rámce při dokumentování funkce tříd a metod. **Návrhové vzory tovární metoda, továrna, abstraktní továrna, stavitel, adaptér, dekorátor, proxy, stav, strategie, command, strom, interpretr, návštěvník, iterátor, pozorovatel, šablonová metoda, nulový objekt.** **Imutabilita,** funkcionální programování, funkce vyšších řádů (''filter'', ''map''/''transform'' a ''fold''/''reduce''); [[https://code.google.com/p/guava-libraries/|Google Guava]], [[http://functionaljava.org/|Functional Java]]. Metaprogramování. **Použití vzorů v Java** [[http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns|Např. zde]] /* ===== Zadání minulých písemek ===== Zdrojový kód zadání i vzorové řešení jsou v repozitáři. * {{courses:A7B36OMO:assignment20130523.pdf|Zadání z 23. 5.}} * {{courses:A7B36OMO:assignment20130530.pdf|Zadání z 30. 5.}} * {{courses:A7B36OMO:assignment20130613.pdf|Zadání z 13. 6.}} * {{courses:A7B36OMO:assignment20130614.pdf|Zadání z 14. 6.}} * {{courses:A7B36OMO:assignment20130620.pdf|Zadání z 20. 6.}} * {{courses:A7B36OMO:assignment20130627.pdf|Zadání z 27. 6.}} * {{courses:A7B36OMO:assignment20130905.pdf|Zadání z 5. 9.}} {{courses:A7B36OMO:exam20130905.zip|Zdrojové kódy}} */