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ä"); } }