Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen päivämäärä sekä nimesi, henkilötunnuksesi ja allekirjoituksesi. Jokainen tehtävä on 10 pisteen arvoinen.
staattinen alustuslohko (static initialization block) käännösyksikkö (compilation unit)
olion luonti - luokan lataaminen rajapintaluokka (interface) - abstrakti luokka
SyottoRiviTiedosto(String tdsto)Konstruktori saa parametrina tiedostonimen. Luokka pitää huolen tilanteesta, jossa tiedostoa ei löydy (kaataa ohjelman!). Luokan käyttäjän ei siis tarvitse tähän varautua.
SyottoRiviTiedosto-luokassa on metodi:
public String rivi() // syöttötiedoston seuraava riviMetodi palauttaa arvon null, jos tiedosto on loppu.
a) Laadi luokalle SyottoRiviTiedosto aliluokka Abc, joka täydentää yliluokkaansa ainakin metodein
int joLuettu() // jo luettujen rivien lukumäärä String viimeRivi() // viimeksi luettu rivi void siivoaRivi() // korvaa kaikki viimeksi luetun rivin // kiroilumerkit '#', '@', '%', '&' // sensuurimerkillä '*'b) Ohjelmoi sovellus Sensuroi, joka luokkaa Abc käyttäen sensuroi tiedoston kaunokirja.txt. Sensuroitu versio tulostetaan standarditulostusvirtaan. Tekstin jälkeen tulostetaan myös ns. paheellisuusindeksi, joka on muutettujen rivien prosenttiosuus kaikista riveistä.
public class Lista { int tieto; Lista linkki; }Käytä tätä määrittelyä seuraavissa tehtävissä:
a) Ohjelmoi metodi, joka luo linkitetyn listan n:stä peräkkäisestä kokonaisluvusta (ykkösestä alkaen). Metodi palauttaa arvonaan listan.
b) Ohjelmoi metodi, joka palauttaa arvonaan parametrina saamansa listan pituuden.
Miten luokkaa L muuttamatta X saadaan tarkoittamaan kutakin tapausta (3kpl)? Voidaanko L:ää muuttaen viitata jotenkin kaikkiin kolmeen tapaukseen?
Pohdi asiaa import-ilmauksen käytön ja näkyvyydensäätelyn kannalta.
int[] metodiA(int a) {return new int[a];} String metodiB(char b) {return "**"+b+"**";} void metodiC(double c) {System.out.println(2*c);}Tee OyAb-luokalle jokin aliluokka, joka korvaa (override) metodiA:n, perii metodiB:n ja kuormittaa (overload) metodiC:n.