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

Faça como eu fiz: Classes e heranças

Código-fonte do projeto:

void main() {
  Fruta laranja1 = Fruta('laranja', 'amarela', 30.5, 'amarga', 20);
  Citrica limao1 = Citrica('limão', 'verde', 20.0, 'ácido', 15, 9.0);
  Legume pimentao1 = Legume('pimentão', 'vermelho', 47.0, 25, true);
  Noz noz1 = Noz('amendoim', 'marrom', 5.2, 'seco', 10, 70.0);
  laranja1.estaMadura(30);
  laranja1.printFruta();
  laranja1.fazerSuco();
  limao1.estaMadura(10);
  limao1.printCitrica();
  limao1.existeRefri(true);
  pimentao1.printAlimento();
  pimentao1.cozinhar();
  noz1.estaMadura(20);
  noz1.printNoz();
}

class Alimento {
  String nome, cor;
  double peso;

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

  void printAlimento() {
    print('Este(a) $nome pesa $peso gramas e é $cor.');
  }
}

class Fruta extends Alimento {
  String sabor;
  int diasDesdeColheita;
  bool? isMadura;

  Fruta(
      String nome, String cor, double peso, this.sabor, this.diasDesdeColheita,
      {this.isMadura})
      : super(nome, cor, peso);

  bool? estaMadura(int diasParaMadura) {
    isMadura ??= diasDesdeColheita >= diasParaMadura;
    return isMadura;
  }

  void fazerSuco() {
    print('Você fez um ótimo suco de $nome.');
  }

  void printFruta() {
    if (isMadura == false) {
      print('O(a) $nome de cor $cor com sabor $sabor pesa $peso gramas.\n'
          'Ele(a) foi colhido(a) há $diasDesdeColheita dias e não está maduro(a).');
    } else {
      print('O(a) $nome de cor $cor com sabor $sabor pesa $peso gramas.\n'
          'Ele(a) foi colhido(a) há $diasDesdeColheita dias e está maduro(a).');
    }
  }
}

class Legume extends Alimento {
  int diasDesdeColheita;
  bool? isPrecisaCozinhar;

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

  void cozinhar() {
    if (isPrecisaCozinhar == true) {
      print('Pronto, o(a) $nome está cozinhando.');
      isPrecisaCozinhar = false;
    } else {
      print('Nem precisa cozinhar.');
    }
  }
}

class Citrica extends Fruta {
  double nivelAzedo;

  Citrica(String nome, String cor, double peso, String sabor,
      int diasDesdeColheita, this.nivelAzedo)
      : super(nome, cor, peso, sabor, diasDesdeColheita);

  void existeRefri(bool existe) {
    if (existe) {
      print('Existe refrigerante de $nome.');
    } else {
      print('Não existe refri de $nome.');
    }
  }

  void printCitrica() {
    print('O(a) $nome de cor $cor com sabor $sabor pesa $peso gramas\n'
        'e tem $nivelAzedo nível de azedo.');
  }
}

class Noz extends Fruta {
  double porcentagemOleoNatural;

  Noz(String nome, String cor, double peso, String sabor, int diasDesdeColheita,
      this.porcentagemOleoNatural)
      : super(nome, cor, peso, sabor, diasDesdeColheita);

  void printNoz() {
    print('O(a) $nome de cor $cor com sabor $sabor pesa $peso gramas\n'
        'e tem $porcentagemOleoNatural% de óleo natural.');
  }
}

Resultado:

Exit

2 respostas
solução!

Oi Fernando, tudo bem?

Muito obrigada por compartilhar o código-fonte do seu projeto.

Pelo que entendi, você criou algumas classes como Alimento, Fruta, Legume, Citrica e Noz, e está utilizando herança para estender as funcionalidades dessas classes.

No seu código, você está criando instâncias das classes Fruta, Citrica, Legume e Noz e chamando alguns métodos específicos de cada uma delas, como estaMadura(), fazerSuco(), cozinhar(), existeRefri() e printNoz().

Você está obtendo o resultado esperado pela imagem que você compartilhou mostra a saída do seu programa. Que ótimo!

Muito obrigada por compartilhar com a gente, mais uma vez!

Um abraço e bons estudos.

Muito obrigado Lorena!