Arvutiteaduse instituut
  1. Kursused
  2. 2019/20 kevad
  3. Objektorienteeritud programmeerimine (LTAT.03.003)
EN
Logi sisse

Objektorienteeritud programmeerimine 2019/20 kevad

  • Kodutööd ja praktikumid
  • Loengud
  • Kursuse korraldus
  • IDE juhendid
  • Silumisest
  • Edasijõudnute rühm

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- ja set-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- ja set-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 infot Vikipeediast.
  • On ka meetod toString, mis aitab kaardi infot sobivalt väljastamiseks kujundada, seejuures peab meetodeid sugu ja sü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 rikastasid erinevalt.

Ühele sõpruskonnale meeldib koos limonaadi juua. Nüüd on kogunenud palju erinevaid limonaaditaarat 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 saab char-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äiteks Peaklass.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- ja set-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 nimedega tagatisA 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 meetodiga charAt(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.

Andmete fail on aadressil http://kodu.ut.ee/~marinai/taara.txt. Kopeerige see oma arvutisse.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused