Ongelma: kissa istuu puussa istuu ja naukuu kissa ja koira istuu Monestikko mikäkin sana esiintyy? -- 0) Oletko ymmärtänyt ongelman ja osaisitko itse vastata tuohon kysymykseen? 0: en tiedä 1: en 2: kyllä |30|1|1|0|1|2;1 -- 1) Miten lasketaan sanat 0: en tiedä 1: "tukkimiehen" kirjanpidolla: otetaan sana ja lisätään sen sanan lkm 2: monimutkaisella algoritmillä 3: kirjain kerrallaan 4: otetaan ensimmäinen sana ja katsotaan monestiko se esiintyy jne... |60|1|1|0|0|1;1 Piirrä: kissa istuu puussa ja naukuu 1 2 1 1 1 Valitse tarvittavat luokat, järjestyksellä ei väliä, paina OK -- 2) Tarvitaan luokat 0: en tiedä 1: Merkki 2: Sana 3: Sanat 4: Virke 5: Lause 6: Sivu |45|1|7|0|0|23;1 Valitse oikeat vaihtoehdot, järjestyksellä ei väliä, paina OK -- 3) Luokan Sana tehtäviin kuuluu 0: en tiedä 1: rivin jakaminen sanoiksi 2: kirjainten määrän laskeminen 3: tunnistaa onko tutkittava sana 4: etsiä tutkittava sana ja ilmoittaa sanalle laskurin lisäämisestä 5: laskurin ylläpito 6: tiedoston lukeminen 7: etsi pienin 8: poista pienin |90|1|8|0|0|35;1 Valitse oikeat vaihtoehdot, järjestyksellä ei väliä, paina OK -- 4) Luokan Sanat tehtäviin kuuluu 0: en tiedä 1: rivin jakaminen sanoiksi 2: kirjainten määrän laskeminen 3: tunnistaa onko tutkittava sana 4: etsiä tutkittava sana ja ilmoittaa sanalle laskurin lisäämisestä 5: laskurin ylläpito 6: tiedoston lukeminen 7: etsi pienin 8: poista pienin |90|1|8|0|0|146;1 Valitse yksi -- 5) Top down. Mikä kirjoitetaan (suunnitellaan) ensin. 0: en tiedä 1: Sana 2: Sanat 3: "lopullinen" pääohjelma 4: testipääohjelma Sana-luokalle 5: kirje joulupukille |45|1|1|0|0|3;1 Valitse järjestyksessä. Paina OK! -- 6) Valitse pääohjelman lauseet järjestyksessä 0: en tiedä 1: Sanat sanat; 2: Sana sana; 3: sana.lisaa(1); 4: sanat.lue_tiedosto("sanat.txt"); 5: sana.oletko(); 6: sana.nollaa(); 7: sanat.tulosta(System.out); 8: sanat.etsi_pienin(); 9: sanat = new Sanat(); |180|1|9|0|1|1947;1 Kirjoita: Sanat sanat; sanat = new Sanat(); sanat.lue_tiedosto("sanat.txt"); sanat.tulosta(System.out); Valitse yksi -- 7) Bottom up. Mikä testataan ensin. 0: en tiedä 1: Sana 2: Sanat 3: lopullinen pääohjelma 4: testiohjelma Sanat-luokalle 5: testiohjelma Sana-luokalle |30|1|5|0|0|5;1 Valitse tarvittavat metodit, järjestyksellä ei väliä, paina OK -- 8) Luokan Sana julkiset metodit (String sana) 0: en tiedä 1: oletko(sana) 2: aseta(sana) 3: konstruktori(sana) 4: kasittele_rivi(rivi) 5: lisaa() 6: lisaa(sana) 7: anna_rivi() 8: lue_tiedosto(tied_nimi) 9: sulje_tiedosto() |60|1|9|0|0|135;1;;15;1;;36;1 Kirjoita testipääohjelma Sana:lle Sana sana; System.out.println(sana); Valitse tarvittava määrä, järjestyksellä ei väliä -- 9) Mitä mieltä testiohjelmasta tällaisenaan 0: en tiedä 1: hyvä 2: "kaatuu" kun ajetaan 3: tulostaa kissa 4: sana pitäisi alustaa |45|1|9|0|0|4;1 -- 10) Mikä olisi hyvä alustus testiohjelmassa. 0: ei mitään 1: sana = "kissa"; 2: sana = 0; 3: sana = new; 4: sana = new Sana(); 5: sana = new Sana("kissa"); 6: sana = new FileReader(System.out); 7: sana = new Sana[10]; 8: sana = null; 9: sana = new StringBuffer("kissa"); |35|1|9|0|0|5;1 Lisää testipääohjelma: Sana sana = new Sana("kissa"); System.out.println(sana); sana.lisaa(); System.out.println(sana); if ( sana.oletko("kissa") ) System.out.println("on kissa"); Valitse tarvittavat metodit, järjestyksellä ei väliä, paina OK -- 11) Luokkaan Sana tarvitaan julkiset metodit (String s) 0: en tiedä 1: oletko(s) 2: aseta(s) 3: konstruktori(s) 4: kasittele_rivi(rivi) 5: lisaa() 6: toString() 7: anna_rivi() 8: lue_tiedosto(tied_nimi) 9: sulje_tiedosto() |60|1|9|0|0|1356;1 Valitse tarvittavat, järjestyksellä ei väliä. Paina OK! -- 12) Luokan Sana julkiset attribuutit 0: ei mitään 1: lkm 2: i 3: teksti 4: max_lkm 5: alkiot - taulukko 6: os - tietovirta johon tulostetaan 7: fi - tiedosto jota luetaan |60|1|7|0|0|0;1 Valitse tarvittavat, järjestyksellä ei väliä. Paina OK! -- 13) Luokan Sana attribuutit 0: ei mitään 1: lkm 2: i 3: teksti 4: max_lkm 5: alkiot - taulukko 6: os - tietovirta johon tulostetaan 7: fi - tiedosto jota luetaan |60|1|7|0|0|13;1 Kirjoita attribuutit lkm teksti Valitse järjestyksessä -- 14) Valitse attribuuttien tyypit järjestyksessä 0: int 1: char 2: double 3: String 4: StringBuffer 5: Sana 6: Sana-taulukko 7: Sanat 8: Sanat-taulukko |70|1|7|0|0|03;1 Kirjoita attribuutit int lkm; String teksti; -- 15) Vielä lisättävä (valitse yksi) 0: en tiedä 1: ei mitään 2: private 3: protected 4: public 5: int 6: void 7: double 8: String 9: StringBuffer |30|1|1|0|0|2;1 Lisää private int lkm; private String teksti; Kirjoita: __1__ Sana(_2_3_4) -- 16) Sana-Muodostajan tyyppi ja parametrit (valitse järjestyksessä) 0: en tiedä 1: rivi 2: Sana 3: boolean 4: char 5: String 6: double 7: int 8: void 9: ei mitään |60|1|4|0|0|95;1 Esittele public Sana(String s) { } Valitse tarvittavat oikeassa järjestyksessä. Paina OK -- 17) Sana-muodostajan sisältö 0: en tiedä 1: ei mitään 2: lkm = 0; 3: lkm = 1; 4: teksti = sana; 5: teksti = s; 6: lkm++; 7: i = 0; 8: i = 1; |60|1|3|0|0|25;1;;35;1;;56;1;;5;1 Kirjoita teksti = s; Kirjoita public _1_ oletko(_2_3_4_) -- 18) oletko-metodin tyyppi ja parametrit (valitse järjestyksessä) 0: en tiedä 1: rivi 2: Sana 3: boolean 4: char 5: String 6: double 7: int 8: void 9: ei mitään |90|1|3|0|1|35;1 Kirjoita public boolean oletko(String s) { return teksti.equalsIgnoreCase(s); } Kirjoita public _1_ lisaa(_2_3_4_) { } -- 19) lisaa-metodin tyyppi ja parametrit järjestyksessä 0: en tiedä 1: rivi 2: Sana 3: boolean 4: char 5: String 6: double 7: int 8: void 9: ei mitään |80|1|3|0|1|89;1;;79;1 Kirjoita public void lisaa() { } -- 20) lisaa-metodin sisältö 0: en tiedä 1: ei mitään 2: lkm = 0; 3: lkm = 1; 4: teksti = sana; 5: teksti = s; 6: lkm++; 7: i = 0; 8: i = 1; |60|1|3|0|0|6;1 Kirjoita public void lisaa() { lkm++; } public String toString() { return teksti + " " + lkm; } Aja Sana-testi -- 21) Testilähtöinen Bottom up. Mikä tehdään seuraavaksi 0: en tiedä 1: Sana 2: Sanat 3: lopullinen pääohjelma 4: testiohjelma Sanat-luokalle 5: testiohjelma Sana-luokalle |40|1|1|0|0|4;1 Kirjoita: public static void main(String[] args) { Sanat sanat = new Sanat(); sanat.lisaa("kissa"); sanat.lisaa("kissa"); sanat.lisaa("koira"); sanat.tulosta(System.out); sanat.kasitteleRivi("kissa, istuu kissa puussa"); sanat.tulosta(System.out); } Valitse tarvittavat metodit, järjestyksellä ei väliä, paina OK -- 22) Testin toteuttamiseksi luokkaan Sanat tarvitaan julkiset metodit 0: en tiedä 1: oletko(sana) 2: aseta(sana) 3: konstruktori 4: kasitteleRivi(rivi) 5: lisaa(sana) 6: tulosta(tietovirta) 7: annaRivi() 8: lueTiedosto(tied_nimi) 9: suljeTiedosto() |90|1|9|0|0|3456;1 Valitse tarvittavat, järjestyksellä ei väliä. Paina OK! -- 23) Luokan Sanat julkiset attribuutit 0: ei mitään 1: lkm 2: i 3: teksti 4: max_lkm 5: alkiot - taulukko 6: os - tietovirta johon tulostetaan 7: fi - tiedosto jota luetaan 8: alkiot - kokoelma |30|1|2|0|0|0;1 Valitse tarvittavat, järjestyksellä ei väliä. Paina OK! -- 24) Luokan Sanat attribuutit 0: ei mitään 1: lkm 2: i 3: teksti 4: max_lkm 5: alkiot - taulukko 6: os - tietovirta johon tulostetaan 7: fi - tiedosto jota luetaan 8: alkiot - kokoelma |90|1|2|0|0|15;1;;8;1 Kirjoita: ??? alkiot -- 25) Valitse Sanat attribuuttien tyypit järjestyksessä 0: int 1: char 2: double 3: String 4: StringBuffer 5: Sana 6: Sana-taulukko 7: Sanat 8: Sanat-taulukko 9: Collection|70|1|2|0|1|9;1 Kirjoita Collection alkiot = new ArrayList (); -- 26) Itse alkiot taulukon oliot 0: ei tarvita mitään 1: pitää luoda erikseen silmukassa 2: riittää luoda aina kun uusi alkio lisätään |45|1|1|0|0|2;1 Kirjoita testipääohjelma: Sanat sanat = new Sanat(); sanat.lisaa("kissa"); sanat.lisaa("kissa"); sanat.lisaa("koira"); sanat.tulosta(System.out); sanat.kasitteleRivi("kissa, istuu kissa puussa"); sanat.tulosta(System.out); Kirjoita public _1_ lisaa(_2_,_3_,_4_) { -- 27) Valitse Sanat lisaa metodin tyyppi ja parametrit järjestyksessä 0: int 1: char 2: double 3: String 4: StringBuffer 5: Sana 6: Sana-taulukko 7: Sanat 8: Sanat-taulukko 9: void |60|0|4|0|1|93;1 Kirjoita public void lisaa(String s) { } Ensin pitää etsiä onko sana jo valmiina. -- 28) Luontevin etsintäsilmukka 0: en tiedä 1: for 2: while 3: do-while 4: goto 5: ikuinen silmukka + poistuminen keskeltä 6: rekursio |30|1|2|0|0|1;1 Kirjoita for (Sana sana : alkiot) { if ( sana.oletko(s) ) { sana.lisaa(); return; } } Sana sana = new Sana(s); sana.lisaa(); alkiot.add(sana); Kirjoita public _1_ kasitteleRivi(_2_, _3_, _4_) { } -- 29) Sanat.kasitteleRivi metodin tyyppi ja paremetrit järjestyksessä 0: int 1: char 2: double 3: String 4: StringBuffer 5: Sana 6: Sana-taulukko 7: Sanat 8: Sanat-taulukko 9: void |60|0|4|0|1|93;1 Kirjoita public void kasitteleRivi(String rivi) { } -- 30) Millä rivi jaetaan osiin 0: en tiedä 1: indexOf + substring 2: StringTokenizer 3: append 4: StringBuilder |40|0|4|0|0|2;1 Kirjoita public void kasitteleRivi(String rivi) { String s; StringTokenizer st = new StringTokenizer(rivi," ,();.:[]{}+-"); while ( st.hasMoreTokens() ) { s = st.nextToken(); lisaa(s); } } public void tulosta(OutputStream os) { PrintStream out = Tiedosto.getPrintStream(os); for (Sana sana : alkiot) out.println(sana); } Testaa Sanat-luokkaa Kirjoita: public void lueTiedosto(String tied) throws IOException { BufferedReader fi = Tiedosto.avaa_lukemista_varten(tied); if ( fi == null ) throw new FileNotFoundException("Ei löydy: " + tied); } -- 31) lueTiedosto - millä silmukalla 0: en tiedä 1: for 2: while 3: do-while 4: goto 5: ikuinen silmukka + poistuminen keskeltä 6: rekursio |40|0|1|0|0|2;1 Kirjoita: String rivi; while ( ( rivi = fi.readLine() ) != null ) { kasitteleRivi(rivi); } -- 32) Miten fi.close() 0: ei saa kirjoittaa 1: saa kirjoitaa mutta ei ole pakko 2: on pakko kirjoittaa 3: kirjoitetaan vain jos output-tiedosto 4: kirjoitetaan vain jos tiedosto aukesi 5: on kirjoitettava finally lohkoon |40|0|1|0|0|5;1 Kirjoita: try { String rivi; while ( ( rivi = fi.readLine() ) != null ) { kasitteleRivi(rivi); } } finally { fi.close(); } Testaa pääohjelma -- 33) Mitä vielä puuttuu 0: ei mitään 1: automaattiset testit 2: käyttöliittymä 3: aikaa... |30|0|1|0|0|1;1