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!