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

Polimorfismo e Sobrescrita

void main() {

Fruta fruta01 = Fruta("banana", 12, 20, 2);
Citrica citrica01 = Citrica("Limão", 5, 1, 15, 90); 
Hidrica hidrica01 = Hidrica("Melância", 1500, 15, 20, 90);

fruta01.estaMadura();
citrica01.suco();
hidrica01.refrescante();
fruta01.separarIngredientes();
fruta01.fazerMassa();
fruta01.assar();
citrica01.separarIngredientes();

}


class Alimento {

  String nome;
  double peso;

  Alimento(this.nome, this.peso);

}

class Fruta extends Alimento implements Bolo{


int diasColheita;
int diasMadurar;
bool? isMadura;

Fruta(String nome, double peso, this.diasMadurar, this.diasColheita)
:super(nome, peso);

estaMadura(){
  if(isMadura = diasColheita >= diasMadurar){
 print("a sua $nome foi colhida há $diasColheita dias, e precisa de $diasMadurar dias para ficar madura. A fruta está madura? $isMadura");
  }else{
    print("a sua $nome foi colhida há $diasColheita dias, e precisa de $diasMadurar dias para ficar madura. A fruta está madura? $isMadura");
  }
}

  @override 
  void assar() {
    print("Colocar a massa no forno e experar o bolo de $nome ficar pronto");
  }
  
  @override
  void fazerMassa() {
    print("misturar os(as) $nome com farinha e preparar a massa.");
  }
  
  @override
  void separarIngredientes() {
    print("Colher um(a) $nome.");
  }

}

class Legume extends Alimento implements Bolo{
  bool isPrecisaCozinhar;

  Legume(String nome, double peso, this.isPrecisaCozinhar)
      : super(nome, peso);

  void cozinhar() {
    (isPrecisaCozinhar)
        ? print("Pronto, o $nome está cozinhado!")
        : print("Nem precisou cozinhar");
  }
  
  @override
  void assar() {
    print("Colocar a massa no forno e experar o bolo de $nome ficar pronto");
  }
  
  @override
  void fazerMassa() {
    print("misturar as $nome com farinha e preparar a massa.");
  }
  
  @override
  void separarIngredientes() {
    print("Colher um(a) $nome.");
  }


}

class Citrica extends Fruta{

  double porcentagemAzedo;

  Citrica(String nome, double peso, int diasColheita, int diasMadurar, this.porcentagemAzedo):super (nome,peso,diasMadurar,diasColheita);

  suco(){
    if (isMadura = true && porcentagemAzedo <= 2){
      print("Podemos fazer um ótimo suco com este(a) $nome");
    }else{
      print("Esse(a) $nome ainda não está madura(o) o suficiente para fazer um bom suco");
    }
  }

  @override
  void separarIngredientes(){
    print("Você colheu uma $nome. Não é ideal para bolos mas podemos testar.");
    super.fazerMassa();
  }



}

class Hidrica extends Fruta{

  double porcetagemAgua;

  Hidrica(String nome, double peso, int diasColheita, int diasMadurar, this.porcetagemAgua):super (nome, peso,diasColheita, diasMadurar);

  refrescante(){
    if(porcetagemAgua <= 5){
      print("Esse(a) $nome está muito refrescante");
    }else{
      print("Esse(a) $nome ainda não está tão refrescante");
    }
  }

  @override
  void assar() {
      print("Colocar a massa no forno e experar o bolo de $nome ficar pronto");
    }
    
    @override
    void fazerMassa() {
      print("misturar as $nome com farinha e preparar a massa.");
    }
    
    @override
    void separarIngredientes() {
      print("Colher um(a) $nome.");
    }

}

abstract class Bolo{
 
  void separarIngredientes();

  void fazerMassa();

  void assar();
  
 
} 

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

2 respostas
solução!

Olá, Darlan.

Tudo bem?

Parabéns pelo seu código! É evidente que você aplicou efetivamente conceitos de polimorfismo e sobrescrita. A estrutura do programa está bem organizada, mas considere adicionar comentários para melhor compreensão. Nomes de variáveis podem ser simplificados, e algumas redundâncias em condições podem ser evitadas. Além disso, pense em como estender o design e melhorar a experiência do usuário com mensagens mais informativas.

Continue assim, seu trabalho está ótimo, e estamos ansiosos para ver suas futuras conquistas na programação!

Espero ter ajudado e bons estudos!

Maravilha, obrigado!