2
respostas

[Projeto] Tornando uma propriedade obrigatória

Program.cs

Funcionario colaborador = new Funcionario("12345678910");
colaborador.Nome = "Roberto Antunes";
colaborador.Salario = 1500;

Diretor colaborador2 = new Diretor("22211133354");
colaborador2.Nome = "Juliano Rafael";
colaborador2.Salario = 5000;
public class Funcionario
    {
        public string Nome { get; set; }
        public string Cpf { get; private set; }
        public double Salario { get; set; }

        public static int TotalColaboradores { get; private set; }

        public virtual double getBonificacao()
        {
            return this.Salario * 0.20;
        }

        public Funcionario(string cpf)
        {
            if (cpf.Length == 11)
            {
                this.Cpf = cpf;
                TotalColaboradores++;
            }
            else
            {
                Console.WriteLine("Ensira um cpf válido!");
            }
        }
    }
public class Diretor : Funcionario
    {

        public override double getBonificacao()
        {
            return this.Salario + base.getBonificacao();
        }


        public Diretor(string cpf) : base(cpf)
        {}

    }
2 respostas

Oi, Luciano, tudo bem?

O código está ótimo! Agora não é possível gerar um objeto do tipo Funcionario ou Diretor sem que informemos seu CPF no construtor. Repare que na propriedade CPF você utilizou o acesso de escrita set como privado (private set;). Isso informa que a propriedade CPF ainda pode ser alterado dentro da classe Funcionario, mais especificamente em qualquer método desta classe. Por exemplo:

public class Funcionario
{
    // código omitido
    public void QualquerMetodo()
    {
        this.CPF = "972837487"; // por causa do private set alterei o CPF aqui, DEPOIS da criação do objeto! É um problema? O que acha?
    }
}

Leia o comentário que coloquei no método. Comente o que achou deste código.

Aguardo sua resposta!!

Opa Daniel, tudo bem! Acredito que seja um problema sim, pois abre brecha para alterar um dado importante por engano. Seria necessário criar alguma outra validação para impedir que este código seja executado?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software