4IT101 Programování v Javě - cvičící Tomáš Michalička LS 2017/2018

Kontakt

Mimo mail mě můžete najít na LinkedInu, Facebooku a jinde.

Bodování

Úkol Počet bodů Poznámka
Domácí úkoly 20 4 domácí úkoly po 5 bodech
Průběžné testy (teorie) 10 2 testy v Insis po 5 bodech
Test - programování 10 Doporučená příprava na test
Semestrální práce 30 Podrobnosti na stránkách předmětu.
Závěrečný test 30 Podrobnosti na stránkách předmětu.

V případě aktivity na cvičeních je možné získat bonusové body.

Harmonogram

Program cvičení je orientační a velmi optimistický. Je proto možné, že program 11. cvičení bude probíhat v náhradním termínu.

Sešit pro sdílení je zde.

Týden výuky Datum Téma cvičení Projekt Poznámka
1 13.2.2018 Představení kurzu, seznámení s BlueJ, třída, instance -
2 20.2.2018 Zapouzdření objektů, přístupové metody k datovým atributům, datové typy, PMD Kalkulačka
3 27.2.2018 Rozhraní, základní algoritmické konstrukce Zoo tycoon Zadání 1. domácího úkolu
4 6.3.2018 Testování a ladění Zoo tycoon II 1. teoretický test
5 13.3.2018 Cykly, seznamy Zoo tycoon III Odevzdání 1. domácího úkolu, zadání 2. domácího úkolu
6 20.3.2018 Datové struktury (2. část) - hashCode, enum, obalové třídy primitivních typů Zoo tycoon IV
7 27.3.2018 Statické prvky třídy, metoda main, třída Math, třída System, Řětězce Zoo tycoon V Odevzdání 2. domácího úkolu
8 3.4.2018 Programovací test Zadání testu
9 10.4.2018 Představení semestrálního projektu, mapy Zoo tycoon VI Zadání 3. domácího úkolu
10 17.4.2018 Dědičnost, abstraktní třídy, třídění a vyhledávání (1. část) Výsledek cvičení Odevzdání 3. domácího úkolu, zadání 4. domácího úkolu
11 24.4.2018 Třídění a vyhledávání (2. část), práce se soubory Zoo tycoon VII - Zoo tycoon final 2. teoretický test
12 10.5.2018 - náhradní termín Java 8 features Odevzdání 4. domácího úkolu
- 1.5.2018 Cvičení odpadá
- 8.5.2018 Cvičení odpadá
- řádné odevzdání do 20.5.2018 Odevzdání semestrální práce Semestrální práci je možné odevzdat i po tomto deadlinu, ale za každý započatý týden zpoždění je srážka 3 bodů.

Zadání domácích úkolů

Všechy domácí úkoly vypracovávejte samostatně. Jakákoli snaha o opisování bude po zásluze "odměněna".

1. domácí úkol

Stáhněte se projekt.

Implementujte třídy Kalkulacka a BinarniKalkulacka tak, aby odpovídaly popisu nad třídou. Tzn. třída kalkulačka bude pracovat s čísly v desítkové soustavě, třída BinarniKalkulacka bude pracovat se vstupy v binární podobě. Obě třídy budou implementovat interface IKalkulacka. K oběma implementacím napište unit test (každá metoda by měla mít svůj).

Vzorové volání třídy Kalkulacka: secti(7, 2) - metoda vrátí 9, odecti(7, 2) - metoda vrátí 5, modulo(7, 2) - metoda vrátí 1...

Vzorové volání třídy BinarniKalkulacka: secti(100, 101) - metoda vrátí 1001, odecti(100, 11) - metoda vrátí 1, modulo(100, 11) - metoda vrátí 11...

2. domácí úkol

  1. Vytvořte interface Zbozi, který bude obsahovat následující metody (parametry a návratové typy metod doplňte dle potřeby):
    1. getCena
    2. getNazev
  2. Vytvořte alespoň 2 třídy implemetující interface Zbozi (například Kosile a Svetr).
  3. Vytvořte třídu Kosik, která bude obsahovat následující metody:
    1. void vyprazdniKosik() - metoda vyprázní košík
    2. void vloz(Zbozi zbozi) - metoda vloží zboží do košíku
    3. int pocetKusu(String nazev) - metoda vrátí počet kusů zbozí v košíku, které má daný název
    4. double spocitejCenu() - metoda sečte cenu za všechny položky v košíku
    5. void vypisKosik() - metoda vypíše na konzoli názvy všech položek v košíku
  4. Napište unit test pro metody spocitejCenu() a pocetKusu(String nazev) - v košíku musí být minimálně jedna instance obou tříd implementujících interface Zbozi
Požadované vlastnosti projektu
  1. Cena zboží může být kladné desetinné číslo.
  2. Velikost košíku je omezena pouze pamětí JVM. Teoreticky do něj tak musí být možné vložit tisíce kusů zboží.

3. domácí úkol (Zadání semestrální práce)

Ve 3. domácím úkolu nebudete nic programovat. Projděte si požadavky na semestrální práci. Následně připravte zadání vlastní semestrální práce, které bude obsahovat:

  1. Příběh jak hra začíná, tj. uvedení do příběhu, co se stalo a co je hráčovým úkolem. Tento text pak budete hráči zobrazovat při spuštění hry.
  2. Plánek hry (obrázek), jaké prostory bude hra obsahovat a jak jsou propojeny.
  3. Popis toho, co bude muset hráč udělat, aby hru vyhrál. Případně také, co se stane, když některé úkoly nesplní (špatné konce hry).
  4. Seznam příkazů, které bude moci hráč při hře používat.

Odevzdejte jako soubor ve formátu pdf.

4. domácí úkol (práce se soubory)

Do semestrální práce doplňte další dva příkazy - uloz a nacti. Příkaz uloz uloží všechny příkazy, které byly spuštěny během hry, do souboru. Příkaz nacti je pak ze souboru načte a spustí. Zájemci si pak mohou zkusit implementovat příkaz tak, aby jako parametr příkazu byla cesta k souboru (to však není povinné a k dosažení maximálního počtu bodů to není potřeba).

Tento domácí úkol se odevzdává současně se semestrální prací.

Předchozí semestry