Falta pouco!

0 dias

0 horas

0 min

0 seg

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

Pra que private salario se ja tenho uma propriedade Salario

No codigo:

public class Funcionario
{
    public string Nome { get; set; }
    private double salario;

    public Funcionario(string nome, double salarioInicial)
    {
        Nome = nome;
        salario = salarioInicial;
    }

    public void ReajustarSalario(double novoValor)
    {
        if (novoValor > salario)
        {
            salario = novoValor;
        }
        else
        {
            Console.WriteLine("Erro: O novo salário deve ser maior que o atual.");
        }
    }

    public double Salario
    {
        get { return salario; }
    }
}

Temos um campo privado "salario" com objetivo de impedir alterações diretas de fora da classe. Mas com uma propriedade - > public double Salario {get; private set;} não faria isso do mesmo jeito?

1 resposta
solução!

Olá Gabriel! Como vai?

A sua dúvida é muito pertinente!

No código que você apresentou, o campo privado salario é utilizado para armazenar o valor do salário de forma que ele não possa ser alterado diretamente de fora da classe. Isso é uma prática comum em encapsulamento, pois permite que você controle como e quando o valor do salário pode ser alterado.

A propriedade Salario que você mencionou, com get e private set, também pode ser usada para encapsular o acesso ao salário. No entanto, a diferença principal é que, ao usar uma propriedade com private set, você ainda está permitindo que a própria classe altere o valor diretamente, mas não de fora da classe. Isso pode ser útil em alguns casos, mas no contexto do exercício que você está fazendo, a ideia é garantir que o salário só possa ser alterado através do método ReajustarSalario.

O método ReajustarSalario é importante porque ele implementa a lógica de negócios que garante que o novo salário seja maior que o atual. Se você usasse apenas uma propriedade com private set, não teria um lugar centralizado para implementar essa lógica de validação.

Por exemplo, se alguém tentasse reajustar o salário para um valor menor diretamente, isso não seria possível com o método ReajustarSalario, mas se você tivesse apenas a propriedade com private set, precisaria garantir que essa lógica fosse implementada em todos os lugares onde o salário pudesse ser alterado dentro da classe, o que poderia ser mais propenso a erros.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.