Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

4. diel - Využitie umelej inteligencie pri štúdiu programovania

V minulej lekcii Java kurzu, Premenné a typový systém v Jave, sme si ukázali základné dátové typy, boli to int, String a double.

V tomto tutoriále sa naučíme využívať AI pri štúdiu programovania. Ukážeme si, ako pomocou umelej inteligencie lepšie pochopiť zložité koncepty a zrýchliť riešenie úloh, na ktorých bežne trávime veľa času.

Pozor: AI je dobrý pomocník, ale zlý pán! Táto lekcia ti ukáže, ako ti AI nájde chybu v tvojom kóde alebo jednoduché úlohy vyrieši úplne za teba. Najprv však musíš nad úlohou premýšľať a skúšať ju sám, než požiadaš o pomoc AI. Inak nebudeš schopný v zamestnaní riešiť komplexnejšie úlohy, s ktorými ti AI nepomôže, pretože jej nemôžeš poslať celý firemný projekt. Vo vlastnom záujme používaj AI len ako pomocníka, keď nevieš, ako ďalej, a už si vyčerpal všetky možnosti.

Využitie AI pri štúdiu programovania

Učenie sa programovania môže byť občas náročné. Budeme sa stretávať s množstvom nových konceptov a nezvyčajných problémov. Dnešná doba nám však poskytuje AI nástroje, ktoré nám prácu aj štúdium veľmi uľahčia. Stačí sa ich naučiť správne používať. Nerozumieme nejakej téme? ChatGPT nám danú problematiku na základe našich otázok znovu vysvetlí a pomôže nám si danú tému osvojiť. Zasekli sme sa na nejakej úlohe? Nástroj Canvas ju s nami rozoberie a v prípade potreby odporučí ďalší postup, opraví chyby a podobne. Strávili sme hodinu lúštením nášho kódu, aby sme nakoniec zistili, že celý problém zapríčinila chýbajúca zátvorka? Nie sme prví ani poslední – toto je skutočne viac ako bežné. Keď si osvojíme používanie AI nástrojov, bude riešenie podobných problémov otázkou niekoľkých sekúnd.

AI je nápomocná v mnohých ďalších oblastiach. Ako ju správne využívať sa učíme v kurzoch Umelá inteligencia.

Potrebuješ poradiť? ChatGPT ti pomôže rýchlejšie ako lektor

Skvelým parťákom, nielen pri štúdiu, pre nás bude najmä ChatGPT. Zrozumiteľne nám vysvetlí zložitejšiu látku, prediskutuje s nami náročnejšie koncepty a dokáže navrhnúť aj riešenie technických problémov v našom počítači. Pre študentov našich rekvalifikačných kurzov sú samozrejme k dispozícii konzultácie s lektormi.

Vo väčšine prípadov však môžeme náš problém či otázku vyriešiť s pomocou ChatGPT oveľa rýchlejšie a rovnako efektívne ako s lektorom.

ChatGPT je k dispozícii prostredníctvom mobilnej aplikácie, alebo online na adrese chatgpt.com. V riešení problémov vie byť naozaj vynaliezavý a opýtať sa ho môžeme prakticky na čokoľvek:

Prompt pre ChatGPT - Základné konštrukcie jazyka Java

Pri komunikácii s chatbotom sa dozvieme množstvo zaujímavých informácií a pochopíme aj zložité koncepty, ktorých je v programovaní mnoho:

Odpoveď ChatGPT na zadaný prompt - Základné konštrukcie jazyka Java

Môžeme sa napríklad opýtať na látku, ktorá nám nie je jasná a potrebovali by sme ju dovysvetliť:

Vysvetli, na čo sa používa v Jave abstraktná trieda.

Odpověď od ChatGPT

V Jave sa abstraktná trieda používa na definovanie základnej štruktúry a správania, ktoré zdieľajú všetky podtriedy, ale zároveň obsahuje metódy, ktoré môžu alebo musia byť implementované v týchto podtriedach.

Kľúčové vlastnosti abstraktnej triedy:

  1. Nemôže byť inštanciovaná – nemožno vytvoriť objekt priamo z abstraktnej triedy.
  2. Môže obsahovať abstraktné aj neabstraktné metódy – abstraktné metódy nemajú telo a ich implementáciu musia poskytnúť podtriedy.
  3. Môže mať atribúty a konštruktory – na rozdiel od rozhrania môže abstraktná trieda obsahovať inštančné premenné a konštruktory.
  4. Slúži ako základná trieda – často sa používa pre dedičnosť, kedy definuje spoločné vlastnosti pre viac podtried.

Kedy použiť abstraktnú triedu namiesto rozhrania?

Chceme zdieľať kód medzi podtriedami – abstraktná trieda môže obsahovať už implementované metódy. Potrebujeme atribúty alebo konštruktory – rozhranie ich nemôže obsahovať. Vieme, že triedy majú spoločný základ – napríklad pri modelovaní hierarchie objektov.

Príklad použitia:

// Abstract class Animal
abstract class Animal {
    String name;

    // Constructor
    public Animal(String name) {
        this.name = name;
    }

    // Abstract method – must be implemented in the subclass
    abstract void makeSound();

    // Regular method – can be called directly
    public void printName() {
        System.out.println("My name is " + name);
    }
}

// Subclass Dog, which inherits from the abstract class
class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }

    // Implementation of the abstract method
    @Override
    void makeSound() {
        System.out.println("Woof woof!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog("Rex");
        myDog.printName();   // Output: My name is Rex
        myDog.makeSound();   // Output: Woof woof!
    }
}

V tomto príklade:

Animal je abstraktná trieda, pretože všetky zvieratá majú nejaké meno a vydávajú zvuk (ale zvuk je pre každé zviera iný). makeSound() je abstraktná metóda, ktorú každé zviera implementuje inak. printName() je bežná metóda, ktorú môžu podtriedy používať bez zmeny. Dog dedí od Animal a implementuje metódu makeSound().

Abstraktné triedy teda pomáhajú vytvárať organizovaný a prehľadný kód pri modelovaní objektových vzťahov. 🚀

Ďalej sa môžeme opýtať napríklad na použitie rozhrania v praxi a podobne:

Vysvetli, čo je interface v Jave, na čo sa používa v praxi, a uveď jednoduchý príklad s kódom.

Odpoveď od ChatGPT

V Jave je interface (rozhranie) špeciálny typ referencie, ktorý slúži ako zmluva: definuje, aké metódy musí trieda implementovať, ale neurčuje ich konkrétne správanie (implementáciu).

Používa sa, keď chceš:

  1. Definovať jednotné rozhranie pre viac tried, ktoré sa môžu správať rôzne.
  2. Dosiahnuť polymorfizmu – umožňuje pracovať s rôznymi objektmi rovnakým spôsobom.
  3. Oddeliť návrh od implementácie – interface hovorí čo, nie ako.

🧠 Predstav si:

Máš aplikáciu, ktorá pracuje s rôznymi platobnými metódami - kartou, prevodom, kryptomenou. Každá funguje inak, ale všetky majú metódu pay().

Interface definuje:

public interface Payment {
    void pay(double amount);
}

🛠️ Implementácia rozhrania:

public class CardPayment implements Payment {
    public void pay(double amount) {
        System.out.println("Paying by card: €" + amount);
    }
}
public class BankTransferPayment implements Payment {
    public void pay(double amount) {
        System.out.println("Paying by bank transfer: €" + amount);
    }
}

Použitie v praxi:

public class Shop {
    public void processPayment(Payment payment, double amount) {
        payment.pay(amount);
    }

    public static void main(String[] args) {
        Shop shop = new Shop();

        Payment card = new CardPayment();
        Payment bankTransfer = new BankTransferPayment();

        shop.processPayment(card, 20);
        shop.processPayment(bankTransfer, 400);
    }
}

Výstup:

Konzolová aplikácia
Paying by card: €20.00
Paying by bank transfer: €400.00

Zhrnutie:

Interface = zmluva, aké metódy má trieda mať. Neobsahuje implementáciu, len definícia metód. Pomáha s modularitou, testovateľnosťou a rozšíriteľnosťou aplikácie.

Chceš aj ukážku s východiskovými metódami v interface?

Kvalita odpovede závisí predovšetkým na našom dotaze, tzv. promptu. Ako správne štruktúrovať prompt sa učíme v lekcii Vytvárame efektívne prompty pre excelentné výstupy.

Nefunguje ti kód? Vyskúšaj nástroj ChatGPT Canvas

Pri práci s ChatGPT je možné využiť rozšírenie Canvas, ktoré ponúka okrem iného aj rozhranie pre interaktívnu prácu s kódom. Na rozdiel od bežného chatovacieho okna umožňuje organizovať odpovede a návrhy kódu do blokov, čo je ideálne pre zložitejšie úlohy, ako je návrh architektúry aplikácie alebo ladenie rozsiahlejších projektov. Vďaka vizuálnemu usporiadaniu je možné lepšie sledovať jednotlivé kroky návrhu, experimentovať s rôznymi prístupmi a ľahko sa vracať k predchádzajúcim verziám riešenia. Nástroj spustíme tlačidlom Canvas v menu ChatGPT, ktoré sa nám otvorí po kliknutí na tri bodky v chatovacom okne:

Zapnutie Canvas v ChatGPT - Základné konštrukcie jazyka Java

Teraz chatbotu odovzdáme náš kód a začneme na ňom pracovať:

import java.util.Scanner;

public class Program {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in, "Windows-1250");
        System.out.println("Enter your name: ");
        String name = scanner.nextLine();
        if ((name.length() > 3) || (name.length() < 10))
            System.out.println("Your name is too short or too long!");
        else
            System.out.println("Normal name.");
    }
}

Nástroj nám vyhľadá a opraví v kóde chyby:

Editácia kódu v Canvas - Základné konštrukcie jazyka Java

Pri správne zadanom prompte môžeme jednoducho doplniť v našom kóde chýbajúcu funkcionalitu:

Oprav kód a pridaj validáciu vstupu. Chcem, aby nešlo zadať prázdne meno.

Editácia kódu v Canvas – doplnenie funkcionality - Základné konštrukcie jazyka Java

GitHub Copilot - Pomocník priamo v tvojom IDE

GitHub Copilot je AI asistent vyvinutý spoločnosťami GitHub a OpenAI. V IntelliJ IDEA je k dispozícii ako plugin, ktorý je schopný navrhovať doplnenia v našom kóde, generovať kód podľa zadania či hľadať a opravovať chyby.

Pozor: Nepoužívaj nástroj Copilot vo svojom IDE, pretože bez dôkladného zvládnutia základov programovania sa nenaučíš samostatne vytvárať funkčný kód a v zamestnaní budeš ľahko nahraditeľný.

AI nástroje dokážu výrazne pomôcť pri štúdiu programovania - uľahčujú pochopenie ťažké látky a riešenie náročných úloh. Po dohode so zamestnávateľom ich možno uplatniť aj v praxi, kde môžu šetriť čas a zvyšovať produktivitu. Preto je dôležité sa s nimi naučiť efektívne pracovať a využívať ich potenciál naplno.

V budúcej lekcii, Načítanie hodnôt z konzoly a parsovanie v Jave, sa pozrieme na načítanie hodnôt z konzoly, parsovanie dát a potom si vytvoríme jednoduchú kalkulačku.


 

Predchádzajúci článok
Premenné a typový systém v Jave
Všetky články v sekcii
Základné konštrukcie jazyka Java
Preskočiť článok
(neodporúčame)
Načítanie hodnôt z konzoly a parsovanie v Jave
Článok pre vás napísal Adam Straňovský
Avatar
Užívateľské hodnotenie:
110 hlasov
Autor se zabývá výukou a vzděláváním dospělých, zejména v oblasti výpočetní techniky, programování a tvorby webových stránek. Ve volném čase se rád věnuje hudbě a hře na kytaru.
Aktivity