Objektově orientované programování
| Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
|---|---|---|---|---|
| F7PMIOOP | Z,ZK | 3 | 1P+2C | česky |
- Garant předmětu:
- Radim Krupička
- Přednášející:
- Radim Krupička
- Cvičící:
- Bohuslav Dvorský, Tomáš Krajča, Radim Krupička
- Předmět zajišťuje:
- katedra biomedicínské informatiky
- Anotace:
-
Objektově orientované programování (OOP) je v současné nejpoužívanější programovací paradigma. Cílem předmětu je seznámit studenty s používanými metodami a principy objektového programování. Studenti se seznámí s konkrétními implementacemi OOP v jazycích Python, C#, JAVA, C++, a MATLAB a osvojí si objektové myšlení. Předmět se bude soustředit na implementace a základy jazyka Python.
- Požadavky:
-
Udělení zápočtu je podmíněno splněním dvou částí.
A) Během semestru studenti absolvují 2 zápočtové testy celkem za max. 60 bodů, z kterých bude potřeba získat minimálně v celkovém součtu 31 bodů.
B) Studenti vytvoří vlastní semestrální projekt, který bude zadán 9. týden semestru. Pro splnění semestrální práce je nutné, aby byly implementovány všechny požadavky kladené v zadání.
Studenti musejí splnit oba výše zmíněné požadavky pro získání zápočtu (kompletní semestrální práce + min. 31b ze zápočtových testů). Povoleny jsou maximálně 3 omluvené absence. Zkouška se skládá z praktické a teoretické části a případného ústního dozkoušení.
- Osnova přednášek:
-
1.Úvod do programování, Git a python, seznámení s OOP, základní pojmy, objektové datové typy, přístup k položkám objektů.
2.Objektové modelování, vývoj a kvalita software, OOP v python
3.Dědičnost, hierarchie, vzájemné vztahy objektů, virtuální metody, polymorfismus.
4.Mutabilita, immutabilita, funkcionální abstrakce
5.Konstrukční návrhové vzory (singleton, factory, protoype, builder)
6.Strukturální návrhové vzory (adapter, composite, decorator, facade, flightweight)
7.Vzory chování (iterator, strategy, visitor , observer, state, memento, lazy initialization, object pool)
- Osnova cvičení:
-
1. Příprava prostředí - VScode, Git, Úvod do Pythonu, debug. Proměnné, podmínky, cykly. - Online
2. Balíčky, struktura projektu, příprava virtuálního prostředí, import,__init__, __main__, pip, ruff, řetězce, listy - Online
3. Datové struktury (list, tuple,set, dictionary), wrappery, Práce se soubory - Online
4. Funkce, rozbalování, filtrování, procházení, - Online
5. Funkce (Docstring), variabilní vstupní proměnné (*args, **kwargs) , Lambda funkce, funkce jako parametr
6. Výjimky, pandas, any x all.
7. Test 1
8. Modelování - class diagram, asociace, agregace, kompozice, OOP prakticky - definice třídy, konstruktor, atributy
9. OOP metody, dědičnost, práce na vzorové úloze - Zadání semestrální práce
10. OOP pokračování, Testování
11. Implementace návrhových vzorů - Creational patterns (Singleton, Factory,...)
12. Imlementace návrhových vzorů - Structural patterns (Decorator, Adapter, Proxy,...)
13. Implementace návrhových vzorů - Behavioral patterns (Observer, Command,...)
14. Test 2
- Cíle studia:
-
Cílem předmětu je seznámit studenty s používanými metodami a principy objektového programování. Studenti se seznámí s konkrétními implementacemi OOP v jazycích Python, C#, JAVA, C++ a MATLAB a osvojí si objektové myšlení.
- Studijní materiály:
-
Povinná literatura:
[1] PECINOVSKÝ, Rudolf. OOP: naučte se myslet a programovat objektově. Brno: Computer Press, 2010. ISBN 978-80-251-2126-9.
Doporučená literatura:
[2] BISHOP, J. M. C#: návrhové vzory. Brno: Zoner Press, 2010. Encyklopedie Zoner Press. ISBN 978-80-7413-076-2. [3] NAGEL, Christian. C# 2008: programujeme profesionálně. Brno: Computer Press, 2009. Programujeme profesionálně. ISBN 978-80-251-2401-7.
- Poznámka:
- Rozvrh na zimní semestr 2025/2026:
-
06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Po Út St Čt Pá - Rozvrh na letní semestr 2025/2026:
- Rozvrh není připraven
- Předmět je součástí následujících studijních plánů:
-
- Navazující magisterská studijní specializace Asistivní technologie (povinný předmět)
- Navazující magisterská studijní specializace Softwarové technologie (povinný předmět)
- Navazující magisterská studijní specializace Nanotechnologie (povinný předmět)