Topic outline

  • Objektové programování

    Posláním předmětu Objektové programování je rozvinutí praktických dovedností v programování s důrazem na základy programování objektového a poskytnutí odpovídajících teoretických poznatků.

    Cílem předmětu je seznámení studentů s objektovým přístupem k algoritmizaci a programování prostřednictvím jazyka Java a specifiky objektového přístupu v kontrastu k procedurálnímu, resp. funkcionálnímu přístupu. Cílem předmětu v oblasti teoretické je vybavit studentu poznatky z teorie OOP a její reflexí v algoritmizaci. V oblasti praktické je cílem předmětu zvládnutí vlastního programování a realizace projektů v objektových vývojových nástrojích.

    Obsah předmětu sleduje linii cílových oblastí a věnuje se vstupně výstupním operacím, třídám, objektům, metodám, datovým složkám, problematice konstruktorů, základům dědičnosti, rozhraním, výjimkám, práci se soubory a základům práce s datovými kontejnery, a to v rozsahu nutném pro implementaci jednodušších projektů.

    Základní literatura
    • HEROUT, P. Učebnice jazyka Java. České Budějovice : Kopp, 2010. (stará učebnice, ale didakticky velmi zdařilá)

    • MURACH, J. Murach's Java Programming (6th Edition). 2022.

    • PECINOVSKÝ, R. Začínáme programovat v jazyku Java. Praha : Grada 2022.

    • SCHILDT, H., Java: The Complete Reference, Twelfth Edition, 2021.

    • SCHILDT, H., Java: A Beginner's Guide, Ninth Edition. McGraw-Hill 2022.


    Podmínky ukončení předmětu:

    První podmínkou pro úspěšné zakončení předmětu je odevzdání výstupů k distančním částem, které budou zadávány a odevzdávány průběžně prostřednictvím VLE Moodle, přičemž je nutné dosáhnout celkového průměrného hodnocení úkolů alespoň 80 %. Neodevzdané výstupy se započítávají do průměru s hodnocením 0 %. Všechny výstupy bude možné na základě hodnocení přepracovat a odevzdat znovu (termín pro přepracovanou verzi bude adekvátně posunut).

    Druhou podmínkou je úspěšné složení zkoušky. Zkouška má praktickou a ústní část. Ústní část je podmíněna úspěšným složením praktické části (tj. hodnocení praktické části nejméně 50 %).

    • praktická část zkoušky: vypracování úloh dle zadání, které bude realizováno prezenční formou v předem vypsaných termínech ve zkouškovém období. Zadání, které studující obdrží bude obsahovat 4 - 6 jednodušších úloh a jeho úkolem bude naprogramovat funkční řešení ve stanoveném časovém limitu. 
    • ústní část zkoušky: V ústní části zkoušky se požadují znalosti programovacího jazyka v rozsahu dle sylabu předmětu a algoritmů, které byly probírány v hodinách. Součástí zkoušky může být i rozprava nad řešením úloh z praktické části.


    Pokyny pro distanční část:

    Po každé prezenční části následuje distanční část v rozsahu 3 hodiny. Distanční část bude mít charakter cvičení, v jehož rámci budete řešit úlohy (napsat program dle zadání). Zadání úloh naleznete u příslušných tematických bloků (dokumenty s názvem Distanční část ...) a navíc na ně budete vždy upozorněni v příslušných prezenčních částech. Odevzávání výstupů bude realizováno opět v Moodle (položky s názvy Odevzdání výstupů - Distanční část ...), ve stejných tematických blocích, kde je i zadání.  Pro příslušnou distanční část se všechny výstupy odevzdávají ve formě archivu ZIP.



  • Topic 1

    Úvod - objektové programování:

    1. Charakteristika objektového programování
    2. Pojmy:
      • objekt
      • vlastnosti
      • metody
      • třída

    Seznam SW a dokumentace k jazyku Java:

    1. Javové běhové prostředí - JRE
    2. Vývojové nástroje - JDK
    3. Vývojové prostředí NetBeans (https://netbeans.org/downloads/)
    4. Vývojové prostředí Visual Studio Code
      • https://code.visualstudio.com/download
      • https://code.visualstudio.com/docs/languages/java (Install the Coding Pack for Java)

      Další zdroje pro studium (online zdroje):

      • Skripta (stará; níže v PDF už ke stažení): https://java.vse.cz/4it101/Literatura
      • W3S tutorial: https://www.w3schools.com/java/default.asp

      Oracle tutorial

      • Rozcestník: https://docs.oracle.com/javase/tutorial/index.html
      • Learning the Java Language: https://docs.oracle.com/javase/tutorial/java/index.html

      ITnetwork:

      • ITnetwork kurz (nutnost přihlást se přes FB): https://www.itnetwork.cz/java/oop/java-tutorial-uvod-do-objektove-orientovaneho-programovani


    1. Topic 2

      Třídy a objekty

      • Třída
      • Objekt
      • Datové složky
      • Metody
      • Přístup k datovým složkám a metodám
      • Ochrana dat - přístupová práva

      Primitivní a objektové proměnné

      • Primitivní proměnné a paměť
      • Objektové proměnné a paměť
      • Kopírování hodnot a referencí - důsledky

      Konstruktory

      • explicitní a implicitní
      • bezparametrické a s parametry

    2. Topic 3

      Ukazatel this

      • ukazatel this
      • využití v konstruktorech a metodách

      Statické složky tříd

      • statické proměnné
      • statické metody
      • metoda main a "hlavní třída"

      Pole

      • pole v Javě
      • vytvoření pole
      • práce s polem

    3. Topic 4

      Dědičnost:

      • základní princip dědičnosti
      • polymorfizmus
      • abstraktní a finální metody a třídy

    4. Topic 5

      Rozhraní

      • koncept rozhraní a souvislost s tzv. vícenásobnou dědičností u jiných OOP
      • implementace rozhraní
      • rozhraní a dědičnost

    5. Topic 6

      Soubory

      • základní třídy pro práci se soubory
      • proudy pro práci se soubory
      • základní postupy při čtení ze souboru a při zápisu do souboru
      Výjimky

      • mechanizmus výjimek v Javě
      • třída Exception a hierarchie tříd výjimek
      • zachytávání, ošetření a propouštění výjimek