//Reduz a Marcha em 1 public void reduzMarcha() { if (Marcha - 1 == 0 && Velocidade == 0) { setReducaoPermitida(true); } ValidadorDeRegra.Novo() .Quando(ReducaoPermitida == false, "Não é possivel mais reduzir a marcha.") .Quando(Marcha - 1 < 0 && Velocidade != 0, "Não é possivel mais reduzir a marcha.") .DispararExcecaoSeExistir(); if (Velocidade > getVelocidadeMax(true)) { if (ReducaoPermitida && Marcha - 1 > 0) { Marcha -= 1; } setReducaoPermitida(false); } else { if (Marcha - 1 > 0) { Marcha -= 1; } else if (Velocidade == 0) { Marcha = 0; } } }
public override void MarchaRe() { ValidadorDeRegra.Novo() .Quando(Velocidade > 0, "Para acionar a ré, primeiro pare o carro.") .DispararExcecaoSeExistir(); if (Velocidade == 0) { setReducaoPermitida(true); } setMarcha(6); }
public Veiculo(int velocidade, int marcha, string tipo) { ValidadorDeRegra.Novo() .Quando(velocidade < 0, "Velocidade inválida") .Quando(marcha < 0, "Marcha inválida") .Quando(marcha > 5, "Marcha inválida") .DispararExcecaoSeExistir(); Velocidade = velocidade; Marcha = marcha; Tipo = tipo; }
//Aumenta a Marcha em 1 public void aumentaMarcha() { ValidadorDeRegra.Novo() .Quando(Marcha > 5, "A marcha máxima foi atiginda.") .DispararExcecaoSeExistir(); if (Marcha < 5) { Marcha += 1; } //Testa se com a nova marcha poderá reduzir a marcha novamente if (TestaVelocidadeMarchaAnterior()) { setReducaoPermitida(true); } }
//Incrementa a velocidade em 5 public void acelera() { if (Velocidade == 0) { if (Marcha == 1 || Marcha == 6) { Velocidade += 5; //Testa se com a nova velocidade poderá reduzir a marcha novamente if (TestaVelocidadeMarchaAnterior()) { setReducaoPermitida(true); } } ValidadorDeRegra.Novo() .Quando(Marcha != 1 && Marcha != 6, "A Velocidade está em 0, a marcha precisa estar em 1.") .DispararExcecaoSeExistir(); } else { ValidadorDeRegra.Novo() .Quando(Velocidade >= getVelocidadeMax(), "A velocidade máxima da marcha atual foi atingida, aumente a marcha para acelerar.") .DispararExcecaoSeExistir(); if (Velocidade <= getVelocidadeMax()) { if (getMarchaSuperiorDaVelocidadeAtual()) { freia(2); } else { Velocidade += 5; } } //Testa se com a nova velocidade poderá reduzir a marcha novamente if (TestaVelocidadeMarchaAnterior()) { setReducaoPermitida(true); } } }
//Decrementa a velocidade em -8 ou de acordo com o valor passado por param public void freia(int velocidade = 8) { ValidadorDeRegra.Novo() .Quando(Velocidade == 0, "A velocidade já está em 0, não é possível reduzir mais.") .DispararExcecaoSeExistir(); if (Velocidade > 0) { if (Velocidade - velocidade < 0) { Velocidade = 0; } else { Velocidade -= velocidade; } } }