4it101»4IT101 - Král

4IT101 - Král

4IT101 cvičení - cvičící Ing. David Král

letní semestr 2018/2019

Přidělení bodů

druh úkolupočet bodůpoznámka
domácí úkoly305 domácích úkolů po 6 bodech
průběžné testy10jeden programovací test za 10 bodů
semestrální práce - adventura30Pro získání bodů je nutná osobní prezentace v k tomu určených termínech nebo v konzultačních hodinách. Termíny obhajob prací budou vypsány přes InSIS. Termín odevzdání adventury je do termínu Vaší obhajoby.
závěrečný test30bližší informace

Harmonogram průběžných testů:

termínobsahpočet bodůpoznámka
sedmý týden výukytest bude praktické programování, ukázky několika testů jsou uvedeny pod tabulkou10 

Programovací test

- ukázky zadání a další informace zde

Domácí úkoly:

Pravidla pro domácí úkoly

Domácí úkol by měl být samostatnou prací, případně prací dvojice maximálně trojice studentů kurzu. Jméno autora či autorů by vždy mělo být uvedeno v hlavičkách všech tříd, kterou jsou v úkolu upravovány nebo přidávány. Pokud bude odevzdáno několik shodných úkolů bez uvedení více autorů, budou ohodnoceny jako plagiáty.

Pokud je domácí úkol pokračováním práce za cvičení, musí odevzdaný úkol obsahovat nejen to co je zadáno jako domácí úkol ale i vše, co bylo naprogramováno během cvičení.

Odevzdání
  • soubory projektu včetně adresáře zabalte do archivu .zip,
  • vytvořený archiv zip uložte na insis.vse.cz do příslušné odevzdávárny a to nejpozději před začátkem příštího cvičení (přesná hodina a minuta je vždy uvedena u odevzdávárny, pak se odevzdávarna uzavře a nepřijímám úkoly jinou cestou např. mailem.)
  • zdrojové kódy, které jste v rámci úkolu upravovali či přidali budou "podepsané", tj. v dokumentačním komentáři bude uvedeno jméno studenta (případně studentů, pokud se jedná o úkol vytvořený ve dvojici případně trojici)

První domácí úkol (do sedmého cvičení)

Vytvořte třídu Interpret s atributy jmeno a vek. Určení jednotlivých datových typů je na vás. Pro každý z těchto atributů vytvořte patřičný getter a setter.

Vytvořte třídu Skladba s atributy nazev, rok vytvoreni, delka (v sekundach) a interpret (typ Interpret). Určení jednotlivých datových typů je na vás. Pro každý z těchto atributů vytvořte patřičný getter a setter.

V případě potřeby u obou tříd vytvořete equals a hashcode.

Dále vytvořte interface EvidenceSkladeb či IEvidenceSkladeb (záleží na vaší jmenné preferenci). Tento interface bude mít celkem 4 metody:

  • boolean pridejSkladba(Skladba skladba) - přidá skladbu do evidence. Pokud se přidání nezdařilo, vrátí metoda hodnotu false. Pokud došlo k přidání do evidence, navrátí true.
  • boolean odeberSkladba(Skladba skladba) - odebere skladbu z evidence, pokud se v ní nachazí. Pokud se v evidenci odebíraná skladba nenachází, vrací false. Pokud došlo k odstranění, navrátí true.
  • int pocetSkladeb() - vrátí číslo reprezentující počet skladeb aktuálně v evidenci
  • Collection<Skladba> skladbyInterpreta(Interpret interpret) - Vrátí všechny skladby od určitého interpreta. Pokud žádné skladby nemá zvolený interpret v evidenci, je vrácen prázná kolekce. NIKDY null!

Pro tento interface vytvořte implementaci, která všechny metody naimplementuje a vytvoří jejich funkcionalitu. Tato funkcionalita je popsána za pomlčkami u popisu metod pro interface.

Druhý domácí úkol (do devátého cvičení)

Tento úkol nelze dělat ve dvojici, každý má své zadání.

Zadání pro adventuru musí obsahovat:

  • Příběh jak hra začíná, tj. uvedení do příběhu, co se stalo a co je hráčovým úkolem.
  • Plánek hry (obrázek), jaké prostory bude hra obsahovat. Může být nakreslený i ručně. Jde o plánek propojených prostorů podle toho, kam vedou jednotlivé východy. Prostor klidně zobrazte jako čtverec s názvem a propojení čarou.
  • 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).
  • Seznam příkazů, které bude moci hráč při hře používat.

Odevzdejte jako soubor ve formátu doc, docx nebo pdf.

Připomínám, že hra musí splňovat alespoň základní požadavky uvedené zde

Třetí domácí úkol (do jedenáctého cvičení)

Vytvořte nový projekt Soubory. Budou v něm dvě třídy:

  • třída Start s metodou main
  • třída ZpracovaniSouboru

Metoda main ve třídě Start bude jako vstupní parametr očekávat název zpracovávaného souboru.

Třída Zpracování souboru bude mít statickou metodu zpracovani (public static void zpracovani(File soubor)), tato metoda zpracuje soubor zadaný jako parametr. Aplikace předpokládá, že se jedná o soubor s logy v následující struktuře:

den měsíc rok hodina minuta IP-adresa operace

Jeden řádek souboru tedy vypadá takto:

01 03 2007 07 22 146.102.174.106 DELETE

Metoda zpracování vypíše na konzoli všechny řádky, ve kterých je zaznamenáno, že operace byla DELETE a proběhla v době od 16:00 do půlnoci (23:59). Pokud dojde k výjimce (nenalezený soubor atd.), informace o výjimce bude vypsána také do konzole. Pokud nedojde k výjimce a soubor bude úspěšně zpracován, jako poslední se vypíše informace kolik bylo zpracováno řádků a kolik z nich vypsáno.

Pro úkol použijte tento soubor:soubor s logy

Čtvrtý domácí úkol (do posledního cvičení v semestru)

Zadání je shodné se zadáním předchozí verze domácího úkolu s evidencí skladeb s tím rozdílem, že metoda public Collection<Skladba> skladbyInterpreta(Interpret interpret) musí být implementována s lambda výrazy a streamy.

Navíc je třeba přidat možnost setřídit seznam skladeb podle jejich názvu sestupně. (z-a) V implementaci použijte lamda výraz (je jedno zda budete implementovat Comparable nebo Comparator).