Cvičenia: 7. týždeň

Ciele cvičení:

  • Čo sú výnimky a ako ich odchytávať.
  • try-catch-finally.
  • Práca so súborovým systémom.
  • Zapisovanie do textových súborov.

Výnimky

  • Diskutujte, čo sú výnimky a na čo slúžia.
  • Na čo slúži metóda Integer.parseInt? Nájdite v dokumentácii, akú behovú výnimku môže hodiť?
  • Vytvorte triedu SmartTurtle, ktorá rozšíruje triedu Turtle. Do triedy SmartTurtle pridajte metódu stringToInt, ktorá transformuje znakový reťazec na číslo. Ak transformácia nevyjde (napr. reťazec nie je číselným reťazcom), metóda nech vráti hodnotu zadanú parametrom defaultValue.
public int stringToInt(String s, int defaultValue)

Práca so súbormi v adresároch

  • Na čo slúžia objekty triedy File (java.io.File)?

Vytvorte triedu TurtleCommander, ktorá rozširuje triedu Turtle. Pri všetkách nasledujúcich metódach uvažujeme len súbory priamo v zadanom adresári, t.j. nie v podadresároch.

  • Pridajte do triedy TurtleCommander metódu, ktorá vypíše názvy všetkých súborov a adresárov v zadanom adresári:
public void listDirectory(File adresar);
  • Pridajte do triedy TurtleCommander metódu, ktorá vráti počet súborov (nie adresárov) v zadanom adresári:
public int countFiles(File adresar);
  • Pridajte do triedy TurtleCommander metódu, ktorá vráti súčet veľkosti súborov (nie adresárov) v zadanom adresári:
public long totalSizeOfFilesInDirectory(File adresar);
  • Pridajte do triedy TurtleCommander metódu, ktorá overí, či sa v oboch zadaných adresároch nachádza nejaký súbor (pozor, nie adresár) s rovnakým menom:
public boolean containEqualFilenames(File adresar1, File adresar2)

Tresty

  • Do triedy TurtleCommander pridajte metódu punishment, ktorá do zadaného súboru vypíše reťazec zadaný počet krát:
public void punishment(File output, String message, int n)
Príklad použitia:
File file = new File("trest.txt");
studentUPJS.punishment(file, "Student chodi na cvicenia vzdy pripraveny!", 100);
  • Kde sa vytvorí súbor trest.txt?
  • Otvorte vytvorený súbor v textovom editore.
  • Porovnajte veľkosť vytvoreného súboru s počtom zapisovaných znakov.
  • Otvorte vytvorený textový súbor ako binárny súbor.

Kódy znakov

  • Do triedy TurtleCommander pridajte metódu generateUnicodeFile, ktorá do zadaného súboru vypíše znaky a ich kódy. Vypíšte iba znaky, ktorých kódy sú zo zadaného intervalu.
public void generateUnicodeFile(File output, int fromCode, int toCode)

Záznam kliknutí

Vytvorte triedu ClickPane, ktorá bude rozširovať triedu WinPane. Klikacia plocha nech funguje tak, že pri kliknutí do plochy sa mieste kliknutia nakreslí bodka náhodného polomeru medzi 2 až 5. Do triedy ClickPane pridajte metódu saveClicksToFile, ktorá ako parameter dostane názov súboru (alebo referenciu na objekt triedy File s názvom súboru). Táto metóda nech uloží do zadaného súboru informácie o všetkých nakreslených bodkách od vytvorenia plochy. Informácia o jednej bodke nech je v jednom riadku súboru a skladá sa z 3 čísel: x-ová súradnica stredu bodky, y-ová súradnica stredu bodky a polomer bodky.

Môžete predpokladať, že nikdy sa nespraví viac ako 1000 bodiek od vytvorenia kresliacej plochy (t.j. nemeňte veľkosť poľa po každom kliknutí).

public void saveClicksToFile(String output)
// alebo
public void saveClicksToFile(File output)

Príklad súboru:

100 121 3.5
10 252 2.5
241 139 4.0