4. 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. Tantsupaar
Klassis Tantsupaar
on privaatsed isendiväljad poisi nime (String
) ja sünniaasta (int
) ning tüdruku nime (String
) ja sünniaasta (int
) jaoks. Nimeväljal on nii eesnimi (eesnimed) kui ka perenimi. Klassis on konstruktor. On ka vähemalt järgmised meetodid.
- Kõigi isendiväljade jaoks on vastavad
get
- jaset
-meetodid. - Isendimeetod (
int
-tüüpi), mis saab argumendina jooksva aasta aastaarvu (int
) ja tagastab vanema partneri vanuse. - Ilma argumentideta isendimeetod (
boolean
-tüüpi), mis näitab, kas tantsupartnerid on sündinud samal aastal. - Ilma argumentideta isendimeetod (
String
-tüüpi), mis tagastab perenimed (perenimi on nime viimane sõna) ühe sõnena, kus nimede vahel on tühik. - On ka meetod
toString
, mis näitab tantsupartnerite perenimesid eelmise meetodi abil.
Peaklassis (testklassis) luuakse erinevad tantsupaarid. Peaklassis testitakse ka erinevate isendimeetodite tööd.
2. Id-kaart
Klass IDKaart
sisaldab privaatset String
-tüüpi isendivälja id-kaardi numbri jaoks, privaatset String
-tüüpi isendivälja omaniku nime jaoks ja privaatset String
-tüüpi isendivälja isikukoodi jaoks. Klassis on konstruktor ja vähemalt järgmised meetodid.
- Kõigi isendiväljade jaoks on vastavad
get
- jaset
-meetodid. - Meetod
sugu
tagastab omaniku soo. Seda näitab isikukoodi esimene sümbol (kui isikukoodi esimeseks numbriks on 1, 3 või 5, siis tegu on mehega; kui 2, 4 või 6, siis tegu on naisega). - Meetod
sünnikuupäev
tagastab omaniku sünnikuupäeva kujul PP.KK.AAAA. Seda näitavad isikukoodi sümbolid 2-7. Selleks, et teada saada sünniaasta kahte esimest numbrit, tuleb kasutada ka isikukoodi esimest sümbolit. Rohkem infotVikipeediast
. - On ka meetod
toString
, mis aitab kaardi infot sobivalt väljastamiseks kujundada, seejuures peab meetodeidsugu
jasünnikuupäev
rakendades näitama ka lisainfot.
Peaklassis (testklassis) luuakse erinevad id-kaardid. Peaklassis testitakse ka erinevate isendimeetodite tööd.
3. Taara
See ülesanne on sellest ajast kui erinevad pudelid tegid meid rikkakamaks erinevalt.
Ühele sõpruskonnale meeldib koos limonaadi juua. Nüüd on kogunenud palju erinevaid limonaaditaarasid ning nad soovivad pudelid-purgid taarapunkti viia. Igaühele on viimiseks mingi hulk taarat. Pakenditähise järgi saab teada, kui palju vastava pudeli-purgi eest raha saab. Hetkel on tagatisraha vastavalt tähisele: A 0.04 eurot, B, C ja D 0.08 eurot. Pudelite-purkide andmed on kirjas failis järgmises formaadis:
Kelluke A Joosep Valge klaar B Teele Tarhun A Jaan Mõmmi C Joosep
Failis on igal real limonaadi nimi (võib olla mitmesõnaline), pakenditähis ja jooja nimi (ühesõnaline). Ülesanne seisneb taarat arvestava programmi koostamises. Programm peab vastama alltoodud nõuetele (isegi kui need kummalised tunduvad). Programm peab sisaldama klasse Taara
, Tagastaja
ning peaklassi. Pudeleid-purke kujutatakse Taara
-tüüpi isenditena. Taara tagastajate jaoks on klass Tagastaja
. Peaklassis luuakse tagastajad ja jaotatakse taara. Peaklassis testitakse ka erinevate isendimeetodite tööd.
1. Klassis Taara
on privaatsed isendiväljad joogi nime (String
), pakenditähise (char
) ja jooja (String
) jaoks. Klassis on konstruktor ja vähemalt järgmised meetodid.
- Kõigi isendiväljade jaoks on vastavad
get
-meetodid. - Staatiline meetod (
double
-tüüpi), mis saabchar
-tüüpi argumendi ning tagastab vastava pakenditähisega taara tagatisraha. Kui argument on erinev kui A, B, C või D, siis tagastatakse 0. Tagatisrahad on näidatud peaklassi vastavates muutujates (näiteksPeaklass.tagatisA
). - Parameetriteta isendimeetod (
double
-tüüpi), mis tagastab selle taara maksumuse. Meetodis rakendatakse eelmist meetodit. - On ka meetod
toString
, mis võimaldab taara infot mõistlikult ekraanil kujutada. Maksumus esitada sentides.
2. Klassis Tagastaja
on privaatne isendiväli tagastaja nime (String
) jaoks. Klassis on konstruktor. On ka vähemalt järgmised meetodid.
- Kõigi isendiväljade jaoks on vastavad
get
- jaset
-meetodid. - Meetod (
double
-tüüpi), mis saab argumendiks taara massiivi ja tagastab selle kogumaksumuse. - Meetod (
int
-tüüpi), mis saab argumendiks taara massiivi ja loendab, mitu nendest pudelitest-purkidest on tühjaks joodud tagastaja enda poolt. - On ka meetod
toString
, mis võimaldab tagastaja andmeid mõistlikult ekraanil kujutada.
3. Peaklassis on vähemalt järgmised muutujad ja meetodid.
- Neli staatilist muutujat (
double
, näiteks nimedegatagatisA
jt.), millega näidatakse tagatisraha suurused A 0.04, B, C ja D 0.08. - Staatiline (void-tüüpi) meetod, mis loeb argumendina antud failist andmed ja täidab nende põhjal argumentideks antud kolm listi limonaadide, pakenditähiste ja joojate nimedega. (Sõnekujulisest tähest saab
char
-tüübilise tähe meetodigacharAt(0)
.) Taara andmed on failis, mille formaat on ülalpool toodud. Pudelite-purkide arv failis ei ole teada (programm peaks töötama suvalise (ka tühja) failiga). - Peameetodis tehakse järgmised tegevused.
- Luuakse kolm
ArrayList
-tüüpi muutujat, milles ühes on limonaadide nimed, teises pakenditähised ja kolmandas jooja nimed. - Rakendatakse vastavat staatilist meetodit, mis väärtustab faili
taara.txt
põhjal vastavad listid. - Taara jaotatakse kolme ossa, st. luuakse 3
Taara[]
-tüüpi massiivi (massiivide pikkused sõltuvad listide pikkustest, kui failis oli 7 rida, siis massiivide pikkused võiksid olla 2, 2 ja 3). - Luuakse nii palju pudeleid-purke (
Taara
-tüüpi isendeid) kui palju andmeid on listides, kasutades andmeid vastavatest listidest. Järjest täidetakse ka taara massiivid. - Luuakse kolm tagastajat. Vähemalt ühe tagastaja nimi peab olema selline, mis on failis olemas.
- Iga tagastaja arvutab, kui palju saaks raha ühe osa taara viimisest. Igale tagastajale on erinevad osad (massiivid).
- Iga tagastaja peaks ka näitama, kui palju pudeleid-purke tema osast on tema poolt tühjaks joodud.
- Sobivates kohtades näidata isendite infot ja meetodite töö tulemusi ekraanil.
- Luuakse kolm
Andmete fail on aadressil http://kodu.ut.ee/~marinai/taara.txt
. Kopeerige see oma arvutisse.