On 02/16/2017 11:09 AM, Jean Cesar wrote:
> I have the following code in c++ using polymorphism how would I convert
> D-language polymorphism?

import std.stdio;

class Mamifero {
    int idade;

    void somMamifero() {
        writeln("\n\tSom de mamifero.");
    }
}

class Boi: Mamifero
{
    override void somMamifero() const
    {
        writeln("\n\tMuu ..! Muu..!!");
    }
}

class Gato: Mamifero
{
    override void somMamifero() const
    {
        writeln("\n\tMiAu ..! MiAu..!!");
    }
}

class Porco: Mamifero
{
    override void somMamifero() const
    {
        writeln("\n\tOinc ..! Oinc..!!");
    }
}

class Cachorro: Mamifero
{
    override void somMamifero() const
    {
        writeln("\n\tAu ..! Au..!!");
    }
}

void main()
{
    Mamifero mamPtr;
    int op;
    while(op != 5)
    {
        write("\n\t(1) Boi" ~
              "\n\t(2) Gato" ~
              "\n\t(3) Porco" ~
              "\n\t(4) Cachorro" ~
              "\n\t(5) Sair" ~
              "\n\tDigite: ");
        readf(" %s", &op);
        switch(op)
        {
        case 1:{
            mamPtr = new Boi();
            mamPtr.somMamifero();
            break;
        }
        case 2:{
            mamPtr = new Gato();
            mamPtr.somMamifero();
            break;
        }
        case 3:{
            mamPtr = new Porco();
            mamPtr.somMamifero();
            break;
        }
        case 4:{
            mamPtr = new Cachorro();
            mamPtr.somMamifero();
            break;
        }
        case 5:{
            writeln("\n\tGood Bye");
            return;
        }
        default:
            writeln("\n\tOpção Inválida ..!!!");
        }
    }
}

In D you can have interfaces as well:

interface Mamifero {
    void somMamifero();
}

Ali

Reply via email to