Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Controle de Velocidade - Qual a diferença?

Quando fiz o exercício, fiz ele da seguinte forma:

public class Veiculo(string placa, double velocidadeAtual)
{
    public string Placa { get; } = placa;
    public double VelocidadeAtual { get; private set; } = velocidadeAtual;

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

Olhando a solução do instrutor, notei que ele faz o código de forma diferente.

Me parece que em ambos casos, o get do VelocidadeAtual está público e o set está privado, existe alguma diferença prática entre os dois? Algum problema em fazer da forma como eu resolvi?

1 resposta
solução!

Oii, Willian!
Boa pergunta! Vamos lá:

Diferença entre as duas abordagens:

  1. Solução do instrutor

    • velocidadeAtual é um campo privado.
    • Existe uma propriedade de leitura (get) chamada VelocidadeAtual que apenas retorna o valor desse campo.
    • O controle de atualização acontece somente dentro do método AtualizarVelocidade.

    Aqui, a classe deixa bem claro que só existe um único ponto de alteração do valor: o método.

  2. Sua solução

    • VelocidadeAtual é uma propriedade automática com get público e set privado.
    • O método AtualizarVelocidade apenas chama esse set privado.

    Também garante o encapsulamento, porque o set não pode ser acessado fora da classe.

Diferença prática

  • Na prática, o resultado é o mesmo: fora da classe, só dá para ler a velocidade, nunca alterar diretamente.

  • Diferença de estilo:

    • A versão do instrutor separa o campo (armazenamento) da propriedade (exposição).
    • A sua versão usa auto-property com private set, que é mais concisa.

Quando usar cada uma?

  • Versão do instrutor (campo + get): útil se você precisar de lógica mais complexa ao retornar o valor (ex.: arredondar, validar, formatar).
  • Sua versão (auto-property): ótima quando o valor é simples e não exige tratamento extra.

Pra concluir: Não há problema nenhum em fazer do jeito que você fez. Ambas respeitam o encapsulamento. A diferença é mais de estilo e necessidade futura do que de funcionalidade.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!