1
resposta

Está é minha versão da pratica de heranças com o dart.

Tem algo de errado ou melhoria que eu possa fazer ?


void main() {
  Carro carro1 = Carro(4, 'vermelho', 'Fiat Uno', 4, 'Bibii', true);
  Bike bike1 = Bike(2, 'Azul', 1);

  Carro carro2 = Carro(4, 'Branco', 'Gol', 4, 'Bibii', false);
  Bike bike2 = Bike(3, 'Azul', 1);

  carro1.acelerarCarro();
  bike1.usarBike();

  print('  ');
  print('Segundo exemplo');
  print('  ');

  carro2.acelerarCarro();
  bike2.usarBike();
}

class Veiculo {
  int rodas;
  String cor;

  Veiculo(this.rodas, this.cor);
}

class Carro extends Veiculo {
  String nome;
  int portas;
  String busina;
  bool carroLigado;

  Carro(rodas, cor, this.nome, this.portas, this.busina, this.carroLigado)
      : super(rodas, cor);

  void acelerarCarro() {
    if (carroLigado == true) {
      print(
          'Vrum você está acelerando o $nome. este é um belo carro de $portas portas na cor $cor (a).');
      print('Escute só está busina $busina');
    } else {
      print('Impossivel acelerar pois o carro está desligado');
    }
  }
}

class Bike extends Veiculo {
  int lugar;

  Bike(rodas, cor, this.lugar) : super(rodas, cor);

  void usarBike() {
    if (lugar == 1 && rodas == 2) {
      print('Sua bike tem $lugar lugar e $rodas rodas, ela é da cor $cor.');
    } else {
      print('Opa, isto não me parece ser uma bike.');
    }
  }
}
1 resposta

E aí, André!

Sua implementação de herança em Dart tá muito boa!

Se eu pudesse dar uma sugestão de melhoria, seria adicionar alguns comentários no código para explicar o que cada parte está fazendo, especialmente se esse código for ser lido por outras pessoas ou até mesmo por você no futuro. Algo assim:

// Definição da classe base Veiculo
class Veiculo {
  int rodas;
  String cor;

  Veiculo(this.rodas, this.cor);
}

// Definição da classe Carro que herda de Veiculo
class Carro extends Veiculo {
  String nome;
  int portas;
  String busina;
  bool carroLigado;

  // Construtor que chama o construtor da classe base usando super
  Carro(rodas, cor, this.nome, this.portas, this.busina, this.carroLigado)
      : super(rodas, cor);

  // Método específico para Carro
  void acelerarCarro() {
    // Lógica para acelerar o carro
  }
}

// Definição da classe Bike que herda de Veiculo
class Bike extends Veiculo {
  int lugar;

  // Construtor que chama o construtor da classe base usando super
  Bike(rodas, cor, this.lugar) : super(rodas, cor);

  // Método específico para Bike
  void usarBike() {
    // Lógica para usar a bike
  }
}

Isso ajuda a tornar o código mais legível e compreensível para quem estiver lendo.

Abraço!