0
respostas

[Projeto] Atividade: Polimorfismo e Sobrescrita

Aqui está o código que desenvolvi seguindo as orientações do exercício. Acredito que cobri todos os pontos, mas se tiverem sugestões de melhoria, ficarei feliz em ouvir!

void main(List<String> arguments) {
  Mamifero mamifero1 = Mamifero("Cachorro", 20, "Branco", 2);
  Ave ave1 = Ave("Urubu", 2, "Preto", "Longo");
  Peixe peixe1 = Peixe("Peixe-Lua", 2000, "Acizentado", "Salgada");

  mamifero1.mover();
  ave1.mover();
  peixe1.mover();

  mamifero1.alimentacao();
  ave1.alimentacao();
  peixe1.alimentacao();

  mamifero1.emitirSom();
  ave1.emitirSom();
  peixe1.emitirSom();
}

class Animal implements Comportamentos {
  String nome;
  double peso;
  String cor;

  Animal(this.nome, this.peso, this.cor);

  void printAnimal() {
    print("O animal $nome é $cor e pesa $peso kg");
  }

  @override
  void mover() {
    print("O animal $nome já está há 10 metros de você");
  }

  @override
  void alimentacao() {
    print("O animal $nome está comendo");
  }

  @override
  void emitirSom() {}
}

class Mamifero extends Animal {
  int tempoDeGestacao;

  Mamifero(String nome, double peso, String cor, this.tempoDeGestacao)
      : super(nome, peso, cor);

  void gestacaoInfo() {
    print(
        "O mamífero $nome tem um tempo de gestação de $tempoDeGestacao meses");
  }

  @override
  void mover() {
    print("Começou a andar");
    super.mover();
  }

  @override
  void emitirSom() {
    print("Vocalizando...");
  }
}

class Ave extends Animal {
  String tipoDeBico;

  Ave(String nome, double peso, String cor, this.tipoDeBico)
      : super(nome, peso, cor);

  void bicarArvore() {
    print("A ave $nome está bicando a árvore com seu bico $tipoDeBico");
  }

  @override
  void mover() {
    print("Começou a voar");
    super.mover();
  }

  @override
  void emitirSom() {
    print("Cantando...");
  }
}

class Peixe extends Animal {
  String tipoDeAgua;

  Peixe(String nome, double peso, String cor, this.tipoDeAgua)
      : super(nome, peso, cor);

  void nadando() {
    print("O peixe $nome está nadando na água $tipoDeAgua");
  }

  @override
  void mover() {
    print("Começou a nadar");
    super.mover();
  }

  @override
  void emitirSom() {
    print("Sem som...");
  }
}

abstract class Comportamentos {
  void mover();

  void alimentacao();

  void emitirSom();
}

Terminal:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade