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í úkoly204 domácí úkoly po pěti bodech
průběžné testy20tři elektronické testy po 4 bodech v InSISu a jeden programovací test za 8 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 bez ztráty bodů za zpoždění je 26.05.2018 23:59. Poslední možnost odevzdat adventuru je do termínu poslední obhajoby. Za každý započatý týden zpoždění odevzdání jsou odečteny 2 body z maximálního možného hodnocení.
závěrečný test30bližší informace

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

termínobsahpočet bodůpoznámka
na začátku 3. cvičeníúvod do objektů, primitivní datové typy a operátory4 
sedmý týden výukytest bude praktické programování, ukázky několika testů jsou uvedeny pod tabulkou8 
na začátku 9.cvičenídatové struktury (pole, seznamy, množiny a mapy), výčtový typ, statické prvky tříd4 
na začátku 12.cvičenítřída Object, dědičnost, polymorfismus, rozhraní4 

První, třetí a čtvrtý průběžný test

- budou mít formu el. testu v InSISu s otázkami různých typů. U každé otázky je vždy uvedeno jakého typu je otázka. Test je po odeslání automaticky vyhodnocen a student se hned dozví, kolik získal bodů.

Druhý průběžný test

- programovací, 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)

domácí úkol Knihovna (obě části odevzdat do 7. cvičení)

první část

Vytvořte prázdný projekt Knihovna a v něm vytvořte dvě třídy: Kniha a Ctenar.

Třída Ctenarbude mít čtyři datové atributy, 2 typu String: jméno, příjmení a 2 typu int: věk, pocetPrectenychKnih. Napište konstruktor, kterým zadáte všechny čtyři údaje, getry na všechny čtyři údaje a setr POUZE na pocetPrectenychKnih a věk. Metodu toString() naimplementujte tak, že bude vracet jméno a příjmení čtenáře společně s počtem přečtených knih -> např. Jarda Novák (8 přečtených knih) . Se skloňováním slova kniha si nemusíte dělat starosti.

Třída Kniha bude mít atributy idKnihy typu int (unikátní číslo), název typu String (jméno knihy může být smyšlené), autor typu String (jméno a příjmení najednou) a čtenář typu čtenář. Konstruktor, kterým bude zadáno pouze id knihy, jméno a autor knihy. Hodnota datového atributu čtenář bude po vytvoření nové knihy null. Napište getry na všechny atributy a setr POUZE na čtenáře. Metoda toString() bude vracet text obsahující id knihy, název knihy a jméno autora obalené závorkami. Pokud je kniha přiřazené nějakému čtenáři, tak " je vypůjčena čtenářem - " + informace o čtenáři (viz. toString()). Pokud není přiřazen, tak vypsat " nemá čtenáře.". Ukázkový výstup třídy toString(): Kniha Jak zvládnout 4IT101 (David Král) je rezervováno čtenářem - Jarda Novák (25 přečtených knih) nebo Kniha Jak zvládnout 4IT101 (David Král) nemá čtenáře..

První část domácího úkolu je možné (a vhodné) udělat již po druhém cvičení.

druhá část

Do třídy Kniha přidejte metody equals() a hashCode() implementované tak, že dvě knihy jsou stejné, pokud mají stejné id.

Dále přidejte do projektu třídu EvidenceKnih s těmito metodami:

public boolean vlozKnihu(Kniha kniha) - která přidá knihu do evidence a to pouze v případě, že v seznamu ještě není kniha se stejným id. Metoda vrací true, pokud byla kniha do seznamu vloženo a false, jestliže již v seznamu taková kniha byla.

public Collection<Kniha> vratSeznamKnih() - vrátí seznam všech knih z evidence, metoda vrací vždy seznam, třeba i prázdný, nikdy hodnotu null!!

public Collection<Kniha> vratSeznamNevypujcenychKnih() - vrátí seznam knih z evidence, které nejsou zabrané(čtenář je null), pokud v seznamu žádná volná kniha není, vrátí prázdný seznam.

public Kniha vratKnihu(int idKnihy) - najde v evidenci knihu se zadaným id a vrátí její instanci, pokud taková kniha v evidenci není, vrátí hodnotu null.

public boolean obsahujeKnihu(int idKnihy) - zjistí zda se v evidenci nachází kniha se zadaným číslem, pokud se v evidenci taková kniha nachází, vrátí hodnotu true, jinak false.

Vašim úkolem je napsat k této třídě testy i implementaci.

Domácí úkol odevzdáváte do odevzdávárny, která je otevřená v InSISu. Odevzdání úkolu po termínu není možné.

domácí úkol Zadání pro adventuru (odevzdat do 9. 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. Tento text pak budete hráči zobrazovat při spuštění hry.
  • Plánek hry (obrázek), jaké prostory bude hra obsahovat a jak jsou propojeny.
  • 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

domácí úkol Práce se souborem (odevzdat do 11. 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 proběhla mezi jednou a třetí hodinou odpoledne. 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

domácí úkol Knihovna se streamy

Zadání je shodné se zadáním předchozí verze domácího úkolu Knihovna s tím rozdílem, že metody public Collection<Kniha> vratSeznamNevypujcenychKnih() a public Kniha vratKnihu(int idKnihy) musí být implementovány s lambda výrazy a streamy (datovody).

Navíc je třeba přidat možnost setřídit seznam knih podle jejich id, tj. sestupně. V implementaci použijte lamda výraz (je jedno zda budete implementovat Comparable nebo Comparator).

Mimořádný domácí úkol

Vaším úkolem je naprogramovat aplikaci simulující jednoduchý bankovní systém. Naimplementujte metody, které jsou na interfacu cz.vse.bankovniSystem.BankovniSystem. U každé metody je popis toho, jak se má chovat. Zároveň pro každou metodu udělejte test, který ověří její správnou funkčnost. Zdrojový archiv naleznete v aplikaci Teams -> Soubory -> Výukové materiály a jmenuje se bankovniSystem.zip . Odevzdání je klasicky do odevzdávárny v insisu.

V případě dotazů mi prosím napiště email či přímou zprávu v aplikaci Teams.