Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

erro SistemaInterno.Logar não funciona

Não sei o que está acontecendo, pois o SistemaInterno.Logar fica sublinhado, aparecendo o seguinte erro: "Uma referência de objeto é necessária para o campo , o método ou a propriedade "SistemaInterno.Logar(Diretor, string)" não estática" não consigo resolver esse problema, aqui esta o código, o mesmo usando pelo professor


            //CalcularBonificacao();

            UsarSistema();

            Console.ReadLine();
        }

        public static void UsarSistema()
        {
            SistemaInterno sistemaInterno = new SistemaInterno();

            Diretor roberta = new Diretor("159.753.398-04");
            roberta.Nome = "Roberta";
            roberta.Senha = "123";

            SistemaInterno.Logar(roberta, "123");
            //Parei em C# parte 3 no 4..
        }

        public static void CalcularBonificacao()
        {
            GerenciadorBonificacao gerenciadorBonificacao = new GerenciadorBonificacao();

            Designer pedro = new Designer("833.222.048-39");
            pedro.Nome = "Pedro";

            Diretor roberta = new Diretor("159.753.398-04");
            roberta.Nome = "Roberta";

            Auxiliar igor = new Auxiliar("981.198.778-53");
            igor.Nome = "Igor";

            GerenteDeConta camila = new GerenteDeConta("326.985.628-89");
            camila.Nome = "Camila";

            Desenvolvedor guilherme = new Desenvolvedor("456.175.468-20");
            guilherme.Nome = "Guilherme";

            gerenciadorBonificacao.Registrar(guilherme);
            gerenciadorBonificacao.Registrar(pedro);
            gerenciadorBonificacao.Registrar(roberta);
            gerenciadorBonificacao.Registrar(igor);
            gerenciadorBonificacao.Registrar(camila);

            Console.WriteLine("Total de bonificações do mês " + gerenciadorBonificacao.GetTotalBonificacao());
        }
 public abstract class Funcionario
    {
        public static int TotalDeFuncionarios { get; private set; }

        public string Nome { get; set; }
        public string CPF { get; set; }
        public double Salario { get; protected set; }

        public Funcionario(double salario, string cpf)
        {
            Console.WriteLine("Criando FUNCIONARIO");

            CPF = cpf;
            Salario = salario;

            TotalDeFuncionarios++;
        }

        public abstract void AumentarSalario();

        public abstract double GetBonificacao();         
    }
public class SistemaInterno
    {
        public bool Logar(Diretor funcionario, string senha)
        {
            bool usuarioAutenticado = funcionario.Autenticar(senha);

            if (usuarioAutenticado)
            {
                Console.WriteLine("Bem-vindo ao sistema!");
                return true;
            }
            else
            {
                Console.WriteLine("Senha incorreta!");
                return false;
            }
        }
    }
 public class Diretor : Funcionario
    {
        public string Senha { get; set; }

        public Diretor(string cpf) : base(5000, cpf)
        {
            Console.WriteLine("Criando DIRETOR");
        }

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

        public override void AumentarSalario()
        {
            Salario *= 1.15;
        }

        public override double GetBonificacao()
        {
            return Salario * 0.5;
        }
    }
2 respostas
solução!

Oi Guilherme, tudo bem?

Veja que você criou um objeto do Sistema na seguinte linha:

SistemaInterno sistemaInterno = new SistemaInterno();

Mas ao tentar utilizar o método Logar você está utilizando a própria classe ao invés do objeto que você criou:

SistemaInterno.Logar(roberta, "123");

Tente trocar de SistemaInterno.Logar(roberta, "123"); para sistemaInterno.Logar(roberta, "123");

Olá Erick estou bem e vc ? Agora deu certo e não da mais erro Muito obrigado pela ajuda