| 
        Vyučující
     | 
    
        
            
                - 
                    Matušíková Marcela, Ing.
                
 
            
                - 
                    Král Erik, Ing. Ph.D.
                
 
            
         
     | 
    | 
        Obsah předmětu
     | 
    
        - Základní paradigmata programování, deklarativní programování, imperativní programování, objektově orientované programování.  - Základní OOP terminologie. Popis objektu pomocí třídy, atributy, metody, zapouzdření.  - Konstruktory a destruktory. Přetěžování metod (Method Overloading).  - Skládání objektů.  - Dědičnost kódu, výhody a nevýhody ve srovnání se skládáním objektů. - Životní cyklus objektu. Správa paměti automatická (na zásobníku), statický blok, dynamická alokace (na haldě). - Vztahy mezi objekty (asociace, agregace a kompozice). - Kopírování objektů, hluboká a mělká kopie objektu. Kopírovací konstruktor. - Polymorfismus. Virtuální a abstraktní metody, abstraktní třídy. - Dědičnost rozhraní (Interface). - Šablony a generické programování.  - Základní návrhové vzory. Singleton, Factory a další klasické návrhové vzory.  - UML diagramy tříd a sekvenční diagramy.  - Tvorba znovupoužitelných knihoven a použití knihoven třetích stran.
         
         
     | 
    | 
        Studijní aktivity a metody výuky
     | 
    
        
        Přednášení, Cvičení na počítači
        
            
                    
                
                    
                    - Příprava na zápočet
                        - 30 hodin za semestr
                    
 
                
                    
                    - Účast na výuce
                        - 42 hodin za semestr
                    
 
                
                    
                    - Domácí příprava na výuku
                        - 36 hodin za semestr
                    
 
                
             
        
        
     | 
    
        
        | Předpoklady | 
|---|
| Odborné znalosti | 
|---|
| U studenta se předpokládají základní znalosti programování a algoritmizace, obsažené v předmětech zařazených v předcházejících semestrech studia. | 
| U studenta se předpokládají základní znalosti programování a algoritmizace, obsažené v předmětech zařazených v předcházejících semestrech studia. | 
| Výsledky učení | 
|---|
| Definuje co je to třída, objekt a objektově orientované programování. | 
| Definuje co je to třída, objekt a objektově orientované programování. | 
| Vysvětlí použití virtuálních a abstraktních metod. | 
| Vysvětlí použití virtuálních a abstraktních metod. | 
| Popíše důvody použití rozhraní (interface). | 
| Popíše důvody použití rozhraní (interface). | 
| Popíše rozdíl mezi automatickou správnou paměti na zásobníku a dynamickou alokací paměti na haldě. | 
| Popíše rozdíl mezi automatickou správnou paměti na zásobníku a dynamickou alokací paměti na haldě. | 
| Objasní výhody použití generického programování a generických kolekcí. | 
| Objasní výhody použití generického programování a generických kolekcí. | 
| Defines what a class, object and object-oriented programming are. | 
| Defines what a class, object and object-oriented programming are. | 
| Explains the use of virtual and abstract methods. | 
| Explains the use of virtual and abstract methods. | 
| Describes the reasons for using interfaces. | 
| Describes the reasons for using interfaces. | 
| Describes the difference between automatic memory management on the stack and dynamic memory allocation on the heap. | 
| Describes the difference between automatic memory management on the stack and dynamic memory allocation on the heap. | 
| Explains the advantages of using generic programming and generic collections. | 
| Explains the advantages of using generic programming and generic collections. | 
| Odborné dovednosti | 
|---|
| Analyzuje problém a navrhne jeho rešení s pomocí objektově orientovaného programování.  | 
| Analyzuje problém a navrhne jeho rešení s pomocí objektově orientovaného programování.  | 
| Ogranizuje kód vhodně do tříd z hlediska přehlednosti a znovuvyužitelnosti kódu. | 
| Ogranizuje kód vhodně do tříd z hlediska přehlednosti a znovuvyužitelnosti kódu. | 
| Použije překrývání virtuální a abstraktní metod. | 
| Použije překrývání virtuální a abstraktní metod. | 
| Definuje vhodné rozhraní pro snadnou rozšiřitelnost kódu. | 
| Definuje vhodné rozhraní pro snadnou rozšiřitelnost kódu. | 
| Zvolí vhodné generické datové kolekce. | 
| Zvolí vhodné generické datové kolekce. | 
| Analyzes a problem and proposes a solution using object-oriented programming. | 
| Analyzes a problem and proposes a solution using object-oriented programming. | 
| Organizes code appropriately into classes for clarity and code reusability. | 
| Organizes code appropriately into classes for clarity and code reusability. | 
| Applies overlapping virtual and abstract methods. | 
| Applies overlapping virtual and abstract methods. | 
| Defines an appropriate interface for easy extensibility of the code. | 
| Defines an appropriate interface for easy extensibility of the code. | 
| Selects appropriate generic data collections. | 
| Selects appropriate generic data collections. | 
| Vyučovací metody | 
|---|
| Odborné znalosti | 
|---|
| Cvičení na počítači | 
| Cvičení na počítači | 
| Přednášení | 
| Přednášení | 
| Hodnotící metody | 
|---|
| Písemná zkouška | 
| Písemná zkouška | 
    
    
    | 
        Doporučená literatura
     | 
    
        
            
                
                - 
                    Fowler, Martin. Destilované UML. 1. vyd. Praha : Grada, 2009. ISBN 978-80-247-2062-3.
                
 
            
                
                - 
                    GAMMA, E., R. HELM, R. JOHNSON a J. VLISSIDES. Design Patterns. Addison-Wesley, 1994. ISBN 0-201-63361-2.
                
 
            
                
                - 
                    KEOGH, J. DAVIDSON, K. Datové struktury bez předchozích znalostí. Praha : Computer Press, 2006. ISBN 80-251-0689-6.
                
 
            
                
                - 
                    Keogh, James Edward. OOP bez předchozích znalostí : průvodce pro samouky. Vyd. 1. Brno : Computer Press, 2006. ISBN 80-251-0973-9.
                
 
            
                
                - 
                    PECINOVSKÝ, R. OOP - Learn Object Oriented Thinking and Programming. Řepín, 2013. ISBN 978-80-904661-8-0.
                
 
            
         
         
         
     |