Warning
This page is located in archive.

-

Testík

  • Jaké jsou základní vlastnosti procedurálního přístupu?
  • Jaké nebezpečí múže zapříčinit nevhodné použití nelokální proměnné?
  • Definujte rozdíl mezi proměnnou třídy a instanční proměnnou.
  • Popište roli haldy a zásobníku při rekurzivním volání metod.
  • Jaké základní vlastnosti objektového přístupu jste poznali?
  • Které datové struktury jsou referencované?
  • Jak spolu souvisí dědičnost a kompozice?
  • Chcete napsat program, který bude podporovat učení slovíček v angličtině, jejich zkoušení (v náhodném pořadí, pokud zodpoví zkoušený správně, již nebude na totéž slovíčko dotázán). Jaké třídy bude obsahovat? Jak vyřešit nejednoznačnost překladu, např. cesta může být přeložena jako way, trip, journey, …

Pokud si nejste jisti, mrkněte na minitest.

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

Polymorfizmus

  • Abstraktní třída,
    • řešení polymorfizmu
  • interface, rozhraní, vícenásobné dědění
    • interface jako typ proměnné,
    • řešení polymorfismu rozhraním,
    • rozhraní a dědičnost,
    • typ interface,
    • atributy rozhraní;
  • Porovnání možností abstraktní třídy a interface
  • Reverzní inženýrství v NetBeans
  • Výčtové typy, enum

Testík

  • Co je to polymorfizmus?
  • Jaké jsou způsoby realizace polymorfizmu v Javě?
  • Jak lze realizovat vícenásobnou dědičnost v Javě?
  • Popište strukturu abstraktní třídy.
  • Porovnejte vlastnosi abstraktní třídy a rozhraní.
  • K čemu slouží proměnné typu rozhraní?
  • Které abstraktní metody musí být při dědění implemetovány?
  • Navrhněte hierarchii tříd pro evidenci komponent počítačů. U každého dílu sledujte cenu, datu

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

  • Výjimky,
    • pojem výjimky,
    • princip mechanismu
    • zpracování výjimek,
    • úplné zpracování výjimek;
    • vyhození výjimky,
    • propagace výjimek,
    • generování vlastní výjimky,
    • hierarchie výjimek,
    • kontrolované a nekontrolované výjimky

Testík

  • Co je to výjimka?
  • Jaká je sémantika bloku try?
  • Jaká je role bloku catch a je-li jich více, jak spolu souvisí?
  • Co se stane, když není výjimka zachycena?
  • Jaký je základní rozdíl mezi kontrolovanou a nekontrolovanou výjimkou?
  • Uveďte strukturu tříd výjimek, počínaje Exception.
  • Je vlastní výjimka kontrolovanou či nekontrolovanou výjimkou?
  • Provádíte kritickou sekci, v níž se mohou vyskytnout následující výjimky: FileNotFoundException, NumberFormatException, DynamicCastException, EOFException, IOException a NullPointerException. Ve výpisu chcete vypsat pro každý typ specifickou hlášku, v jakém pořadí budete uvádět odchytávání pomocí catch?
  • V jaké části (try, catch, nebo finally) uzavřete všechny otevřené soubory? Jak poznáte, že se podařilo soubor otevřít před pokusem o jeho uzavření?

4 Kolekce

  • Třída java.util.Arrays
  • Kontejnery, kolekce,
    • rozhraní
    • třídy
    • algoritmy
  • Třída java.util.Collections
    • seznamy,
    • množiny,
    • mapy,
  • Genericita
  • Komparátory
  • Iterátory
  • Hešování, hashCode a equals

Testík

  • Co jsou to generické typy a generické metody?
  • Jaké znáte rozhraní kolekcí?
  • Jaké znáte standardní třídy, které implentují rozhraní kolekcí?
  • Co je typickou vlastností metod rozhrani Map
  • Kterou třídu rozhraní byste použili pro implementaci fronty a zásobníku?
  • Pro jaké implenetace je nejhodnější rozhrani Set a List?
  • Jakým způsobem lze “indexovat” prvky v rozhraní Set?
  • A troška spojování:
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í

  • GUI v Javě
    • zásady návrhu
    • typy komunikace,
    • knihovny AWT a SWING,
    • princip GUI, základní součásti
      • komponenty,
      • kontejnery,
      • správci rozmístění,
    • obsluha událostí
  • Grafika v Javě
    • grafický kontext
    • metoda paint
  • Aplety
    • Architektura webové aplikace
      • principy komunikace internetu
    • Aplety, princip, struktura
    • Aplet versus aplikace,
      • vlastnosti, použití,
      • způsob aktivace,
      • životní cyklus apletu,
    • Základní příkazy jazyka HTML
    • Předávání parametrů do apletu,
    • Omezení apletu, zmírnění omezení

Testík

  • Co je aplet a jaké má vlastnosti?
  • Jaké jsou výhody a nevýhody apletů?
  • Jakou má aplet roli ve webových aplikacích, jak se používá?
  • Kdo a kdy spustí aplet?
  • Jak zajistit to, abychom nemuseli implementovat všechny metody JApplet?
  • Jakým způsobem mohu předávat data do apletu?
  • Kdy je možné použít aplet jako aplikaci?
  • Jaké jsou omezení pro aplet ve srovnání s aplikací?

Testík

  • Co je účelem kontejneru?
  • Vysvětlete funkci metody paint()?
  • Co rozumíte grafickým kontextem?
  • Jakou funkci mají správci rozvržení a jaké znáte?
  • Porovnejte knihovny AWT a Swing.
  • Proč by se měly prvky GUI znepřístupňovat?
  • Lze přesně umístit grafický prvek v okně?
  • Jak bude vypadat komponenta:

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

  • Pospojujte buňky z levého sloupečku s buňkami z pravého sloupečku:
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

  • Koncepce zpracování událostí
    • událost jako objekt,
    • zpracování události,
    • zdroj události,
    • posluchač události,
    • model šíření události,
  • Implementace modelu zpracování události;
  • Zpracování vlastní události,
  • Více zdrojů a posluchačů,
  • Rozlišení zdrojů
    • Rozlišení typem
    • Rozlišení popisem
    • Dva posluchači téhož zdroje
  • Vnitřní třídy
  • Anonymní třídy

Testík

  • Charakterizujte pojem události.
  • Popište roli posluchače při zpracování události.
  • Co je podmínkou pro to, aby třída byla posluchačem?
  • Co musí udělat producent, aby měl své posluchače?
  • Co je třeba udělat proto, aby na jednu událost mohly reagovat dva posluchači?
  • Jak mohu odlišit dva producenty?
  • Co je to vnitřní třída?
  • Kde lze s výhodou použít anonymní třídu?
  • Pospojujte buňky z levého a pravého sloupečku:
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

  • Procesy
    • Program versus proces
    • Přepínání kontextu
    • Priority, synchronizace
    • Stavy procesu
    • Proces versus vlákno
    • Vláknový model
    • Komunikace mezi vlákny
    • Výhody vláken
    • Problémy při komunikaci mezi procesy/vlákny
    • Uváznutí procesů
  • Vlákna v Javě
    • oblasti použití
    • třída Thread
    • rozhraní Runnable
    • Řízené ukončení činnosti vláken
    • Čekání na ukončení činnosti
    • Stavy vláken
    • Priority vláken
    • Synchronizace činnosti vláken, monitor
      • Synchronizace metody
      • Synchronizace příkazu
    • Komunikace mezi vlákny

Testík

  • Definujte pojem vlákna a jak souvisí s procesy?
  • Jak se realizuje “paralelní” činnost vláken?
  • Co rozumíte přepínáním kontextu?
  • V jakém stavu může být vlákno resp. proces?
  • Jak mohu implementovat vlákna v Javě.
  • Jak funguje součinnost vláken vzhledem k prioritě, jak mohu prioritu změnit, a jak i “potlačit”?
  • Co rozumíte synchronizací vláken a jak ji zajistíte?
  • Uvažujme následující kód:

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

  • Charakteristika jazyka C
  • Porovnání JAVA vs „C“
    • Co je stejné nebo podobné
    • Co C nemá
    • Co C nemá nebo je jinak
  • Proměnné, konstanty, přiřazení
  • Blok, místa pro deklaraci proměnných
  • Vstup, výstup
  • Řízení běhu programu (if, for, while, switch)
  • Operátory
  • Matematické funkce (knihovny)

Testík

  • Popište strukturu programu v C.
  • Charakterizujte jazyk C a vymezte oblast použití
  • Jak se realizuje metoda println() v C?
  • Vysvětlete pojem globální proměnné v C!
  • Jak probíhá překlad programu v C a je záviský na platformě?
  • Co je to makro?
  • Jak se zavádějí konstanty v C?
  • Co je to funkční prototyp a k čemu je?

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

  • Komparativní výklad jazyka C k jazyku Java,
  • Překlad
    • syntaxe jazyka,
    • makra,
    • podmíněný překlad,
  • Funkce a procedury
    • Konstrukce metod a funkcí
    • Vstupní parametry funkce
    • Návratová hodnota funkce
    • Iterace a rekurze
  • Výstup údajů na obrazovku
  • Vstup údajů z klávesnice

Testík

  • Jak se ošetřuje korektnost vstupních dat v C?
  • Uveďte číselné datové typy v posloupnosti možnosti přiřazení!
  • K čemu slouží p¨říkaz go to a vymezte oblast jeho použití!
  • Najděte obdobu struct v Jave!
  • Jak byste realizovali strukturu union v Javě?
  • Je možné v C psát rekurziní funkce?
  • K čemu je klauzule extern?
  • Porovnejte příkaz switch v obou jazycích!

10 - C: Pointery a pole

  • Pole
    • Vícerozměrné pole
    • Pole a funkce (předávání parametrů, návratová hodnota)
    • String
  • Pointery
    • Pole a pointery
    • Dynamicky alokované pole
  • Pointer na pointer

Testík

  • Jak spolu souvisi pointry a pole v C?
  • Je možné v C volat odkazem?
  • Je možné předat s polem i jeho délku?
  • Jaké operace lze provádět s pointry?
  • Vyvětlete pojem operace reference a dereference!
  • Vysvětlete sémentiky výrazu **p_pole!
  • Vysvětlete možnost pointru na funkce!

11 - C: Programy v C, struktury

  • Struktura rozsáhlých programů
    • Globální proměnné
    • Hlavičkové soubory
    • Platnost proměnných, extern
  • Struktury
    • Struct
    • Union
      • Struktura v unionu
  • Ukazatel na funkce
    • Pole ukazatelů na funkce

Testík

  • Vysvětlete význam podmíněného překladu pro setavení!
  • Co obsahují hlavičkové soubory?
  • Vysvětlete strukturu výrazu koreny→re1
  • Uveďte různé typy alokace paměti v C!
  • Uveďte různé způsoby definice vícerozměrného pole a porovnejte s Javou!
  • Lze v C použít funkci před její definicí?
  • Co je výsledkem překladu programu v C?
  • Uveďte základní rozdíl v použití jazyka C na rozdíl od Javy!
  • Kterému jazyku byste dal přednost při realizaci grafického ovladače a proč?

13 Expertní přednáška

courses/a0b36pr2/lectures/2014/prednasky.txt · Last modified: 2015/02/17 08:54 by faiglj