1
resposta

Acesso e modificação da propriedade senha

Olá, boa tarde! Tudo bem?

Estou com uma dúvida no atributo senha. Ele foi removido da classe funcionário. Como então poderá ser acesso e setado um valor? Não consigo acessar e modificar algo que não existe.

namespace ByteBank.Funcionarios
{
    public abstract class Funcionario
    {
        public string Nome { get; private set; }
        public string CPF { get; private set; }
        public double Salario { get; protected set; }


        protected Funcionario(string nome, string cpf, double salario)
        {
            Nome = nome;
            CPF = cpf;
            Salario = salario;
        }

        public abstract double GetBonificacao();

        public abstract void AumentarSalario();

    }
}
using ByteBank.Sistemas;

namespace ByteBank.Funcionarios
{
    public class Diretor : Autenticavel
    {
        public Diretor(string nome, string cpf, double salario) : base(nome, cpf, salario)
        {
        }

        public override double GetBonificacao()
        {
            return Salario * 0.5;
        }

        public override void AumentarSalario()
        {
            Salario *= 1.2;
        }
    }
}
using System;
using ByteBank.Funcionarios;

namespace ByteBank.Sistemas
{
    public class SistemaInterno
    {
        public bool Logar(Autenticavel funcionario, string senha)
        {
            bool usuarioAutenticado = funcionario.Autenticar(senha);

            if (usuarioAutenticado)
            {
                Console.WriteLine("Bem-vindo ao sistema!");
            }
            else
            {
                Console.WriteLine("Senha incorreta!");
            }
            return false;
        }
    }
}
using ByteBank.Funcionarios;

namespace ByteBank.Sistemas
{
    public abstract class Autenticavel : Funcionario
    {
        public string Senha { get; set; }

        public bool Autenticar(string senha)
        {
            return Senha == senha;
        }

        protected Autenticavel(string nome, string cpf, double salario) : base(nome, cpf, salario)
        {
        }
    }
}
1 resposta

Só consigo fazer isso se eu mudar meu objeto da seguinte forma..

SistemaInterno sistemaInterno = new SistemaInterno();
            Funcionario roberta = new Diretor("Roberta", "123.456.789-00", 5000);

Para o código abaixo!

SistemaInterno sistemaInterno = new SistemaInterno();
            Autenticavel roberta = new Diretor("Roberta", "123.456.789-00", 5000);

Quando faço isso, a propriedade senha torna-se vísivel, pois ela está presente na classe Autenticável.cs. Está correta essa implementação?