15. kodutöö
1. Garaaž
Koosta klass Sõiduk
, mille konstruktori parameetriteks on sõiduki mark, sõiduki hind eurodes ja sõiduki kütusekulu 100 kilomeetri kohta. Klassis Sõiduk
peab olema ka meetod __str__, mis tagastab kogu info sõiduki kohta.
Koosta klassid Veoauto
, Sõiduauto
ja Mootorratas
, mis on kõik klassi Sõiduk
alamklassid. Kõigis klassides peavad olema järgmised meetodid.
- Meetod sõidu_maksumus, mis võtab argumendiks sõidu teepikkuse kilomeetrites ja selle põhjal tagastab sõidu maksumuse ümardatuna ühe komakohani. Veoauto puhul on kütuse liitrihind 1,8 eurot, sõiduauto puhul 1,9 eurot ja mootorratta puhul 1,85 eurot.
- Meetod hobujõud, mis väljastab ekraanile sõiduki hobujõunäitaja. Veoautol on 500 hobujõudu, sõiduautol 180 ja mootorrattal 85.
Koosta klass nimega Garaaž
, mille konstruktori parameetriks on sõidukite järjend. Klassis Garaaž
on ka meetod kuva, mis väljastab garaažis olevate sõidukite info. Iga sõiduki puhul peab meetod väljastama sõiduki tavalise info, selle järel sõiduki hobujõudude arvu ning lõpuks, rakendades meetodit sõidu_maksumus, mitu eurot kuluks antud sõidukil Tartu-Tallinna vahemaa läbimiseks (186 kilomeetrit).
Kõik sõidukid, mis tuleb garaaži lisada, on salvestatud faili sõidukid.txt. Sõiduki tüüp on eraldatud sõiduki infost tühiku, sidekriipsu ja tühikuga (" - "). Sõiduki info (mark, hind ja kütusekulu) on eraldatud üksteisest koma ja tühikuga (", "). Faili sõidukid.txt näidis:
Veoauto - Mann, 80000, 30 Mootorratas - Suzuki, 12000, 10.5 Veoauto - Scania, 72000, 35 Sõiduauto - Opel, 10000, 7.3 Sõiduauto - Toyota, 15000, 5.7
Põhiprogrammis loe failist sõidukid.txt sõidukite andmed ja lisa need garaaži. Seejärel kutsu välja garaaži meetod kuva.
Näidisväljund:
Garaažis on järgmised sõidukid: Mann, hind 80000 eurot, kütusekulu 100 km kohta 30.0 liitrit. Veoautol on 500 hobujõudu. Tartu-Tallinna vahemaa läbimiseks kulub 100.4 eurot. Suzuki, hind 12000 eurot, kütusekulu 100 km kohta 10.5 liitrit. Mootorrattal on 85 hobujõudu. Tartu-Tallinna vahemaa läbimiseks kulub 36.1 eurot. Scania, hind 72000 eurot, kütusekulu 100 km kohta 35.0 liitrit. Veoautol on 500 hobujõudu. Tartu-Tallinna vahemaa läbimiseks kulub 117.2 eurot. Opel, hind 10000 eurot, kütusekulu 100 km kohta 7.3 liitrit. Sõiduautol on 180 hobujõudu. Tartu-Tallinna vahemaa läbimiseks kulub 25.8 eurot. Toyota, hind 15000 eurot, kütusekulu 100 km kohta 5.7 liitrit. Sõiduautol on 180 hobujõudu. Tartu-Tallinna vahemaa läbimiseks kulub 20.1 eurot.
2. Plaatide laenutus
Koosta klass nimega Plaat
, mille konstruktori parameetriteks on plaadi nimi, žanr ja ilmumisaasta. Klassis Plaat
peab olema ka meetod __str__, mis tagastab kogu info plaadi kohta.
Koosta klassid nimega Rock
, Pop
ja Klassika
, mis on kõik klassi Plaat
alamklassid.
- Kõikides klassides peab olema konstruktor, mille parameetriteks on plaadi nimi ja ilmumisaasta. Konstruktor kutsub välja ülemklassi konstruktori, võttes plaadi žanriks klassile vastava žanri. Juhis: ülemklassi objekti annab käsk super().
- Kõikides klassides peab olema meetod maksumus, mis võtab argumendiks päevade arvu täisarvuna ja tagastab plaadi laenutamise maksumuse antud ajaperioodiks. Rockplaatide laenutus maksab 2,5 eurot päevas, pop-plaatide laenutus 1,7 eurot ja klassikaplaatide laenutus 4,9 eurot päevas.
Koosta veel üks klass nimega Plaadilaenutus
, mille konstruktori parameetriks on plaatide järjend. Klassis on ka meetod laenuta, mis esimese asjana küsib, mitu eurot on kasutajal laenutusse sisenedes. Seejärel annab meetod kasutajale võimaluse sisestada korduvalt järgmisi käske.
- K - kuvab ekraanile kõik plaadid, mis hetkel laenutuses olemas on.
- L nimi laenutusaeg - laenutab plaadi. Kui plaat on olemas ja kasutajal on laenutuseks piisavalt raha, siis lahutab selle summa kasutaja rahast maha ja kustutab plaadi järjendist. Kui plaat on olemas, aga raha pole piisavalt, siis väljastab sobiva teate. Kui sellise nimega plaati laenutuses ei ole, siis väljastab samuti sobiva teate.
- T nimi žanr ilmumisaasta - tagastab plaadi ehk lisab selle plaatide järjendisse. Võib eeldada, et kasutaja sisestab andmed korrektselt.
- V - väljub laenutusest ja lõpetab meetodi töö.
Enne iga käsku peab meetod väljastama ekraanile kasutajal oleva rahasumma.
Lisa plaadilaenutusse järgnevad kolm plaati ja katseta meetodit laenuta:
- "Nevermind", "Rock", 1991
- "Thriller", "Pop", 1982
- "Sümfoonia nr 40", "Klassika", 1788
Näidisväljund:
Mitu eurot on sul plaatide laenutamiseks? 50 ------------------------- Rockmuusika plaatide laenutus maksab 2.5 eurot päevas. Popmuusika plaatide laenutus maksab 1.7 eurot päevas. Klassikalise muusika plaatide laenutus maksab 4.9 eurot päevas. ------------------------- Käskude kirjeldused: K - kuva laenutuses olevad plaadid L <plaadi_nimi> <päevade_arv> - laenuta antud nimega plaat nii mitmeks päevaks T <plaadi_nimi> <plaadi_žanr> <plaadi_ilmumisaasta> - tagasta plaat V - välju laenutusest ------------------------- Raha jääk on 50 eurot. Sisesta käsk: K Plaat Nevermind, Rock, 1991 Plaat Thriller, Pop, 1982 Plaat Sümfoonia nr 40, Klassika, 1788 ------------------------- Raha jääk on 50 eurot. Sisesta käsk: L Thriller 30 Laenutuseks pole piisavalt raha! ------------------------- Raha jääk on 50 eurot. Sisesta käsk: L Thriller 25 Plaat Thriller laenutatud. ------------------------- Raha jääk on 7.5 eurot. Sisesta käsk: T Anima Mea Klassika 2021 Plaat Anima Mea tagastatud. ------------------------- Raha jääk on 7.5 eurot. Sisesta käsk: K Plaat Nevermind, Rock, 1991 Plaat Sümfoonia nr 40, Klassika, 1788 Plaat Anima Mea, Klassika, 2021 ------------------------- Raha jääk on 7.5 eurot. Sisesta käsk: V
Esita programmid
Esita ülesannete lahendused Moodle'i kaudu failidena kodu1.py ja kodu2.py.