====== Přednášky ====== /* 2020 */ **1. Klíčové koncepty modelování systémů I** [Kadleček] {{:courses:b6b36omo:1_-_klicove_koncepty_modelovani_systemu_i_2018.pdf| }} * Programovací paradigmata * Deklarativní versus imperativní reprezentace * Práce s komplexitou * Dekompozice * Hierarchie * Abstrakce používané v softwarovém vývoji(jmenné, datové, funkcionální, objektové) * SOLID, DRY **2. Objektově orientovaný přístup I** [Kadleček] 2021 NEW {{ :courses:b6b36omo:2_-_objektove_orientovany_pristup_2022.pdf| }} * Objekty, třídy a hierarchie tříd * Zapouzdření * Interface a abstraktní třídy * Dědičnost * Message passing * Class diagramy a příklady systémů modelovaných pomocí OOP * Volba správného přístupu * Rozdíl mezi asociací, agregací a kompozicí * Dědičnost versus kompozice * Polymorfismus * Overloading versus overriding *Příloha k 2 a 3 (jen pro zajímavost)* {{:courses:b6b36omo:2_-_appendix_evoluce_jazyka_java.pdf| }} **3a. Klíčové koncepty modelování systémů II** [Kadleček] {{:courses:b6b36omo:3a_-_klicove_koncepty_modelovani_systemu_ii.pdf| }} * Abstraktní datové typy, mutabilita, imutabilita, idempotentnost * Rekurze, datové typy v rekurzi * Primitiva, vrstvy, principy kombinace * Metalingvistická abstrakce **3b. Funkcionánlní programování v Java ** [Kadleček] {{:courses:b6b36omo:3b_-_funkcionalni_programovani_v_java_-_2020_1_.pdf| }} * Pure funkce * Funkce první třídy a funkce vyššího řádu * Lambda expressions * Closures * Curying * Representation transparency * Lazy evaluation **4. Creational design patterns** [Kadleček] 2021 NEW {{ :courses:b6b36omo:4-creational-design-patterns-omo2021.pdf| }} * Factory a Abstract Factory * Builder * Prototype * Singleton * Dependency injection * Příklady **5. Structural design patterns** [Kadleček] {{ :courses:b6b36omo:5_-_structural_design_patterns_2020.pdf| }} * Adapter * Proxy * Bridge * Composite * Facade * Decorator * Flyweight * Příklady **6. Behavioral design patterns** [Kadleček] {{:courses:a7b36omo:6_-_behavioral_design_patterns_2_.pdf| }} * Iterator * Chain of responsibility * Strategy * Visitor * Observer * Template method * State * Memento * Interpreter * Příklady **7. Datové struktury a patterny** [Kadleček] {{ :courses:b6b36omo:7_-_data_design_patterns_2018.pdf| }} * Plně persistentní, částečně persistentní datové a retroaktivní datové struktury * Retroaktivní datové struktury * Lazy Loading, Object pool, Cache **8. Map, filter, reduce pattern v NoSQL světě** [Kadleček] 2021 NEW {{:courses:b6b36omo:8_-_map_reduce_patterns_2018.pdf| }} * Map reduce framework * Sumarizační patterny * Filtrační patterny * Organizační patterny * Join patterny * Meta patterny **9. Map, filter, reduce pattern v Java ** [Kadleček] {{:courses:a7b36omo:9_-_map_2ffilter_2freduce_v_java_1_.pdf| }} * Abstrakce Control Flow * Map * Filter * Reduce * Collect * Paralelizace map reduce v Java a performance pohled **10. Patterny pro tvorbu Microservices ** [Kadleček] {{ :courses:b6b36omo:10_-_patterny_pro_microservices.pptx_9_.pdf| }} * Materialized view * Event sourcing * CQRS * Eventual consistency * Saga **11. Generické programování** [Šebek] 2021 NEW {{:courses:a7b36omo:generics.pdf| }} * Wildcards * Horni, dolní mez * Generické typy * Parametrizované objekty * Generika a subtypy **12. Specifikace, Návrhy specifikací, Web API, Apiary, Swagger, GraphQL** [Šebek] NEW {{:courses:b6b36omo:12_specifikace_rozhrani_v_2.pdf | }} {{:courses:b6b36omo:12_graphql.pdf | }} * Proč specifikace * Behaviorální ekvivalence * Struktura a modelování specifikace * Testování specifikací * Specifikace pro mutující metody, Null Reference, pre a post conditions * Návrh systému výjimek * Vyjímky pro chyby a speciální výsledky, zneužívání výjimek * Deterministické versus nedeterministické specifikace * Deklarativní versus operativní specifikace * Těsné versus volné specifikace * Návrh dobrých specifikací * Webové API **13. Mikroservisy 2 a úvod do reaktivních architektur** [Kadleček] 2021 NEW {{:courses:b6b36omo:uvod_do_reaktivnich_architektur.pdf| }} * Orchestrace, agregace mikroservis * Servisní gateway * Reactive manifesto * Circuit breaker * Backpressure * Future (promise) a monáda **13. STARÉ - NEUČIT NA ZKOUŠKU. Patterny pro tvorbu UI** [Kadleček] {{:courses:b6b36omo:13_-_patterny_pro_ui.pptx_2_.pdf| }} * Základy UI - HTML, DOM, JavaScript, CSS * Single Page Application * Model View Controller, Model View Presenter, Model View View Model * Patterny Future/Promise a monáda * Moderní webové frameworky, Angular, React/Redux intro