Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Polimorfismo e Sobrescrita

void main() {
  Fruta laranja1 = Fruta('Laranja', 200, 'Laranja', 'Cítrica', true);
  Fruta banana1 = Fruta('Banana', 150, 'Amarela', 'Doce', false);
  Hortalicas alface1 = Hortalicas('Alface', 50, 'Verde', false, 'Amargo');
  Legumes beterraba1 = Legumes('Beterraba', 150, 'Roxa', true);
  Nozes noz1 = Nozes('Noz', 30, 'Marrom', 'Doce', false, 40);

  laranja1.printAlimento();
  laranja1.fazerSuco();
  banana1.printAlimento();
  banana1.fazerMassa();
  banana1.assar();
  alface1.printAlimento();
  alface1.precisaCozinhar();
  alface1.fazerSalada();
  beterraba1.printAlimento();
  beterraba1.precisaCozinhar();
  noz1.printAlimento();
  noz1.fazerMassa();
}

//classe Mãe
class Alimento {
  String nome;
  double peso;
  String cor;

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

  void printAlimento() {
    print('A $nome pesa $peso gramas e tem cor $cor.');
  }
}

class Fruta extends Alimento implements Bolo {
  String sabor;
  bool isFazerSuco;
  Fruta(String nome, double peso, String cor, this.sabor, this.isFazerSuco)
      : super(nome, peso, cor);

  void fazerSuco() {
    if (isFazerSuco) {
      print('Com a fruta $nome é possível fazer um suco.');
    } else {
      print('Não é possível fazer um suco');
    }
  }

  @override
  void separarIngredientes() {
    print('Separar o/a $nome com cor $cor e colocar sobre a bancada.');
  }

  @override
  void fazerMassa() {
    print('Misturar o/a $nome com os demais os ingredientes.');
  }

  @override
  void assar() {
    print(
        'Levar ao forno o bolo de $nome para assar conforme a especificação.');
  }
}

class Legumes extends Alimento {
  bool isPrecisaCozinhar;
  Legumes(String nome, double peso, String cor, this.isPrecisaCozinhar)
      : super(nome, peso, cor);

  void precisaCozinhar() {
    if (isPrecisaCozinhar) {
      print('É necessário que o/a $nome seja cozido para comer.');
    } else {
      print('Não é preciso cozinhar o/a $nome.');
    }
  }
}

class Nozes extends Fruta {
  double porcentagemDeOleo;
  Nozes(String nome, double peso, String cor, String sabor, bool isFazerSuco,
      this.porcentagemDeOleo)
      : super(nome, peso, cor, sabor, isFazerSuco);

  void tenhoEmCasa() {
    print('Tem no armário');
  }

  @override
  void fazerMassa() {
    print('Tirar a casca');
    super.fazerMassa();
  }
}

class Hortalicas extends Legumes {
  String sabor;
  Hortalicas(
      String nome, double peso, String cor, bool isPrecisaCozinhar, this.sabor)
      : super(nome, peso, cor, isPrecisaCozinhar);

  void fazerSalada() {
    print(
        'É possível fazer uma salada com a $nome que pesa $peso gramas e possui cor $cor.');
  }
}

//classe abstrata
abstract class Bolo {
  void separarIngredientes();

  void fazerMassa();

  void assar();
}
2 respostas

Saída do Código

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

solução!

Oi Jhonatan, tudo bem?

Parabéns pelo código! É ótimo ver sua habilidade em criar classes para representar diferentes tipos de alimentos. Você demonstrou um entendimento sólido de herança e polimorfismo ao definir comportamentos específicos para cada classe.

Continue assim e bons estudos!

Um abraço.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software