15. praktikumi harjutused
1. Taluloomad
Koosta klass Taluloom
, mille konstruktori parameetriteks on looma nimetus, looma kaal kilogrammides ning looma vanus. Klassis Taluloom
peavad olema ka järgmised meetodid:
- Meetod toit, mis tagastab, mitu kilogrammi toitu peab loom päevas saama. Selleks korrutatakse looma kaal 0.2-ga ning ümardatakse ühe komakohani.
- Meetod pesu, mis tagastab, mitu korda nädalas peab looma pesema. Kuni 5-aastaseid loomi pestakse üks kord nädalas, 5 kuni 10-aastaseid loomi kolm korda nädalas ning vanemaid kui 10-aastaseid viis korda nädalas.
Koosta klassid Hobune
, Siga
ja Lammas
, mis on kõik klassi Taluloom
alamklassid. Kõikides klassides on meetod nimega hääl, millel argumente pole ning mis väljastab ekraanile vastava looma hääle: hobuse puhul "Hiii!", sea puhul "Röh-röhh." ja lamba puhul "Mää...".
Pärast klasside loomist koosta iga looma kohta üks objekt (üks hobune, üks sigaja üks lammas) ning iga objekti puhul kutsu välja meetod hääl, toit ja pesu.
2. Hooned
Koosta klass Inimene
, mille konstruktori parameetriteks on inimese vanus ja inimese kuupalk.
Koosta klass Hoone
, mille konstruktori parameetriteks on hoone tüüp, hoone kogupind ruutmeetrites ning hoone elanike järjend, kusjuures järjendi iga element on klassi Inimene
objekt. Klassis Hoone
peavad olema ka järgmised meetodid.
- Meetod __str__ (ehk hoone kuvamismeetod), mis tagastab kogu hoone info sõne kujul.
- Meetod keskmine_vanus, mis tagastab hoones olevate elanike keskmise vanuse ümardatuna täisarvuni.
- Meetod keskmine_palk, mis tagastab hoones olevate elanike keskmise palga ümardatuna kümnendikeni.
Koosta klassid Eramaja
, Kortermaja
, Ridaelamu
ja Hotell
, mis on kõik klassi Hoone
alamklassid. Kõikides alamklassides on järgmised meetodid.
- Meetod ruutmeetri_hind, mis tagastab hoone ruutmeetri hinna. Eramaja maksumus on 500000 eurot, kortermaja maksumus on 5000000 eurot, ridaelamu maksumus on 3000000 eurot ja hotelli maksumus on 10000000 eurot.
- Meetod elanikke_korrusel, mis tagastab keskmise elanike arvu korrusel. Eramajas on 1 korrus, kortermajas on 9 korrust, ridaelamus on 2 korrust ning hotellis on 9 korrust.
Koosta meetod elanikud, mis võtab argumendiks elanike arvu. Meetod moodustab järjendi, mis sisaldab klassi Inimene
tüüpi objekte ning neid peab olema täpselt sama palju, kui suur oli meetodile etteantud arv. Iga objekti puhul peab meetod juhuslikult valima elaniku vanuse ja palga, vanus vahemikust 0-100 ja palk vahemikust 600-6000.
Koosta iga alamklassi kohta objekt, luues elanike järjendi meetodi elanikud abil. Soorita eri meetodite väljakutsed kõikide alamklassidega ja võrdle tulemusi omavahel.
3. Marjapood
Koosta klass Mari
, mille konstruktori parameetriteks on marja nimetus ja marjade kogus kilogrammides. Klassis Mari
peab ka olema meetod __str__, mis tagastab kogu info marjade kohta.
Koosta klassid Maasikas
, Mustikas
ja Vaarikas
, mis on kõik klassi Mari
alamklassid. Kõikides klassides peavad olema järgmised meetodid.
- Meetod maksumus, mis võtab argumendiks ujukomaarvuna marjade koguse grammides, mida soovitakse osta, ja tagastab, mitu eurot läheb selline kogus marju maksma. Maasika kilohind on 9 eurot, mustikal 12 eurot ja vaarikal 11 eurot.
- Meetod mitu_marja, mis võtab argumendiks ujukomaarvuna ostetavate marjade koguse grammides, ja tagastab, mitu marja sellise koguse eest saadi. Üks kilo maasikaid sisaldab 125 marja, kilos mustikaid 425 marja ja kilo vaarikaid 260 marja.
Koosta veel üks klass nimega Marjapood
, mille konstruktori parameetriks on marjade järjend. Klassis Marjapood
on ka meetod pood, mis esimese asjana küsib, mitu eurot on kasutajal poodi sisenedes. Seejärel annab meetod kasutajale võimaluse sisestada järgnevaid käske.
- K - väljastab ekraanile kõik marjad (nimetus ja kogus kilogrammides), mis on hetkel marjapoes olemas.
- O nimetus kogus_grammides - osta näidatud marju näidatud koguses. Juhul kui klient andis käsule liiga palju/vähe argumente, peab meetod klienti sellest teavitama. Kui sellist marja poes ei leidu, siis peab samuti klienti sellest teavitama. Kui kliendil pole piisavalt raha sellise marja koguse ostmiseks või poes pole antud koguses marju olemas, siis peab klienti sellest teavitama. Juhul, kui kõik eelnevad tingimused on täidetud, siis väljastab meetod ekraanile, mitu eurot kulus kliendil marjade ostuks ja mitu marja ta selle ostu eest sai. Ostetud kogus lahutatakse poes olevast selle marja kogusest maha, samuti lahutatakse ostu maksumus kliendi rahasummast.
- L - klient lahkub poest ja meetodi töö lõpeb.
Kõikide muude käskude puhul peab programm teavitama kasutajat, et selline käsk ei ole lubatud. Enne iga käsu sisestamist peab kliendile kuvama tema rahasumma.
Lisa marjapoodi järgnevad kolm marja (nimetus, kogus kilogrammides) ja katseta meetodit pood:
- "Maasikas", 10
- "Mustikas", 7
- "Vaarikas", 4.5
Näidisväljund
Tere tulemast marjapoodi! Poes on olemas järgmised marjad: Maasikas - 10 kg Mustikas - 7 kg Vaarikas - 4.5 kg ------------- Saad anda järgmisi käske: K - kuva poes olevad marjad ja nende kogused O <marja_nimi> <kogus_grammides> - osta marju kindlas koguses L - lahku poest Mitu eurot sul on? 75 ------------------------- Raha jääk on 75 eurot. Sisesta käsk: O Jõhvikas 200 Sellist marja poes ei ole! ------------------------- Raha jääk on 75 eurot. Sisesta käsk: O VaarIKas 4000 Vaarikas läks sulle maksma 44.0 eurot ja kokku said 1040 marja. ------------------------- Raha jääk on 31.0 eurot. Sisesta käsk: O MustikAS 7000 Sul pole piisavalt raha! ------------------------- Raha jääk on 31.0 eurot. Sisesta käsk: O vaarikas 600 Seda marja (Vaarikas) poes nii palju ei ole. ------------------------- Raha jääk on 31.0 eurot. Sisesta käsk: L Nägemist!