Ohjelmointi 2 / 2007		Demot
 
Demo 8 / 5.3
Tästä alkaa uusi demojakso ja nyt laskennallinen maksimi joka kerta on 8 tehtävää. Enää ei siis ole mahdollista kerätä yli 100% (eikä tarvitse :-).  Ja JUnit testit joka tehtävään joihin se on mielekkäästi mahdollista (merkitty (T)).
1*2.
          Täydennä edellisen demon tehtävän 7.7-8 vastaus 
Toni.java (vaihda nimi 
Makihyppy-luokaksi)kunnon olio-ohjelmaksi niin, että seuraava testiohjelma toimii (huom! kaikkien "ominaisuuksien" ei tarvitse olla attribuutteina) (ks. 
Java-kuva)
 
  public void kisa() {
    Kilpailija toni = new Kilpailija("Toni",3);
    Kilpailija matti = new Kilpailija("Matti",7);
    toni.tulosta();
    matti.tulosta();
    toni.setPituus(1,107);
    toni.setPituus(2,100);
    toni.setTuomari(2,1,19.0);
    toni.setTuomari(2,2,18.0);
    toni.setTuomari(2,3,19.5);
    toni.setTuomari(2,4,18.0);
    toni.setTuomari(2,5,20.0);
    matti.setPituus(1,125);
    matti.setTuomari(1,1,20.0);
    matti.setTuomari(1,2,20.0);
    matti.setTuomari(1,3,20.0);
    matti.setTuomari(1,4,20.0);
    matti.setPituus(2,109);
    matti.setTuomari(2,1,20.0);
    matti.setTuomari(2,2,20.0);
    matti.setTuomari(2,3,20.0);
    matti.setTuomari(2,4,20.0);
    toni.tulosta();
    matti.tulosta();
  }
  public static void main(String[] args)  {
    Makihyppy kisa = new Makihyppy();
    kisa.kisa();
  }
3*.
          Muuta demotehtävän 7.4 vastaus 
Kirje.java sellaiseksi, että kahden taulukon sijasta onkin vain yksi taulukko, jonka alkioina on 
Hinta-luokka (ominaisuudet 
hinta ja 
paino). Kirjoita myös lisäksi funktio 
double postimaksu(int paino). (T)
 
         Toteuta vielä siten, että on yksi 2-ulotteinen taulukko (n x 2), jonka 1. sarakkeessa (sarake 0) on paino reaalilukuna ja toisessa sarakkeessa (sarake 1) hinta reaalilukuna. (T)
4*5.
          Luennolle tehtiin ohjelma 
Aanestys3.java johon kuului 
Vaihtoehdot.java ja 
Valinta.java. Yksi vika on siinä, että 
Vaihtoehdot
-luokassa on sekä tietorakenteen käsittely että käyttöliittymä samassa. Erota luokasta kaksi luokaa: 
Vaihtoehdot ja 
AanestysLiittyma, jossa edellinen hoitaa kaiken tietorakenteeseen liittyvät tehtävät ja jälkimmäinen kaiken käyttöliittymään liittyvät tehtävät. (T Vaihtoehdot)
 
6*.
          Kirjoita aliohjelma 
matriisin_suurin, joka palauttaa 2-ulotteisen matriisin suurimman alkion. (T)
 
7.
          Edellisen kerran tehtävän 7.8 vastauksen 
Rajat.java funktiota 
summa käyttäen kirjoita aliohjelma 
matriisin_
summa, joka laskee 2-ulotteisen reaalilukumatriisin summan (älä kopioi, vaan kutsu funktiota, muista että matriisi on taulukko riveistä!). (T)
 
8.
          Ota selvää miten päivämäärä saadaan selville 
Javan:n kirjastokutsuilla. Kirjoita metodi 
paivays, jolla saadaan nykyinen päiväys selville 
Pvm2.java
:n Pvm2 tyyppiseen olioon. Muuta tarvittaessa myös luokan muodostaja ja 
alusta-metodi sellaiseksi, että jos alustuksessa ei anneta kaikkia arvoja, arvona käytetään nykypäiväystä puuttuville arvoille (pois saa jättää oikealta):  (T, pitää muuttaa 
Pvm2Test-luokkaa hieman) Esimerkiksi:
 
  Pvm2 tammi2005 = new Pvm2(1,1,2005)=>  1.1.2005
  Pvm2 tammi2007 = new Pvm2(1,1); // =>  1.1.2007
  Pvm2 maalis2007 = new Pvm2(1);  // =>  1.3.2007
  Pvm2 tanaan = new Pvm2();       // =>  5.3.2007
                                  // (testattu 5.3.2007)
    for (int i=0; i<kerho.getJasenia(); i++) {
      Jasen jasen = kerho.anna_jasen(i);
      jasen.vastaa_aku_ankka();  // esim. näin voitaisiin muuttaa
      tulosta("Jäsen nro: " + i);
      tulosta(System.out,jasen);
      tulosta("");
    }
         Mieti ja toteuta millainen pitäisi olla metodin anna paluuarvo, jotta metodia käyttävät eivät voisi mitenkään "pilata" palautetun jäsenen arvoa. Vinkki: muista rajapinnat. 
G5-7
         Luokka 
AstiaPeli (tai B1-2 kohdassa tehty luokka) on vaikea testata koska käyttöliittymä ja datan käsittely on samassa luokassa.  Erota erikseen käyttöliittymäluokka ja datankäsittelyluokka ja tee sitten 
JUnit testit kaikille muille luokille paitsi käyttöliittymä-luokalle.