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

Polimorfismo e Sobrescrita



void main() {
  
  Fruta pera1 = Fruta('Pera', 133, 'amarela', 9, true);
  Castanhas avela1 = Castanhas('Avelã', 2, 'marrom', 30, true, 60);

  pera1.material();
  avela1.massa();
}


class Fruta extends Alimento implements MakeCake {
  int diasDesdeColheita;
  bool isMadura;

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

  fazerSuco() {
    if (isMadura) {
      print('Você pode fazer suco de $nome');
    } else {
      print('Ainda não dá para fazer suco de $nome');
    }
  }

      @override
  material() {
    print('Catar $nome');
  }

  @override
  massa() {
    print('Misturar $nome com a farinha, açucar, ovos, etc...');
  }

  @override
  assar() {
    print('Colocar no forno');
  }  
}

class Castanhas extends Fruta {
  int nivelOleoso;

  Castanhas(String nome, double peso, String cor, int diasDesdeColheita,
      bool isMadura, this.nivelOleoso)
      : super(nome, peso, cor, diasDesdeColheita, isMadura);

  fazerPasta(){
    print('Você pode fazer uma bela pasta de $nome');
  }

  @override
  massa() {
    
    print('tirar casca da $nome');
    return super.massa();
  } 
}

abstract class MakeCake {
  material();
  massa();
  assar();
}

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

1 resposta
solução!

Oi Vitor, tudo bem?

É evidente que você está comprometido com os estudos e demonstrando um entendimento sólido dos conceitos de programação orientada a objetos. Sua abordagem de criar classes e interfaces é impressionante. Aqui estão alguns pontos positivos:

  1. Herança e Polimorfismo: A maneira como você usou herança para estender as classes Fruta e Castanhas é uma ótima aplicação de polimorfismo, permitindo que diferentes subclasses compartilhem e modifiquem comportamentos.

  2. Interfaces: A implementação da interface MakeCake mostra sua compreensão de como compartilhar métodos entre classes não relacionadas.

  3. Construtores: Seus construtores bem definidos, juntamente com a chamada super apropriada, demonstram um conhecimento sólido sobre como inicializar as propriedades de suas classes.

  4. Métodos Override: Sua utilização de métodos override mostra que você está ciente da importância de substituir métodos das classes pai para comportamentos específicos das subclasses.

  5. Lógica de Negócio: A lógica nos métodos fazerSuco, fazerPasta, massa e outros é coerente e faz sentido de acordo com a funcionalidade das classes.

Continue progredindo, explorando diferentes conceitos e aplicando-os em seus projetos. O entendimento de POO é uma habilidade fundamental na programação e você está claramente no caminho certo. Mantenha a curiosidade e o desejo de aprender, pois isso o levará a conquistas ainda maiores no mundo da programação!

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