1
resposta

Desafio Polimorfismo e sobrescrita

Reutilizando o mesmo código do ultimo desafio, implementei algumas coisas a mais, e arrumei a classe Acougue. 2 pontos que gostaria de falar,

primeiro: O desafio era pra 3 métodos, mas não consegui pensar em mais métodos a não ser o Fazendo pedido, rs (imaginação é meio fraca) Porém, deu pra entender o propósito da coisa.

segundo: Tentei colocar Required em " DISPONIBILIDADE ", mas ficava dando erro, não consegui ajeitar, como teria que fazer ?

no mais, o resultado ficou assim. /

class Mercado {
  String produto;
  double preco;
  bool disponibilidade;

  Mercado(this.produto, this.preco, this.disponibilidade);

  atualizaPreco(double novoPreco) {
    preco = novoPreco;
  }
}

class Acougue extends Mercado implements Pedidos {
  bool isCarneDeBoi;

  Acougue(String produto, double preco, bool disponibilidade,
      {required this.isCarneDeBoi})
      : super(produto, preco, disponibilidade);

  verificaTipoDeCarne() {
    if (isCarneDeBoi) {
      print('Eu quero carne de boi!');
    } else {
      print('Eu quero carne de boi!');
    }
  }

  @override
  fazendoPedido() {
    if (disponibilidade) {
      print(
          'Olá, vocês tem $produto? $disponibilidade, qual o preço ? $preco. Ok me ve dois kg!');
    } else {
      print(
          'Não teremos esse produto disponivel hoje, mas você pode escolher outro.');
    }
  }
}

class Padaria extends Mercado implements Pedidos {
  bool isDoce;

  Padaria(String produto, double preco, bool disponibilidade,
      {required this.isDoce})
      : super(produto, preco, disponibilidade);

  verificandoGosto() {
    if (isDoce) {
      print('A(o) $produto, é doce!');
    } else {
      print('A(o) $produto, é salgado');
    }
  }

  @override
  fazendoPedido() {
    if (disponibilidade) {
      print(
          'Olá, vocês tem $produto? $disponibilidade, qual o preço ? $preco. Ok me ve dois!');
    } else {
      print(
          'Não teremos esse produto disponivel hoje, mas você pode escolher outro.');
    }
  }
}

abstract class Pedidos {
  fazendoPedido();
}

main() {
  Padaria paoDeMel = Padaria('pao de mel', 5.5, false, isDoce: true);
  Acougue fileAmericano = Acougue('file americano', 33.90, true, isCarneDeBoi: true);

  (paoDeMel.fazendoPedido());
  (fileAmericano.fazendoPedido());

}

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

1 resposta

Fala Lineker, de boa ?

Cara ficou bem legal esse exemplo que tu fez! Tu conseguiu abstrair bem a essência do que deveria ser feito :)