2
respostas

[Projeto] Polimorfismo | sobrescrita

void main() {
  Trabalhador pessoa1 = Trabalhador('Augusto', 30, false, true);
  pessoa1.cadastrarTrabalhador();
  pessoa1.modeloDeTrabalho();
  pessoa1.verificarMenorAprendiz();

  Trabalhador pessoa2 = Trabalhador('Carlos', 16, false, false);
  pessoa2.cadastrarTrabalhador();
  pessoa2.verificarMenorAprendiz();
}

abstract class Pessoa {
  String nome;
  int idade;
  bool isPcd;

  Pessoa(this.nome, this.idade, this.isPcd);

  void cadastrarTrabalhador();

  void modeloDeTrabalho() {
    if (isPcd) {
      print('Modelo de trabalho adequado para pessoa com PCD');
    }
    print('Modelo de trabalho CLT');
  }

  void verificarMenorAprendiz() {
    if (idade > 15 && idade <= 17) {
      print('Esta pessoa é menor aprendiz. Infelizmente não contratamos menores.');
      return;
    }
    print('Está contratado!');
  }
}

class Trabalhador extends Pessoa {
  bool? isClt;

  Trabalhador(super.nome, super.idade, super.isPcd, this.isClt);

  @override
  void cadastrarTrabalhador() {
    print('Cadastrando trabalhador: $nome, idade: $idade, PCD: $isPcd');
  }

  @override
  void verificarMenorAprendiz() {
    print('Analisando contratação de $nome...');
    super.verificarMenorAprendiz();
  }
}
2 respostas

Oi, Augusto! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Com base no que você explicou, gostei de ver como você usou sobrescrita para complementar o comportamento do método verificarMenorAprendiz(). Sua implementação deixa claro quando a classe filha adiciona lógica própria antes de chamar super.

Uma dica interessante para o futuro é testar polimorfismo criando uma lista do tipo Pessoa e armazenando diferentes trabalhadores. Veja este exemplo:


List<Pessoa> lista = [
  Trabalhador('Ana', 22, false, true),
  Trabalhador('Joao', 17, false, false)
];

for (var p in lista) {
  p.verificarMenorAprendiz();
}

O código cria uma lista genérica e chama o mesmo método em instâncias diferentes.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Bacana, vou fazer este teste! Obrigado.