3. praktikum. Harjutused.
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. Seade
Klass Seade
sisaldab privaatseid isendivälju koodi (int
), nimetuse (String
) ja ilma käibemaksuta hinna (double
) jaoks. Lisaks on klassis staatiline muutuja (double
), mis määrab käibemaksuprotsendi, olgu selle väärtuseks 22. Klassis on konstruktor. Klassis on vähemalt järgmised meetodid.
- Kõigi isendiväljade jaoks on vastavad
get
- jaset
-meetodid. - Meetod
kmhind
(double
-tüüpi), mis tagastab hinna arvestades käibemaksuga. (Kui käibemaks on nt. 22%, siis 100 eurose käibemaksuta hinna korral on käibemaksuga hind 122 eurot.) - On ka meetod
toString
, mis võimaldab seadme andmeid mõistlikult ekraanil kujutada, näidates ka hinda käibemaksuga. (Kasutada vastavat meetodit.)
Peaklassis (testklassis) luuakse erinevad seadmed. Seadmete andmed väljastatakse ekraanile.
2. Staatiline segadus
Proovige käivitada järgnevat koodi. Miks kompileerimine ebaõnnestub? Muutke koodi nii, et programm töötaks ootuspäraselt. (Vihje: static
võtmesõnade lisamine on vale lahendus!)
public class Isik { private String nimi; private double pikkus; public Isik(String isikuNimi, double isikuPikkus) { nimi = isikuNimi; pikkus = isikuPikkus; } public int suusakepiPikkus() { return (int) Math.round(0.85 * pikkus * 100); } public static void main(String[] args) { System.out.println("suusakepi pikkus on " + suusakepiPikkus()); } }
3. Reisid
1. Klassis Lennuk
on privaatsed isendiväljad nime (String
), keskmise kiiruse (double
) ja maksimaalse reisijate arvu (int
) jaoks. Klassis on konstruktor. Klassis on vähemalt järgmised meetodid.
- Kõigi isendiväljade jaoks on vastavad
get
- jaset
-meetodid. - On ka meetod
toString
, mis võimaldab lennukit mõistlikult ekraanil kujutada.
2. Klassis Reis
on privaatsed isendiväljad reisi sihtpunkti (String
), sihtpunkti kauguse (int
) ja lennuki (Lennuk
) jaoks ning müüdud piletite arvu (int
) jaoks. Klassis on konstruktor. Klassis on vähemalt järgmised isendimeetodid.
- Kõigi isendiväljade jaoks on vastavad
get
-meetodid. - Meetod (
int
-tüüpi), mis tagastab antud reisi kestvuse minutites. (Arvutustes kasutada lennuki keskmist kiirust.) - Meetod (
int
-tüüpi), mis tagastab antud reisi vabade kohtade arvu (arvestades lennukis olevate kohtade arvu ja müüdud piletite arvu). - On ka meetod
toString
, mis võimaldab reisi mõistlikult ekraanil kujutada.
3. Peaklassis luuakse vähemalt kaks lennukit (nt lennuk Fokker F50, mille keskmine kiirus on 530 km/h ning maksimaalne reisijate arv on 46, ja BN-2, mille keskmine kiirus on 170 km/h ning maksimaalne reisijate arv on 9) ja vähemalt kolm reisi. Peaklassis testitakse ka erinevate isendimeetodite tööd (vastavate isendimeetodite abil leida reiside kestvusi ja vabade kohtade arve).
4. Hekk
1. Klassis Põõsas
on privaatsed isendiväljad põõsa kõrguse (double
) ja laiuse (double
) jaoks. Klassis on konstruktor ja vähemalt järgmised meetodid.
- Kõigi isendiväljade jaoks on vastavad
get
- jaset
-meetodid. - Meetod (
double
-tüüpi), millel pole argumente ja mis tagastab kõrguse prognoositava aastajuurdekasvu, mis on juhuslik arv vahemikust 0 kuni 0,1*kõrgus. (Ümardada pole vaja.) - On ka meetod
toString
, mis võimaldab põõsa andmeid mõistlikult ekraanil kujutada. Eelmise meetodi abil näidatakse ka prognoositav aastajuurdekasv.
2. Klassis Hekk
on isendiväljad heki nime (String
) ja selles hekis olevate põõsaste massiivi jaoks (Põõsas[]
). Klassis on konstruktor ja vähemalt järgmised meetodid.
- Meetod, mille tagastustüübiks on
double
ja mis tagastab hekis oleva kõige kõrgema põõsa kõrguse. - Meetod, mille tagastustüübiks on
double
ja mis tagastab heki pikkuse ehk hekis olevate põõsaste laiuste summa. - On ka meetod
toString
, mis võimaldab heki andmeid mõistlikult ekraanil kujutada, tuues välja heki nime, kõige kõrgema põõsa kõrguse ja heki pikkuse. (Kasutada vastavaid meetodeid.)
3. Peaklassis tehakse järgmised tegevused.
- Luuakse viis põõsast (
Põõsas
-tüüpi isendit). - Kõikidest
Põõsas
-tüüpi isenditest tehaksePõõsas[]
-tüüpi massiiv. (Massiivi võib ka enne põõsaid luua ja järjest täita.) - Luuakse üks
Hekk
-tüüpi isend kasutades argumendina eelmainitud massiivi. - Heki andmed väljastatakse ekraanile.
- Tsükli abil kuvatakse massiivist põõsad ekraanile.