Arvutiteaduse instituut
  1. Kursused
  2. 2025/26 sügis
  3. Objektorienteeritud programmeerimine (IT mitteinformaatikutele) (LTAT.03.003)
EN
Logi sisse

Objektorienteeritud programmeerimine (IT mitteinformaatikutele) 2025/26 sügis

  • Kodutööd ja praktikumid
  • Loengud
  • Kursuse korraldus
  • IDE juhendid
  • Silumisest

9. 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. Kodeering

Ülesande eesmärk on katsetada, mis juhtub faili lugemisel ja kirjutamisel erinevate kodeeringute kasutamisel. Käivita meetod Charset.defaultCharset() ja prindi tulemus välja. Windowsi puhul on tulemus tavaliselt windows-1257, linux ja mac puhul tavaliselt UTF-8, aga see sõltub konkreetse masina seadistusest. Seda kodeeringut kasutatakse siis, kui programmis kodeering määramata jätta.

Koosta programm kodeeringute katsetamiseks. Programm kirjutab tekstifaili, mille sisu on "Andje käsi väsis ärä, võtje käsi ei väsi kunagi". Faili kirjutamisel kodeeringut mitte määrata (kasutatakse default charset ehk vaikekodeeringut). Seejärel loeb programm sama tekstifaili sisse. Sisselugemisel kasutada vaikekodeeringust erinevat kodeeringut - kui defaultCharset() tagastas windows-1257, siis kasuta UTF-8 ja vastupidi. Proovi programmi käivitada ja seleta programmi väljundit. Muuda programmi nii, et faili kirjutamisel kasutatakse vaikekodeeringust erinevat kodeeringut ja faili lugemisel ei määrata kodeeringut (kasutatakse vaikekodeeringut). Seleta programmi väljundit.

Vihje: Failide kodeeringut seletati täpsemalt 4. praktikumis.

2. Paroolid

Koostada peaklassi meetod, mis otsib argumendina antud failist paroolid ja kirjutab need faili paroolid.txt. Parool on ühesõnaline ja asub sõne " parool: " järel samal real. Näidisfail on aadressil http://www.ut.ee/~marinai/peidetud.txt ja see tuleks salvestada oma arvutisse. Peameetodis rakendada seda meetodit.

3. Puhverdatud vood

Kirjutada programm, mis kirjutab käsureal sisestatud sõne BufferedWriter klassi abil faili, seejärel loeb faili sisu BufferedReader abil sisse ja väljastab selle ekraanile. Kasuta UTF-8 kodeeringut. Muuda koodi nii, et BufferedWriter objekt jääb sulgemata ja käivita programm uuesti. Kontrolli, kas faili kirjutati õige sisu.

4. Voo sulgemine

Ülesande eesmärk on katsetada, mis juhtub, kui faili korralikult ei suleta. Erinevate operatsioonisüsteemide puhul tekivad erinevad probleemid. Lahenda oma op-süsteemile vastav alamülesanne.

Windowsi kasutajad: Koosta programm, mis avab käsureal antud nimega faili (nt FileInputStream abil) ja jätab faili lahti. Seejärel küsib programm kasutajalt System.in kaudu mõne nalja. Käivita programm ja jäta see käima (nalja ootama). Proovi programmis avatud faili Windowsi File Explorer abil ümber nimetada. Mis veateate tekib? Muuda programmi nii, et enne nalja küsimist fail suletakse. Käivita programm uuesti ja proovi nüüd faili ümber nimetada.

Linux/Mac kasutajad: Koosta programm, mis avab käsureal antud nimega faili (nt FileInputStream abil). Salvesta avatud voo objekt mingisse ArrayListi. Seejärel ava sama fail uuesti (uus FileInputStream) ja lisa samasse listi. Korda seda lõputult. Mitu faili suudab programm avada, enne kui ta kokku jookseb? Mis veateatega programm kokku jookseb? Muuda programmi nii, et voog suletakse enne listi lisamist. Mitu faili programm nüüd avada suudab?

5. Inimene

Luua klass Inimene, mis sisaldab isendivälju eesnime, perenime ja laste nimede listi jaoks ning konstruktorit, mis väärtustab vastavad väljad. Peaklassis luua üks Inimese isend ja kirjutada see faili kasutades voogu DataOutputStream. Luua uus Inimese isend saades selleks alginfo voo DataInputStream abil. Andmed kuvada ekraanil enne faili kirjutamist ja pärast failist lugemist. Inimese sisse lugemine ei peaks tegema eeldusi laste nimede arvu kohta (laste arv peaks failis sisalduma).

6. Tagurpidi

Koostada peaklassi meetod, mis loeb faili FileInputStream kasutades sisse ja kirjutab selle FileOutputStream kasutades tagurpidi järjekorras uude faili välja. Meetod ei tohi eeldada, et tegu on tekstifailidega (mitte kasutada Scanner, Reader ega Writer klasse). Peameetodis rakendada seda meetodit.

7. Peidetud andmed

Faili andmetefail.txt alguses on antud (peidetud kujul) üks arv (long-tüüpi), mis määrab asukoha samas failis, kus on peidus üks täisarv (int-tüüpi). Kirjutage programm, mis kasutades klassi RandomAccessFile loeb etteantud failist vastava arvu ja väljastab selle ekraanile. Fail on aadressil http://www.ut.ee/~eno/andmetefail.txt ja see tuleks salvestada oma arvutisse. Kasuks tulevad meetodid readLong, seek ning readInt klassist RandomAccessFile.

  • 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