Como fazer para substituir Fluxos condicionais por polimorfismo

3 respostas
MartinsAndreDablio

Boa noite galera como fazer para substituir Fluxo condicional por Polimorfismo.

(favor citar algum exemplo)

3 Respostas

carlinbh

Eu quero que um método receba uma String relacionado a um animal,
e em um fluxo condicional decida o barulho a ser imprimido desse animal.

public void fazerBarulho(String animal) {
    if(animal.equals("Cachorro")) {
        System.out.println("Au Au");
    } else if(animal.equals("Galinha")) {
        System.out.println("Có Có");
    } else if(animal.equals("Vaca")) {
        System.out.println("Muuuu");
    } else {
        System.out.println("Animal não identificado.");
    }
}

Agora com o polimorfismo eu poderia criar uma classe pai chamada Animal com um método barulho
e todos animais que vão herdar dela terá que sobrescrever este método de acordo com seu barulho.

public abstract class Animal {
    public abstract void barulho();
}

public class Cachorro extends Animal{
    public void barulho() {
        System.out.println("Au Au");
    }
}

public class Galinha extends Animal{
    public void barulho() {
        System.out.println("Có Có");
    }
}

public class Vaca extends Animal{
    public void barulho() {
        System.out.println("Muuuu");
    }
}

Agora o método fazerBarulho() feito com fluxo condicional poderia ser substituído pelo polimorfismo.
Em vez de testar o parâmetro ele simplesmente recebe um tipo genérico Animal e executa o método barulho que existe nele,
mas o que realmente será executado é o método do animal passado por parâmetro que poderia ser qualquer um que herda de Animal.

public void fazerBarulho(Animal animal) {
    animal.barulho();
}
ViniGodoy

Outro exemplo: http://www.guj.com.br/java/55885-como-nao-utilizar-if-ou-switch#293436

MartinsAndreDablio

Obrigado pessoal.

Criado 10 de abril de 2013
Ultima resposta 11 de abr. de 2013
Respostas 3
Participantes 3