package luento10; /** * Luokka jolla voidaan kaataa vettä astiasta toiseeen * @author vesal * */ public class Astia { private double tilavuus; private double maara; /** * Alustetaan astia tietyn kokoiseksi * @param tilavuus litroina * @example *
     *   Astia astia = new Astia(5);
     *   astia.getTilavuus() ~~~ 5.0;
     * 
*/ public Astia(double tilavuus) { this.tilavuus = tilavuus; this.maara = 0.0; } /** * Täyttää astia piripintaa * @example *
     *   Astia astia = new Astia(5);
     *   astia.getMaara() ~~~ 0.0;
     *   astia.tayta();
     *   astia.getMaara() ~~~ 5.0;
     * 
*/ public void tayta() { maara = tilavuus; } /** * Kaataa itsestään nestettä toisen astian täyteen asti * @param astia johon kaadetaan * @example *
     *   Astia a8 = new Astia(8);
     *   Astia a5 = new Astia(5);
     *   Astia iso = new Astia(50);
     *   a8.tayta();
     *   a8.kaada(a5);
     *   a5.getMaara() ~~~ 5.0;
     *   a8.getMaara() ~~~ 3.0;
     *   a8.kaada(iso);
     *   a5.kaada(a8);
     *   a5.getMaara() ~~~ 0.0;
     *   a8.getMaara() ~~~ 5.0;
     *   a5.tayta();
     *   a5.kaada(a8);
     *   a5.getMaara() ~~~ 2.0;
     *   a8.getMaara() ~~~ 8.0;
     *   
     * 
*/ public void kaada(Astia astia) { double mahtuu = astia.getMahtuu(); if ( mahtuu > getMaara() ) { astia.lisaa(getMaara()); maara = 0; return; } astia.lisaa(mahtuu); lisaa(-mahtuu); } private void lisaa(double litroja) { maara += litroja; } /** * Palauttaa astian nestemäärän litroina * @return palauttaa astian nestemäärän litroina */ public double getMaara() { return maara; } /** * Astian tilavuus litroina * @return tilavuus litroina */ public double getTilavuus() { return tilavuus; } /** * Palauttaa paljonko astiaan mahtuu vielä nestettä * @return paljonko astiaan mahtuu vielä nestettä * @example *
     *   Astia astia = new Astia(5);
     *   astia.getMahtuu() ~~~ 5.0;
     *   astia.tayta();
     *   astia.getMahtuu() ~~~ 0.0;
     * 
*/ public double getMahtuu() { return getTilavuus() - getMaara(); } /** * @param args ei käytössä */ public static void main(String[] args) { Astia astia8l = new Astia(8); Astia astia5l = new Astia(5); Astia ampari = new Astia(100); ampari.tayta(); ampari.kaada(astia8l); astia8l.kaada(astia5l); System.out.println("8 litran astiassa on " + astia8l.getMaara() + " litraa nestettä"); } }