Institute of Computer Science
  1. Courses
  2. 2025/26 fall
  3. Object-oriented Programming (Conversion Master in IT) (LTAT.03.003)
ET
Log in

Object-oriented Programming (Conversion Master in IT) 2025/26 fall

  • 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.

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment