/** * Luokka ja ohjelma yksinkertaisessa muodossa. * Katso kehitys: Astia.java ja Astia2.java *
* Pelillä demonstroidaan/harjoitellaan miten voidaan kahdella astialla, * 5 l ja 8 l, muodostaa kaikki mahdolliset tilavuudet 1-13 l. * Pelissä on kaksi varsinaista astiaa: a5 ja a8, sekä kolmas apuastia * ampari. Nestettä voidaan kerrallaan kaataa yhdestä astiasta toiseen * joko siten, että astian koko sisältö tyhjennetään jos se mahtuu * tai astista kaadetaan sen verran että toinen astia tulee täyteen. * * @author Vesa Lappalainen * @version 1.0, 09.02.2003 */ public class Astia1 { private double tilavuus; private double maara; /** * Alustaa uuden astian tietyn kokoiseksi ja luonnollisetsi tyhjäksi * @param tilavuus uuden astian tilavuus */ public Astia1(double tilavuus) { this.tilavuus = tilavuus; this.maara = 0; } /** * Täyttää astian piripintaan asti */ public void tayta() { maara = tilavuus; } /** * Kaataa tästä astiasta (this) toiseen astiaan niin paljon kuin toiseen * mahtuu tai tästä astiasta on antaa. * @param astia astia johon kaadetaan */ public void kaada(Astia1 astia) { double siirrettava = astia.tilavuus - astia.maara; if ( maara < siirrettava ) siirrettava = maara; astia.maara += siirrettava; maara -= siirrettava; } public double getMaara() { return maara; } public static void main(String[] args) { Astia1 astia5l = new Astia1(5); Astia1 astia8l = new Astia1(8); Astia1 ampari = new Astia1(100); ampari.tayta(); ampari.kaada(astia8l); astia8l.kaada(astia5l); System.out.println("8 litran astiassa on " + astia8l.getMaara() + " litraa nestettä"); } }