4it101»Domaci Ukoly

Domaci Ukoly

Domácí úkoly pro letní semestr 2019/2020

domácí úkol Půjčovna lyží 6 bodů

Vytvořte prázdný projekt PujcovnaLyzi a v něm vytvořte dvě třídy: Lyze a Zakaznik.

Třída Zakaznik bude mít tři datové atributy, všechny typu String: jmeno, prijmeni a adresa. Napište konstruktor, kterým zadáte všechny tři údaje, getry na všechny tři údaje a setr na adresu. Metodu toString() naimplementujte tak, že bude vracet jméno a příjmení zákazníka.

Třída Lyže bude mít atributy inventarniCislo typu int, typLyzi typu String, delka typu int a zakaznik typu Zakaznik. Konstruktor, kterým bude zadáno identifikační číslo, typ a délka. Hodnota datového atributu zakaznik bude po vytvoření nových lyží null. Napište getry na všechny atributy a setr na zakaznika. Metoda toString() bude vracet text obsahující inventární číslo, typ lyží a pokud jsou lyže půjčené slovo "půjčeno" a jméno a příjmení zákazníka jinak slovo "volné" např: 21 běžky půjčeno Jan Novák nebo 54 carvingové volné.

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

druhá část

Do třídy Lyze přidejte metody equals() a hashCode() implementované tak, že dvoje lyže jsou stejné, pokud mají stejné inventární číslo.

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

public boolean vlozLyze(Lyze lyze) - která přidá lyže do evidence a to pouze v případě, že v seznamu ještě nejsou lyže se stejným inventárním číslem. Metoda vrací true, pokud lyže byly do seznamu vloženy a false, jestliže již v seznamu byly a tudíž je znovu nelze vložit.

public Collection<Lyze> vratSeznam() - vrátí seznam všech lyží s evidence, metoda vrací vždy seznam, třeba i prázdný, nikdy hodnotu null.

public Collection<Lyze> vratSeznamVolnychLyzi() - vrátí seznam lyzi s evidence které nejsou půjčené(zakaznik je null), pokud v seznamu žádné volné lyže nejsou, vrátí prázdný seznam.

public Lyze vratLyze(int inventarniCislo) - najde v evidenci lyže se zadaným inventárním číslem a vrátí na ně odkaz, pokud takové lyže v evidenci nejsou, vrátí hodnotu null.

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 Testy a implementace projektu Tvary 6 bodů

Stáhněte si projekt Tvary. Pozor jedná se o jiný projekt než ten pro kreslení tvarů! Projekt nelze ani přeložit, protože třída Ctverec podle hlavičky implementuje rozhraní ITvar,ale nemá implementovány odpovídající metody. Doplňte tyto implementace jako "hloupé" - prázdné (obdobně jako v projektu na cvičení). Dále vytvořte třídy Obdelnik a Trojuhelnik. Všechny tyto třídy budou implementovat rozhrani ITvar, tj. budou mít metody:

  • double obsah();
  • double obvod();
  • double polomerOpsaneKruznice();

Parametry pro vytvoření konkrétního geometrického tvaru se budou zadávat přes konstruktor. Navrhněte si sami vhodné údaje pro vytvoření příslušného tvaru (např. u trojúhelníka si zvolte, zda budou zadány tři strany či dvě strany a úhel či jiná skupina parametrů). Jako vstupní parametr by se nemělo zadávat něco, co lze spočítat z jiných zadaných parametrů (např. u trojúhelníku byste neměli chtít zadat tři strany a navíc výšku - výšku lze spočítat z velikosti tří stran).

Ke každé z těchto tříd vytvořte testovací třídu, která budou ověřovat správnost metod obsah(), obvod() a polomerOpsaneKruznice(). V testech používejte přesnost aspoň na 5 platných míst. Pokud na základě zadaných údajů (např. délka strany čtvertce -7, nebo trojúhelník se stranami 2, 2 a 4) nelze daný tvar vytvořit, vrátí všechny metody hodnotu Double.NaN. Pro každý tvar byste měli otestovat několik variant. Například pro čtverec by to mohly být tyto:

     strana : 5, obvod: 20, obsah: 25, poloměr opsané kružnice: 3,53553
     strana : -1, obvod: Double.NaN, obsah: Double.NaN, poloměr opsané kružnice: Double.NaN

V první fázi napište "prázdou" implementaci a testy, projekt zabalte do zipu a vložte jako první soubor do odevzdávárny. Zatím neodevzdávejte!!!

Doplňte implementaci, tak aby testy prošly. Budete potřebovat použít metody třídy Math. Projekt znovu zabalte a vložte jako druhý soubor do odevzdávárny. Nyní potvrďte odevzdání.

domácí úkol Veterina 3 body

Podle pokynů ze cvičení doplňte projekt Veterina (bude obsahovat vše, co se dělalo na cvičení a jednu novou metodu zadanou v rámci cvičení a její test)

domácí úkol Adventura doplnění vítězství 3 body

Podle pokynů ze cvičení doplňte do původní adventury s Karkulkou výhru, když dojde k babičce.

domácí úkol Zadání pro adventuru 4 body

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 5 bodů

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

domácí úkol Půjčovna lyží se streamy 5 bodů

Zadání je shodné se zadáním předchozí verze domácího úkolu Půjčovna lyží s tím rozdílem, že metody public Collection<Lyze> vratSeznamVolnychLyzi() a public Lyze vratLyze(int inventarniCislo) musí být implementovány s lambda výrazy a streamy (datovody).

Navíc je třeba přidat možnost setřídit seznam lyží podle inventárního čísla. V implementaci použijte lamda výraz (je jedno zda budete implementovat Comparable nebo Comparator).