(logo:(c) Minna Majuri)
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.