
# Onomatopoeettinen alkoholiliike
# Esimerkki olio-ohjelmoinnista ja luokkien periytymisestä ;)
# © Renne Nissinen, 18.3.2002


def laulu
    # laulu alkaa!

    print "\n", "ONOMATOPOEETTINEN ALKOHOLILIIKE", "\n\n"

    Kana.new.kuinkasanoo("Cabana")
    Karhu.new.kuinkasanoo("Karhu")
    Gorilla.new.kuinkasanoo("Carillo")

    print "\nKetulla on krapula, niin myös madolla.\n"
    print "Kaikki ne voit tavata Alkon jonossa!\n"

    Kirahvi.new.kuinkasanoo("Kahvi - likööri")

    print "\nSiili käyttää aineita, niin myös etana.\n"
    print "Heitä et voi tavata Alkon jonossa!\n"

    Kiiski.new.kuinkasanoo("Whisky")
    Siittio.new.kuinkasanoo("I love you")

end


# eläinten yliluokka

class Elucka
    def initialize
        @nimi = self.type.to_s.downcase     # elukan nimi (luokan nimestä)
    end

    def kuinkasanoo(teksti)
        isonimi = @nimi.capitalize

        t = "\n" + "#{isonimi} sanoo #{sano}, #{sano}\n"*2
        t += "Kuinka #@nimi sanoo, kuinka #@nimi sanoo,\n"
        t += "kuinka #@nimi sanoo #{teksti}?\n"
        t += "#{isonimi} sanoo #{sano}, #{sano}\n"

        print t
    end

end


# eläinluokat

class Kana < Elucka
    def sano
        "kot kot kot"
    end
end

class Karhu < Elucka
    def sano
        "mur mur mur"
    end
end

class Gorilla < Elucka
    def kuinkasanoo(teksti)
        print "\nGorilla 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!\n"
    end
end

class Kirahvi < Elucka
    def sano
        "öri öri öri"
    end
end

class Kiiski < Elucka
    def sano
        "... ..."
    end

    def kuinkasanoo(teksti)
        super(teksti)
        print "... ..., ... ...\n"
    end
end

class Siittio < Elucka
    def initialize
        @nimi = "siittiö"
    end

    def sano
        "ptlqm"
    end

    def kuinkasanoo(teksti)
        super(teksti)
        print "ptlqm ptlqm, ptlqm ptlqm, ptl ptl, qm, ptlqm ptlqm...\n"
    end
end


# suoritus alkaa tästä

laulu()



# uloste:
=begin

ONOMATOPOEETTINEN ALKOHOLILIIKE


Kana sanoo kot kot kot, kot kot kot
Kana sanoo kot kot kot, kot kot kot
Kuinka kana sanoo, kuinka kana sanoo,
kuinka kana sanoo Cabana?
Kana sanoo kot kot kot, kot kot kot

Karhu sanoo mur mur mur, mur mur mur
Karhu sanoo mur mur mur, mur mur mur
Kuinka karhu sanoo, kuinka karhu sanoo,
kuinka karhu sanoo Karhu?
Karhu sanoo mur mur mur, mur mur mur

Gorilla sanoo yääärrauhrhha
Gorilla sanoo yhhrräähh rhähhrrääh
Kuinka gorilla sanoo, kuinka gorilla sanoo,
kuinka gorilla sanoo Carillo?
Gorilla sanoo öährrh - Bundolo!

Ketulla on krapula, niin myös madolla.
Kaikki ne voit tavata Alkon jonossa!

Kirahvi sanoo öri öri öri, öri öri öri
Kirahvi sanoo öri öri öri, öri öri öri
Kuinka kirahvi sanoo, kuinka kirahvi sanoo,
kuinka kirahvi sanoo Kahvi - likööri?
Kirahvi sanoo öri öri öri, öri öri öri

Siili käyttää aineita, niin myös etana.
Heitä et voi tavata Alkon jonossa!

Kiiski sanoo ... ..., ... ...
Kiiski sanoo ... ..., ... ...
Kuinka kiiski sanoo, kuinka kiiski sanoo,
kuinka kiiski sanoo Whisky?
Kiiski sanoo ... ..., ... ...
... ..., ... ...

Siittiö sanoo ptlqm, ptlqm
Siittiö sanoo ptlqm, ptlqm
Kuinka siittiö sanoo, kuinka siittiö sanoo,
kuinka siittiö sanoo I love you?
Siittiö sanoo ptlqm, ptlqm
ptlqm ptlqm, ptlqm ptlqm, ptl ptl, qm, ptlqm ptlqm...

=end


