Mallivastaukset alla. Yleisesti ottaen pienistä syntaksivirheistä ja unohduksista ei otettu pisteitä pois. Toistuvista virheistä, kuten metodien paluutyyppien unohtamisesta, rankaistiin vain kerran. Tehtävänannossa oli epäselvä kohta: "Huomaa, että luokka ei saa päästää paistoaikaa alle nollan". Tämän voi tulkita kahdella tavalla: a) edistaAikaa asetaa paistoajan nollaksi, jos parametri on liian suuri b) edistaAikaa ei muuta paistoaikaa, jos parametri on liian suuri. Kumpikin tulkinta hyväksyttiin. Myöskään asetaPaistoaika-metodilta ei vaadittu parametrin tarkistusta, vaikka moni olikin huomannut sen tehdä. public class Uuni { private String nimi; private int paistoaika; public Uuni(String nimi) { this.nimi = nimi; // paistoaika-oliomuuttujan voi alustaa, muttei ole pakko. // int-oliomuuttja on oletusarvoisesti nolla } public int haePaistoaika() { return paistoaika; } public void asetaPaistoaika(int paistoaika) { if (paistoaika >= 0) { // Tarkistus ei pakollinen this.paistoaika = paistoaika; } // int-arvon turhasta palauttamisesta ei sakotettu, // jos se oli kirjoitettu oikein. } public boolean valmis() { return (paistoaika == 0); } public String toString() { return nimi + " - " + paistoaika + " min jäljellä"; // Pieniä tulostusvirheitä, kuten väliviivan puuttumista, // ei huomioitu. } public void edistaAikaa(int aika) { paistoaika -= aika; if (paistoaika < 0) { paistoaika = 0; } // Hyväksyttiin myös vastaukset, joissa paistoaikaa ei muuteta, // kun parametri on liian suuri. Tehtävänanto oli tässä epäselvä. } } import java.util.ArrayList; // Import-riviä ei huomioitu pisteytyksessä public class Leipomo { // Pienistä syntaksivirheistä ja mm. tyyppiparametrien ("") puuttumisesta // ei tullut yleisesti ottaen pistemenetystä. // Yleinen virhe oli alustaa ArrayList paikalliseen muuttujaan konstruktorissa. private ArrayList uunit = new ArrayList(); /* Vaihtoehtoinen konstruktoria käyttävä tapa: private ArrayList uunit; public Leipomo() { uunit = new ArrayList(); } */ public void lisaaUuni(Uuni uuni) { uunit.add(uuni); } public void edistaAikaa(int aika) { for (Uuni uuni : uunit) { uuni.edistaAikaa(aika); } } public Uuni etsiValmisUuni() { for (Uuni uuni : uunit) { if (uuni.valmis()) { return uuni; } // Todella yleinen virhe oli kirjoittaa tähän väliin // } else { return null; } } return null; } } public class Paaohjelma { public static void main(String[] args) { Uuni uuni1 = new Uuni("Seba HO-300-1"); Uuni uuni2 = new Uuni("Siemens HB43MB520B"); Uuni uuni3 = new Uuni("Bosch HBM53B550B"); uuni1.asetaPaistoaika(20); uuni2.asetaPaistoaika(10); uuni3.asetaPaistoaika(15); Leipomo leipomo = new Leipomo(); leipomo.lisaaUuni(uuni1); leipomo.lisaaUuni(uuni2); leipomo.lisaaUuni(uuni3); if (leipomo.etsiValmisUuni() == null) { System.out.println("Aluksi yksikään uuni ei ole valmis"); } leipomo.edistaAikaa(13); Uuni valmisUuni = leipomo.etsiValmisUuni(); System.out.println("Valmis uuni: " + valmisUuni); System.out.println(uuni1); System.out.println(uuni2); System.out.println(uuni3); } }