Table of Contents

-

Testík

Pokud si nejste jisti, mrkněte na minitest.

2 - Objektově orientovaný přístup, polymorfismus

Polymorfizmus

Testík

nákupu, výrobce a záruční dobu. Umožněte výpis informací o produktu a zbývající dobu záruky. U pamětí navíc sledujte kapacitu a u procesorů počty jader a frekvenci. Co by bylo typické pro další komponenty?

Pokud si nejste jisti, mrkněte na výsledky minitestu.

3 Výjimky

Testík

4 Kolekce

Testík

Typ kolekce spojení souvisejících příklad použití
HashSet evidence reklamací, častý výpis nevyřízených reklamací
LinkedList implementuji zobrazení volaného podle telefonního čísla
TreeSet zpracovávám seznamy preventivních návštěv zaměstnanců u lékaře a potřebuji je vypisovat podle poslední doby kontroly.
HashMap potřebuji zjistit seznam různých slov v souboru a počty jejich opakování
ArrayList prioritní fronta zákazníků (priorita reprezentována číslem typu int), velmi časté vkládání privilegovaných zákazníků a výběr prvního na řadě.

Pokud si nejste jisti, mrkněte na výsledky minitestu.

5 Grafické uživatelské rozhraní

Testík

Testík

 JLabel jl = new JLabel();
jl.setText("<html><b>x<sup>2</sup></b></html>");

Komponenta spojení typické použití
JLabel vstup jednoduchého textu, např. jména uživatele
JRadioButton jednoduchá editace možností muž/žena, dokončené vzdělání/nedokončené vzdělání
JCheckBox víceřádkový editor textu
JTree výběr kreslícího nástroje z možností tužka, štětec, razítko - vše zobrazeno ikonkami
JTable výběr velikosti trička, možnostmi jsou S, M, L, XL a XXL
JButton zobrazení popisu vstupního pole bez možnosti editace
JTextField umožňuje propojení prvků v rámci skupiny, např. JRadioButtony či JToggleButony
JTextArea vložení více komponent do jednoho bloku s vlastním správcem rozvržení
JPanel tlačítko pro uložení souboru
JScrollPane výpis struktury adresáře
ButtonGroup vložení komponenty, u které se dá očekávat, že se nevejde do přiděleného prostoru a bude nutné zobrazit rolovátka
JToggleButton zobrazení seznamu zaměstnanců spolu s jejich platem

Pokud si nejste jisti, mrkněte na výsledky minitestu.

6 - Události

Testík

obsluha události spojení souvisejících typické použití
produkující třída implementuje příslušné rozhraní jednoduchá obsluha, která se nikde v programu neopakuje
anonymní třída obsluha ActionPerformed pro pět různých tlačítek na jednom formuláři
obslužná třída definovaná ve stejném souboru jako třída produkující události jednoduchá kreslící plocha s obsluhou všech událostí myši
obslužná třída definovaná public ve svém souboru obsluha tlačítka refresh umístěném na různých formulářích, vždy stejný algoritmus

7 - Vlákna

Testík

class Vlakno implements Runnable {
 
    static int stati = 1;
    int in = 1;
 
    public synchronized void run() {
        System.out.printf("1: in: %5d, stati:%5d\n", in++, stati++);
        if (in < 3) {
            try {
                wait();
            } catch (InterruptedException ex) {
            }
        } else {
            notify();
        }
        System.out.printf("2: in: %5d, stati:%5d\n", in++, stati++);
    }
}
 
public class Main {
 
    public static void main(String[] args) {
        Vlakno v1 = new Vlakno();
        Vlakno v2 = new Vlakno();
        Thread t1 = new Thread(v1);
        Thread t2 = new Thread(v1);
        Thread t3 = new Thread(v2);
        Thread t4 = new Thread(v2);
        t1.start();
        t2.start();
        t3.start();
        t4.start();
        System.out.println("Identifikace: " + t1.getId() + t2.getId() + t3.getId() + t4.getId());
    }
}

Vyberte pravdivé výroky(pečlivě rozlišujte musí x může x nesmí), svá tvrzení zdůvodněte:

  1. Program nepůjde přeložit, protože v jednom souboru nesmí být dvě třídy na nejvyšší úrovni.
  2. Metoda main spustí celkem 4 nezávislá vlákna.
  3. Ve výpisu by mohl být řádek Identifikace: 891011
  4. První řádek výpisu musí začínat slovem Identifikace.
  5. První řádek výpisu může začínat slovem Identifikace.
  6. První řádek výpisu nesmí začínat slovem Identifikace.
  7. Poslední řádek výpisu musí začínat slovem Identifikace.
  8. Poslední řádek výpisu může začínat slovem Identifikace.
  9. Poslední řádek výpisu nesmí začínat slovem Identifikace.
  10. Klíčové slovo synchronized v deklaraci metody run třídy Vlakno:
    1. Nemusí být, je tam implicitně ze třídy Thread.
    2. Musí být, protože mění chování této metody.
    3. Nesmí být, protože rozhraní Runnable má metodu run bez tohoto slůvka.
    4. Nastaví zámek na objekt typu Vlakno a tak
      1. do metody run nemohou současně vstoupit vlákna t1 a t2, ani t3 a t4, ale t1 a t3 mohou,
      2. do metody run může vstoupit jediné vlákno z t1, t2, t3, t4.
  11. Vlákna t1 a t3 sdílí proměnnou stati.
  12. Vlákna t2 a t3 sdílí proměnnou stati.
  13. Vlákna t2 a t3 nesdílí proměnnou stati.
  14. Vlákna t1 a t2 nesdílí proměnnou stati.
  15. Vlákna t1 a t3 sdílí proměnnou in.
  16. Vlákna t2 a t3 sdílí proměnnou in.
  17. Vlákna t2 a t3 nesdílí proměnnou in.
  18. Vlákna t1 a t2 nesdílí proměnnou in.
  19. Příkaz wait() uvolní zámek na objektu a do metody run bude moci vstoupit další vlákno.
  20. První vlákno se zablokuje ostatní a po wait() se již nerozeběhne a program nikdy neskončí.
  21. Poslední výpis proměnné stati bude ukazovat hodnotu:
    1. 1
    2. 2
    3. 3
    4. 4
    5. 6
    6. 8
  22. Poslední výpis proměnné in bude ukazovat hodnotu:
    1. 1
    2. 2
    3. 3
    4. 4
    5. 6
    6. 8
  23. Ve výpisu by se mohl objevit řádek Identifikace: 1232
  24. Ve výpisu by se mohl objevit řádek Identifikace: 1 2 3 2
  25. Ve výpisu by se mohl objevit řádek 2: in: 3, stati: 4
  26. Ve výpisu by se mohl objevit řádek 2: in: 3, stati: 2

8 - Základy jazyka C

Testík

9 - C: Operátory a příkazy

Testík

10 - C: Pointery a pole

Testík

11 - C: Programy v C, struktury

Testík

13 Expertní přednáška