1
resposta

Exercício Classes Abstratas

Anexo código do exercício de classes abstratas:

void main() {
  Caminhao caminhao1 = Caminhao('Caminhão','Volvo','Diesel',2,'Carga',2);

  Automovel automovel1 = Automovel('Automovel','VW','Flex',5,'Passeio','Fox',105);

  Moto moto1 = Moto('Motocicleta','Ducati','Gasolina',1,'Corrida','Panigale V4', 1103);

  print('Manutenção dos veículos');
  caminhao1.trocarOleoMotor();
  caminhao1.trocarFiltros();
  caminhao1.verificarPneus();
  print(' ');
  automovel1.trocarOleoMotor();
  automovel1.trocarFiltros();
  automovel1.verificarPneus();
  print(' ');
  moto1.trocarOleoMotor();
  moto1.trocarFiltros();
  moto1.verificarPneus();
}

class Veiculo {
  String nome;
  String marca;
  String combustivel;
  int lugares;
  String uso;
  Veiculo(this.nome,this.marca,this.combustivel,this.lugares,this.uso);

  void printVeiculo(){
    print('O $nome da marca $marca usa $combustivel, leva $lugares pessoas e é usado para $uso');
  }

  @override
  void trocarOleoMotor(){
    print('Se for $nome Troque o óleo do motor');
  }

  @override
  void trocarFiltros(){
    print('Se for $nome Troque o filtro de ar, filtro do óleo e filtro de combustível');
  }

  @override
  void verificarPneus() {
    print('Se for $nome Verifique o desgaste dos pneus e substitua se necessário');
  }
}


class Caminhao extends Veiculo {
  int eixos;
  Caminhao(String nome,String marca,String combustivel,int lugares,String uso,this.eixos)
      :super(nome,marca,combustivel,lugares,uso);
  void tipoEixo(){
    if (eixos == 2) {
      print('O caminhão $marca é toco');
    }else{
      print('Caminhão $marca é truco');
    }
  }
  // Limpar o filtro de entrada da bomba injetora
  @override
  void trocarFiltros() {
    print('Se for $nome Limpar filtro de entrada da bomba injetora');
    super.trocarFiltros();
  }
}


class Automovel extends Veiculo {
  String modelo;
  int potencia;
  Automovel(String nome,String marca,String combustivel,int lugares,String uso,this.modelo,this.potencia)
      :super(nome,marca,combustivel,lugares,uso);
  void printAutomovel(){
    if(potencia >= 100){
      print('O $marca $modelo é um carro muito potente');
    }else{
      print('O $nome $modelo é um carro fraquinho');
    }
  }
}


class Moto extends Veiculo {
  String modelo;
  int cilindradas;
  Moto(String nome,String marca,String combustivel,int lugares,String uso,this.modelo,this.cilindradas)
      :super(nome,marca,combustivel,lugares,uso);
  void printMoto(){
    print('As motos da $marca modelo $modelo, possuem $cilindradas cilindradas');
  }
}

abstract class Manutencao{
  void trocarOleoMotor();
  void trocarFiltros();
  void verificarPneus();
}
1 resposta

Olá, Eduardo! Tudo bem com você?

Executei seu código e funcionou corretamente, como mostro a seguir:

Imagem que mostra a execução do código do aluno eduardo

Obrigado por compartilhar seu raciocínio e modo de resolução com a comunidade Alura.

Abraços e bons estudos!