11. praktikum

NB! Praktikumiülesandeid antakse alati varuga, et ka kõige kiirematel/kogenumatel lahendajatel jätkuks tegevust. Seega pole mõtet kurvastada, kui te ei jõua kõiki lahendada. Vaadake ülesanded rahulikult üle ja lahendage ära just need, mis tunduvad teile huvitavad ja/või parajalt jõukohased/väljakutsuvad (kui just teie praktikumijuhendaja pole teile soovitanud mingit konkreetset ülesannet).

  1. Üliõpilasele antakse aegajalt koduülesandeid ja aegajalt üliõpilane neid ka lahendab, kusjuures üliõpilasel on komme kodutöid nende andmise järjekorras lahendada. Koostada klass Kodutöö, milles on String-tüüpi isendiväli kodutöö kirjelduse kohta ja int-tüüpi isendiväli raskusastme (1-5) kohta. Ühises peaklassis luua vähemalt 5 kodutööd. Valida sobiv andmestruktuur kodutööde hoiustamiseks. Lisada kodutööd loodud andmestruktuuri. Lahendada kodutöid kuni tuleb kodutöö, mille raskusaste on 5. Seda ja järgmisi siis enam ei lahendata. Väljastada andmestruktuuris olevate kodutööde arv.
  1. Hanoi tornide mängus tuleb liigutada virn kettaid ühe pulga otsast teise otsa, kusjuures kettaid tohib liigutada vaid nii, et väiksem ketas pannakse suurema peale. Kokku on mängijal kasutada kolm pulka ja korraga tohib liigutada ainult mistahes virna kõige ülemist ehk kõige väiksemat ketast. (Antud ülesande jaoks pole mängu täpne sisu tegelikult oluline http://en.wikipedia.org/wiki/Tower_of_Hanoi). Luua klass Ketas, milles on int-tüüpi isendiväli ketta suuruse jaoks. Valida pulga (ketaste virna) simuleerimiseks sobiv andmestruktuur (mis rakendab LIFO (last-in-first-out) printsiipi) ja luua kaks virna. Luua kolm erineva suurusega ketast ja paigutada need suuruse järjekorras esimesse virna. (Ketaste suuruse järjekord määrake ise.) Liigutada esimese virna kõige pealmine ketas teise virna. Väljastada virnade andmed.
  1. Failis seatakse iga tähega vastavusse kood (fail on aadressil http://www.ut.ee/~marinai/morse.txt). Valida sobiv andmestruktuur ja lugedes failist luua see. Koostada mingi sõnum ja kasutades loodud andmestruktuuri see sõnum koodeerida.
  1. Koostada klass Töö, mis sisaldab andmeid remondifirmasse laekunud töö kohta. Klassis peaks olema isendiväli remonti vajava seadme liigi kohta (String) ning märge, kas on tegemist raske probleemiga (boolean). Peale objekti loomist peab olema võimalik lisada juurde andmeid töö tegemiseks kulunud aja kohta (minutites) ning töö teostaja kohta.

    Kirjeldada klass Remondifirma, milles on väljad kahe tööde järjekorra (Queue) jaoks, üks raskete tööde jaoks ning teine tavaliste tööde jaoks ning väli tehtud tööde nimekirja jaoks (List). Lisaks peavad klassis olema meetodid võtaTööSisse (paigutab argumendiks saadud Töö sobivasse järjekorda), annaTööTehnikule (mille boolean tüüpi argumendi sobibKaRaskeTöö abil näidatakse, kas töö võib olla raske ning meetod tagastab sobivast järjekorrast võetud Töö) ning meetod tehtud tööde registreerimiseks.

    Peaklassis demonstreerida loodud klasside kasutamist.
  1. Koostada klass Talu, millel on järgnevad väljad: lõhkumataPakud (int), mis näitab lõhkumata puupakkude arvu; menüü (List<String>), mis sisaldab vähemalt 3 toidu nimetust, ning kaloritabel (Map<String, Integer>), mis näitab toitude energiaväärtust kilokalorites.

    Klassis peab olema void-tüüpi meetod annaJärgmineLõhkumataPakk, mis kahandab lõhkumata pakkude arvu 1 võrra. Lisaks tuleb defineerida int-tüüpi meetod annaSüüa, mis valib menüüst juhuslikult mingi toidu ning tagastab valitud toidu energiaväärtuse.

    Peaklassis demonstreerida loodud klasside kasutamist.