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();
}