コード例 #1
0
        //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;
                }
            }
        }
コード例 #2
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);
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        //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);
            }
        }
コード例 #5
0
        //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);
                }
            }
        }
コード例 #6
0
        //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;
                }
            }
        }