Počet kreditů 6
Vyučováno v Summer
Rozsah výuky 2+2c
Garant předmětu

Object-oriented approach to software development prevails in all of its three phases: analysis, design and implementation. The aim of this course is to give the students a firm understanding of basic concepts and notions of object theory and sketch its formal foundations.

Basic knowledge of programming and mathematics.

After completing this course, students will understand basic concepts and notions of object theory and will be able to apply them correctly in moderately difficult situations.

1. Classes and objecst; runtime representation

2. Type system; implementation hiding

3. Subtype polymorphism, subsumption and Liskov substitution principle

4. Static methods and variables; formal semantics

5. Pointers, linked lists, pointer-based structures

6. Correctness, assertions, class/data structure invariant, encapsulation, representation exposure

7. Inheritance; method dispatch

8. Parametric polymorphism (generic classes)

9. Advanced polymorphism; binary methods; creational design patterns

10. Immutability; advanced collections; higher-order functions

11. Metaprogramming

1. B. Eckel: Thinking in Java

2. Er. Gamma et al.: Design Patterns: Elements of Reusable Object-Oriented Software

3. Course webpage: https://cw.fel.cvut.cz/wiki/courses/a7b36omo/start

Rozvrh předmětu