package luento11; /** * Luokka jolla voidaan kaataa vettä astiasta toiseeen * @author vesal * */ public class Astia { private String nimi; 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.nimi = "" + tilavuus; this.tilavuus = tilavuus; this.maara = 0.0; } /** * Alustetaan astia tietyn kokoiseksi * @param nimi astian nimi * @param tilavuus litroina * @example *
     *   Astia astia = new Astia("5l",5);
     *   astia.getTilavuus() ~~~ 5.0;
     *   astia.getNimi() === "5l";
     * 
*/ public Astia(String nimi,double tilavuus) { this.nimi = nimi; 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); } /** * Lisää aistin nestemäärää * @param litroja paljonko lisätään */ protected 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; } /** * @return astian nimi */ public String getNimi() { return nimi; } /** * Katsotaan täyttääkö astian nimi ehdon * @param nimi tutkittava nimi * @return onko astin nimi haluttu * @example *
     *   Astia astia = new Astia("5l",5);
     *   astia.oletko("5L") === true;
     * 
*/ public boolean oletko(String nimi) { return this.nimi.equalsIgnoreCase(nimi); } /** * 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ä"); } }