Teória 1: Úvod a motivácia¶
Vitajte na predmete Objektovo orientované programovanie. Počas roka sa naučíte navrhovať a vytvárať softvér pomocou princípov OOP. Okrem toho sa zlepšíte v programovaní a softvérovom vývoji, naberiete nové vedomosti a praktické skúsenosti. Predmet je delený na 1 hodinu teórie a 2 hodiny cvičení.
Tento predmet na škole vyučujeme už viacero rokov. Oblasť softvérového vývoja sa neustále vyvíja. Preto aj my sa budeme snažiť predstaviť vám prístupy, techniky a nástroje, ktoré sú moderné, sú používané v praxi a majú využitie naprieč celou oblasťou vývoja softvéru.
Nahradia nás AI agenti?¶
S príchodom asistentov a agentov založených na umelej inteligencii sa od základov mení veľa veci, ktoré boli desaťročia zaužívanou praxou. Začíname to vidieť v roku 2025 už aj na Slovensku. Väčšina veľkých IT korporácií prepúšťa a preškoľuje zamestnancov na používanie umelej inteligencie. Niektoré pracovné pozície sa zlučujú, iné zanikajú. Ktorá organizácia sa tomuto trendu neprispôsobí, bude za pár rokov predbehnutá start-upmi, ktoré budú AI naplno využívať vo svojich flexibilných tímoch.
Použitie AI agenta Kilo Code a Grok 3 mini vo Visual Studio Code na vytvorenie JavaFX projektu
Vedieť programovať má teda zmysel aj vo svete umelej inteligencie. Pri bezbrehom používaní digitálnych agentov sa takto generovaný kód rýchlo stane neprehľadným, ťažkopádnym a k riešeniu vášho problému sa nedopracujete.
Čo je objektovo orientované programovanie¶
Programovanie sa vyvíjalo od nízkoúrovňových jazykov k postupne zložitejším paradigmám. Objektovo orientované programovanie predstavuje jednu z nich.
Paradigma určuje spôsoby, akým by sa malo riešenie danej úlohy - implementácia - vyjadriť a zapísať v danom programovacom jazyku. Programovacích paradigiem je veľké množstvo a jeden programovací jazyk ich často podporuje viacero. V jazyku Python a aj v jazyku Java sa stretneme s nasledovnými:
- Štruktúrované programovanie - používanie sekvencie príkazov, podmienok, cyklov, a blokov kódu
- Procedurálne programovanie - rozdelenie kódu na podprogramy či funkcie, ktoré sa vedia navzájom volať
- Objektovo orientované programovanie - používanie objektov, zapuzdrenia a polymorfizmu
- Funkcionálne programovanie - funkcie bez názvu, schopnosť funkciu posielať ako argument, alebo návratovú hodnotu
- Súbežné programovanie - rozdelenie programu do častí, ktoré sú vykonávane súbežne, teda úlohy sú vykonávané súčasne naraz
Programovací jazyk Java¶
Pre ekosystém a platformu Java sú typické nasledovné vlastnosti:
- Platformová nezávislosť - Kód sa prekladá do tzv. bajtkódu (bytecode) a beží na JVM. Mottom Javy je Napíš raz, spusti všade (Write Once, Run Anywhere, WORA).
- Statické typovanie - typy premenných sú známe a kontrolované už pri kompilácii
- Dlhodobá stabilita a kompatibilita, vysoká bezpečnosť - Staré Java programy často bežia aj na nových verziách JVM bez úprav
- Podpora paralelizmu, multithreadingu a distribuovaných systémov - Zabudovaná podpora pre viacvláknové aplikácie a súbežné spracovanie dát.
- Všestrannosť použitia, škálovateľnosť a vysoký výkon - Java je vhodná pre webové, mobilné a aj veľké podnikové aplikácie
Java sa dnes využíva hlavne vo veľkých enterprise systémoch, webových back-endoch, cloudových aplikáciách a finančných systémoch. Je taktiež aj dominantnou platformou na vývoj mobilných Android aplikácií. Tam je populárnym jazyk Kotlin, ktorý beží nad platformou Java a ponúka jednoduchšiu syntax.
Hlavné nevýhody Javy sú nižší výkon v porovnaní s low-level jazykmi a vyššia spotreba pamäte. Ďalej je to "verbózna", teda príliš ukecaná syntax, kedy často aj jednoduchá vec je zapísaná na desiatkách riadkov. Z dôvodu použitia JVM majú programy v Jave pomalší štart aplikácií (to sa však dnes dá riešiť špeciálnym kompilátorom). Statické typovanie a mohutnosť jazyka, knižníc a nástrojov sú často pre začínajúcich programátorov zložité na pochopenie.
Zhrnutie teórie¶
- Asistenti a agenti umelej inteligencie majú v programovaní svoje miesto
- Výsledky, ktoré nám AI dá, je potrebné verifikovať
- Slepá dôvera v AI vedie k produkovaniu AI odpadu
- Objektovo orientované programovanie ako paradigma
- Je spôsob, ako zvládať komplexnosť programov
- Modeluje svet podobne ako ho vnímame my
- Zavádza používanie objektov, zapuzdrenia a polymorfizmu
- Implementácia - praktické uskutočnenie alebo naprogramovanie určitého návrhu alebo algoritmu
- Abstrakcia - proces, pri ktorom sa zameriavaš len na dôležité vlastnosti a skrývaš nepodstatné detaily.
- Programovací jazyk Java
- Možnosť používať objektovo orientované a aj funkcionálne programovanie
- Používa statické typovanie, kde typy premenných sú známe a kontrolované už pri kompilácii
- Dlhodobo stabilný a kompatibilný, s vysokou bezpečnosťou
- Virtuálny stroj Java Virtual Machine (JVM) umožňuje spúšťať programy nezávisle od operačného systému alebo hardvéru
- Ponúka mohutnú sada knižníc, nástrojov a štandardizované Java API
- Dominuje v podnikových aplikáciách a v prostredí Android
Poznámky do zošita
V zošite je potrebné mať napísané aspoň tieto poznámky:
Učebnica na stránke oop.wagjo.com
DIGITÁLNY ASISTENTI
AI Asistent - reaktívny, odpovedá na otázky, jednoduché úlohy
AI Agent - proaktívny, autonómny, zložité viackrokové úlohy
AI Prompting - vytváranie inštrukcií pre AI
AI Verifikácia - kontrola presnosti, spoľahlovosti a kvality výstupu
- vždy riadená človekom
AI Slop - odpad, vznikne ak AI slepo dôverujem
OBJEKTOVO ORIENTOVANÉ PROGRAMOVANIE
Paradigmy v programovaní:
- Štruktúrované: sekvencie príkazov, podmienky, cykly
- Procedurálne: podprogramy, ktoré sa vedia navzájom volať
- Objektovo orientované: objekty, zapuzdrenie, polymorfizmus
- Funkcionálne: anonymné funkcie, high-order funkcie
OOP:
- modeluje podľa nášho vnímania sveta
- zvláda väčšiu komplexnosť
- umožňuje znovupoužitie
- intuitívna organizácia kódu
JAZYK JAVA
Vlastnosti:
- objektovo orientovaný
- univerzálny
- platformovo nezávislý
- staticko typovaný: typy premenných sú kontrolované pri kompilácii
Použitie:
- veľké podnikové systémy
- webový back-end
- Android aplikácie (jazyk Kotlin)
- cloudové a distrubuované systémy
Platformová nezávislosť:
- kód sa kompiluje do bytecode a beží nad JVM
- motto Javy: Write Once, Run Anywhere (WORA)
- virtuálny stroj JVM (Java Virtual Machine)
- Java API: vždy dostupná sada knižníc na bežné použitie
Skúšanie a kontrola vedomostí
Na ďalšej hodine budeme kontrolovať nasledovné veci:
- Zapísané poznámky z hodiny vo vašom zošite
Ústne skúšanie alebo krátka 5-minútovka:
- Aká je úloha programátora vo svete, kde sa používajú AI asistenti a agenti?
- Aké rôzne programovacie paradigmy poznáme?
- Z akej potreby vzniklo objektové programovanie?
- Čo nové nám OOP prináša?
- Čo znamená: Napíš raz, spusti všade (Write Once, Run Anywhere, WORA)?
- Aké sú typické vlastnosti jazyka Java?
- Bonus: Aké sú nevýhody jazyka Java?

