/*
***************************************************************************
**
** Onomatopoeettinen alkoholiliike -- javaversio
**
** Idea Psilonilta, joka varasti sen Ionilta, joka varasti sen
** Rennexiltä.
**
** Tämä kirjoitettu javakurssilla Marraskuussa 2002. Örr!
**
**
** (C) 2002 Harry "Piru" Sintonen
**
***************************************************************************
**
*/

/* Eläinten yliluokka */
abstract class Elucka
{
    protected String IsoNimi;
    protected String Nimi;
    protected String Sano;

    protected Elucka()
    {
        IsoNimi = this.getClass().getName();
        Nimi    = IsoNimi.toLowerCase();
    }

    protected void KuinkaSanoo(String Teksti)
    {
        System.out.println(
           "\n" +
           IsoNimi + " sanoo " + Sano+ ", " + Sano +"\n" +
           IsoNimi + " sanoo " + Sano+ ", " + Sano +"\n" +
           "Kuinka " + Nimi+ " sanoo, kuinka " + Nimi + "sanoo,\n" +
           "kuinka " + Nimi+ " sanoo " + Teksti + "?\n" +
           IsoNimi + " sanoo " + Sano + ", " + Sano);
    }
} // Elucka


/* eläinluokat */

class Kana extends Elucka
{
    Kana()
    {
        Sano = "kot kot kot";
    }
} // Kana

class Karhu extends Elucka
{
    Karhu()
    {
        Sano = "mur mur mur";
    }
} // Karhu

class Gorilla extends Elucka
{
    protected void KuinkaSanoo(String Teksti)
    {
        System.out.println(
            "\n" +
            "Gorilla sanoo yääärrauhrhha\n" +
            "Gorilla sanoo yhhrräähh rhähhrrääh\n" +
            "Kuinka gorilla sanoo, kuinka gorilla sanoo,\n" +
            "kuinka gorilla sanoo " + Teksti + "?\n" +
            "Gorilla sanoo öährrh - Bundolo!");
    }
} // Gorilla

class Kirahvi extends Elucka
{
    Kirahvi()
    {
        Sano = "öri öri öri";
    }
} // Kirahvi

class Kiiski extends Elucka
{
    Kiiski()
    {
        Sano = "... ...";
    }

    protected void KuinkaSanoo(String Teksti)
    {
        super.KuinkaSanoo(Teksti);
        System.out.println("... ..., ... ...");
    }
} // Kiiski

class Siittio extends Elucka
{
    Siittio()
    {
        IsoNimi = IsoNimi.replace('o', 'ö');
        Nimi    = Nimi.replace('o', 'ö');
        Sano    = "ptlqm";
    }

    protected void KuinkaSanoo(String Teksti)
    {
        super.KuinkaSanoo(Teksti);
        System.out.println(
            "ptlqm ptlqm, ptlqm ptlqm, ptl ptl, qm, ptlqm ptlqm...");
    }
} // Siittio


public class Elukat
{
    public static void main(String[] args)
    {
        Kana kana       = new Kana();
        Karhu karhu     = new Karhu();
        Gorilla gorilla = new Gorilla();
        Kirahvi kirahvi = new Kirahvi();
        Kiiski kiiski   = new Kiiski();
        Siittio siittio = new Siittio();

        System.out.println(
            "\n" +
            "ONOMATOPOEETTINEN ALKOHOLILIIKE\n");

        kana.KuinkaSanoo("Cabana");
        karhu.KuinkaSanoo("Karhu");
        gorilla.KuinkaSanoo("Carillo");

        System.out.println(
            "\n" +
            "Ketulla on krapula, niin myös madolla.\n" +
            "Kaikki ne voit tavata Alkon jonossa!");

        kirahvi.KuinkaSanoo("Kahvi - likööri");

        System.out.println(
            "\n" +
            "Siili käyttää aineita, niin myös etana.\n" +
            "Heitä et voi tavata Alkon jonossa!");

        kiiski.KuinkaSanoo("Whisky");
        siittio.KuinkaSanoo("I love you");
    }
} // Elukat

