Aki Reijonen 3.11.2009 ---------------------- /* Tehtävä 1 */ public class Saatio { private double varat; private double tuet; public Saatio(double varat, double tuet) { this.varat = varat; // ei sallita negatiivisia arvoja if (tuet < 0) { this.tuet = 0; } else { this.tuet = tuet; } } public double getVarat() { return this.varat; } public double getTuet() { return this.tuet; } public double getTase() { return this.varat + this.tuet; } public void varallisuusmuutos(double määrä) { this.varat += määrä; } public boolean valtioltaTukea(double määrä) { if (määrä < 0) { return false; } this.tuet += määrä; return true; } public double siirräTukeaVaroihin(double määrä) { // jos määrä on negatiivinen, ei tehdä mitään eli siirrettiin 0 if (määrä < 0) { return 0; } // jos yritetään siirtää enemmän kuin on tukia, // asetetaan siirrettäväksi niin paljon kuin on if (määrä > this.tuet) { määrä = this.tuet; } this.tuet -= määrä; this.varat += määrä; return määrä; } public String toString() { return "Säätiö(varat=" + this.getVarat() + ", tuet=" + this.getTuet() + ", tase=" + this.getTase() + ")"; } public static void main(String[] args) { Saatio s = new Saatio(500, -1000); // tuet=0, sillä annettiin negatiivinen System.out.println(s); // kutsuu s.toString() s.varallisuusmuutos(1000); System.out.println("Lisättiin 1000, uudet varat:" + s.getVarat()); // 1500 // ei onnistu System.out.println("Saadaanko valtiolta tukea -500:" + s.valtioltaTukea(-500)); System.out.println(s); // ok System.out.println("Saadaanko valtiolta tukea 1000:" + s.valtioltaTukea(1000)); System.out.println(s); System.out.println("Yritetään siirtää -200, Siirretty " + s.siirräTukeaVaroihin(-200)); System.out.println(s); System.out.println("Yritetään siirtää 1500, Siirretty " + s.siirräTukeaVaroihin(1500)); System.out.println(s); } } /* Arvosteluperusteita: Pääohjelma, konstruktori ja rakenne 6p: - Jäsenmuuttujat määritelty oikein 1p - Konstruktori toimii oikein 2p ... mutta vain positiivisilla tukisäiliöillä 1p - Pääohjelma olemassa, luo säätiön ja tekee sillä jotain järkevää 3p: Yleisimmät virheet: - ongelmia säätiön luomisessa -1p - tulostuksessa virhe tai se puuttuu kokonaan -1p. Yleisimmät: - System.out.println(luotuSaatio.toString) - System.out.println(luotuSaatio()) Tämän lisäksi yksittäisiä pisteitä saattoi lähteä rakenneongelmista, esim. static-määreistä ja ongelmista luokan määrittelyssä. Aika yleistä oli että luokan määritelmä alkoi "class Saatio(double varat, double tuet) {" ja erillistä konstruktoria ei oltu määritelty laisinkaan. Muut kohdat: - getVarat ja getTuet yhteensä 1p - getTase 1p - varallisuusmuutos 1p - valtioltaTukea 2p Yhden pisteen saa jos on pieni virhe, esim. asetetaan tuki = määrä eikä tuki += määrä tai paluuarvo puuttuu/on väärin. - siirraTukeaVaroihin 3p - 1p negatiivisen tuen käsittely - 1p tuen siirto oikein - 1p paluuarvo oikein - toString() -metodi 2p Yksi piste lähtee, mikäli joko pieni virhe merkkijonon muodostamisessa tai merkkijonoa ei anneta paluuarvona (return puuttuu/tulostetaan palautuksen sijaan) */