1
resposta

[Projeto] Faça como eu fiz: controle de velocidade


class Veiculo
{
    private double velocidadeAtual;

    public Veiculo(string placa)
    {
        Placa = placa;
        velocidadeAtual = 0;
    }

    public string Placa { get; private set; }
    public double VelocidadeAtual { get => velocidadeAtual; }

    public void AtualizarVelocidade(double novaVelocidade)
    {
        velocidadeAtual = novaVelocidade;
    }
}

Veiculo veiculo = new Veiculo("ABC-1234");
veiculo.AtualizarVelocidade(72.5);

Console.WriteLine("Veículo: " + veiculo.Placa);
Console.WriteLine("Velocidade atual: " + veiculo.VelocidadeAtual + " km/h");
1 resposta

Olá, Eduardo! Tudo bem?

Excelente projeto! Você aplicou de forma muito precisa os conceitos de encapsulamento, garantindo que o estado interno do objeto (neste caso, a velocidade) seja controlado de maneira segura.

Seu código demonstra um ótimo domínio técnico sobre como proteger os dados de uma classe em C#:

Destaques do seu projeto:

  • Uso de Campos Privados: Ao definir private double velocidadeAtual, você impede que qualquer parte externa do código altere a velocidade diretamente sem passar pelos métodos da classe.
  • Propriedades de Somente Leitura: A propriedade VelocidadeAtual { get => velocidadeAtual; } é uma excelente escolha. Ela permite que outros objetos consultem a velocidade, mas não a modifiquem, mantendo a integridade do sistema.
  • Auto-implemented Property: Você utilizou public string Placa { get; private set; } de forma correta, garantindo que a placa seja definida apenas no momento da criação (ou internamente), mas possa ser lida por qualquer um.
  • Controle de Estado: O método AtualizarVelocidade centraliza a lógica de alteração.

Uma dica para evoluir o Encapsulamento:

Como você está no capítulo de Getters e Setters, um próximo passo interessante seria adicionar uma regra de validação dentro do método ou da propriedade. Por exemplo, você poderia impedir que a velocidade seja negativa:

public void AtualizarVelocidade(double novaVelocidade)
{
    if (novaVelocidade >= 0)
    {
        velocidadeAtual = novaVelocidade;
    }
    else
    {
        Console.WriteLine("Erro: A velocidade não pode ser negativa.");
    }
}

Isso é o que chamamos de manter a consistência do objeto: o mundo externo só pode interagir com o veículo de formas que façam sentido na vida real.

Parabéns por mais essa entrega sólida e pela constância nos seus estudos!

Espero que possa ter lhe ajudado!