Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Classes e Heranças

void main(){

  Legumes mandioca1 = Legumes(true, 'Macaxeira', 1200.59, 'Marrom');

  Frutas banana1 = Frutas('Doce', 5, true, 'Banana', 250.65, 'Amarela');

  Nozes macadamia1 = Nozes(100.00, 'Doce', 20, true , 'Macadâmia', 1.95, 'Branco Amarelado');

  Citricas limao1 = Citricas(10, 'Azedo', 5, true, 'Limão', 5.25, 'Verde');

  mandioca1.infoAlimento();
  banana1.infoAlimento();
  macadamia1.infoAlimento();
  limao1.infoAlimento();

  mandioca1.cozinhar();
  limao1.fazerSuco();
  
  banana1.estaMadura(10);
}


class Alimento{
  String nome;
  double peso;
  String cor;

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

  void infoAlimento(){
    print('Este(a) $nome é saboroso e pesa $peso gramas, além da coloração $cor');
  }
}

class Frutas extends Alimento{
  
  String sabor;
  int diasDesdeColheita;
  bool? isMadura; 
 
  Frutas(
    this.sabor,
    this.diasDesdeColheita,
    this.isMadura,
    super.nome, 
    super.peso, 
    super.cor);

 estaMadura(int diasParaMadura) {
  isMadura = diasDesdeColheita >= diasParaMadura;
    if(isMadura == true){
      print('A $nome está madura');
    }
    else{
      print('A $nome não está madura, ela precisa de $diasParaMadura dias para estar madura');
    }
  }

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

}

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

  void cozinhar(){
    if(isPrecisaCozinhar){
      print('Pronto, o(a) $nome está cozinhando');
    }else{
      print('Não precisa cozinhar');
    }
  }
}

class Citricas extends Frutas{
  double nivelDeAzedo;

  Citricas(
    this.nivelDeAzedo,
    super.sabor, 
    super.diasDesdeColheita,
    super.isMadura, 
    super.nome, 
    super.peso, 
    super.cor);

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

class Nozes extends Frutas{
  double porcentagemOleoNatural;

  Nozes(
    this.porcentagemOleoNatural,
    super.sabor, 
    super.diasDesdeColheita, 
    super.isMadura, 
    super.nome, 
    super.peso, 
    super.cor);
}
1 resposta
solução!

Oii Jonatas, tudo bem?

Ótimo trabalho na prática com classes e heranças em Dart! Você criou uma hierarquia interessante de classes para representar diferentes tipos de alimentos, demonstrando um bom entendimento dos conceitos de herança e polimorfismo.

  • Você definiu uma classe base Alimento com atributos comuns a todos os alimentos, como nome, peso e cor, e um método infoAlimento para exibir informações sobre o alimento.
  • Em seguida, você criou subclasses específicas, como Frutas, Legumes, Citricas e Nozes, que herdam os atributos e métodos da classe Alimento e adicionam características específicas desses tipos de alimentos.
  • E, você implementou métodos adicionais em algumas subclasses para realizar ações específicas, como verificar se uma fruta está madura, cozinhar um legume, fazer suco de uma fruta, entre outros.

Essa é uma excelente demonstração de como usar classes e heranças para organizar e representar diferentes tipos de objetos em um programa.

Continue praticando e explorando novos conceitos para aprimorar suas habilidades em Dart!

Um abraço e bons estudos.

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