1
resposta

Projeto tarefa - Polimorfismo e Sobrescrita

void main() {
  Nozes macadamia = Nozes(
    nome: 'Macadâmia',
    peso: 2.0,
    cor: 'Branco amarelado',
    diasDesdeColheita: 20,
    pctOleoNatural: 50,
    sabor: 'Doce',
  );

  Fruta banana = Fruta(
    nome: 'Banana',
    peso: 75,
    cor: 'Amarela',
    diasDesdeColheita: 20,
    sabor: 'Doce',
    isMadura: true,
  );

  Citricas limao = Citricas(
    nome: 'Limão',
    peso: 100,
    cor: 'Verde',
    diasDesdeColheita: 5,
    sabor: 'Azedo',
    nivelDeAzedo: 10,
  );

  Legume macaxeira = Legume(
    nome: 'Macaxeira',
    peso: 1200,
    cor: 'Marrom',
  );

  macadamia.caracteristicasAlimento();
  banana.caracteristicasAlimento();
  limao.caracteristicasAlimento();
  macaxeira.caracteristicasAlimento();

  macaxeira.cozinharLegume();
  limao.fazerSuco();

  //usando os métodos abstrados
  banana.pegarIngrediente();
  banana.misturarIngredientes();
  banana.assar();
}

class Alimento {
  String nome, cor;
  double peso;

  Alimento({required this.nome, required this.peso, required this.cor});

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

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

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

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

  @override
  void pegarIngrediente() {
    print('Colhendo a $nome do pé!');
  }

  @override
  void misturarIngredientes() {
    print('Hora de misturar o $nome com os outros ingredientes do bolo!');
  }

  @override
  void assar() {
    print('Hora de colocar o bolo de $nome para assar');
  }
}

class Citricas extends Fruta {
  int nivelDeAzedo;
  Citricas({
    required super.nome,
    required super.peso,
    required super.cor,
    required super.diasDesdeColheita,
    required super.sabor,
    required this.nivelDeAzedo,
  });

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

class Legume extends Alimento {
  bool? isPrecisaCozinhar;
  Legume({
    required super.nome,
    required super.peso,
    required super.cor,
    this.isPrecisaCozinhar,
  });

  void cozinharLegume() {
    print('Pronto! o $nome está cozinhando');
  }
}

class Nozes extends Fruta {
  double pctOleoNatural;

  Nozes(
      {required super.nome,
      required super.peso,
      required super.cor,
      required super.diasDesdeColheita,
      required super.sabor,
      required this.pctOleoNatural});
}

abstract class Bolo {
  void pegarIngrediente();

  void misturarIngredientes();

  void assar();
}
1 resposta

Oi Guilherme, tudo bem?

Muito obrigada por compartilhar conosco o seu resultado da atividade! É ótimo ver que você está praticando, pois a prática é essencial para a consolidação do conhecimento. Parabéns por se empenhar e aplicar o conteúdo das aulas.

Lembre-se de que a prática constante leva ao sucesso!

Um abraço.