7
respostas

Ainda continuo com erro! =/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank
{
    public interface IAutenticavel
    {

        bool Autenticar(string senha);

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank
{
    public class ParceiroComercial : IAutenticavel
    {
        public string Senha { get; set; }
        public bool Autenticar(string senha)
        {
            return Senha == senha;

        }


    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank.Funcionarios
{
    public abstract class funcionario
    {
        public static int TotalDeFuncionarios { get; private set; }

        public string Nome { get; set; }
        public string CPF { get; private set; }


        public double Salario { get; protected set; }
        public string Senha { get; internal set; }

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

            CPF = cpf;
            Salario = salario;

            TotalDeFuncionarios++;
        }

        public abstract void AumentarSalario();

        public abstract double GetBonificacao();

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank.Funcionarios
{
    public class GerenteDeConta : FuncionarioAutenticavel
    {
        public GerenteDeConta(string cpf) : base(4000, cpf)
        {
            Console.WriteLine("Criando GERENTE DE CONTAS");
        }

        public string Senha { get; set; }

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

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

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

    }
}
using ByteBank.Funcionarios;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank.Sistemas
{
    public class SistemaInterno
    {

        public bool Logar(IAutenticavel Funcionarios, string senha)
        {
            bool usuarioAutenticado = funcionario.Autenticar(senha); // Aqui está com problema no AUTENTICAR

            if (usuarioAutenticado)
            {
                Console.WriteLine("Bem-Vindo ao Sistema!!");
                return true;
            }
            else
            {
                Console.WriteLine("Senha Incorreta");
                return true;
            }
        }
    }
}
7 respostas
using ByteBank.Funcionarios;
using ByteBank.Sistemas;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank
{
    class Program
    {
        static void Main(string[] args)
        {
            //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";

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

            ParceiroComercial parceiro = new ParceiroComercial();
            parceiro.Senha = "123456";

            sistemaInterno.Logar(parceiro, "123456");

            sistemaInterno.Logar(roberta, "123");
            sistemaInterno.Logar(roberta, "abc");


        }

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

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

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

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

            funcionario 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());
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank.Funcionarios
{
    public abstract class FuncionarioAutenticavel : funcionario, IAutenticavel
    {
        public string Senha { get; set; }
        public FuncionarioAutenticavel(double salario, string cpf)


            : base(salario, cpf)
        {

        }

        public bool Autenticar(string senha)
        {
            return Senha == senha; 
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank.Funcionarios
{
    public class Diretor : FuncionarioAutenticavel
    {
        //public string Senha { get; set; }

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



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

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

Olá Joana!

Acredito que encontrei o problema com seu código:

Dentro da classe SistemaInterno você fez a seguinte assinatura para o método Logar():

public bool Logar(IAutenticavel Funcionarios, string senha)

E na hora de usar o parâmetro do tipo IAutenticavel na variável usuarioAutenticado, ele está com o nome diferente (na linha que tem o comentário dizendo que está dando o erro):

bool usuarioAutenticado = funcionario.Autenticar(senha);

Ou seja, você declarou um parâmetro e está usando outro. Altere a assinatura do método da função Logar() para:

public bool Logar(IAutenticavel funcionario, string senha)

Com isso o erro deixará de ocorrer.

Bons estudos!

Infelizmente não adiantou. Acho que devo ter feito alguma besteira. Vou mandar novamente para vcs terem uma ideia.

using ByteBank.Funcionarios; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

namespace ByteBank.Sistemas { public class SistemaInterno {

    public bool Logar(IAutenticavel funcionarios, string senha) 
    {
        bool usuarioAutenticado = funcionario.Autenticar(senha); // Aqui está com problema no AUTENTICAR

        if (usuarioAutenticado)
        {
            Console.WriteLine("Bem-Vindo ao Sistema!!");
            return true;
        }
        else
        {
            Console.WriteLine("Senha Incorreta");
            return true;
        }
    }
}

}

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

namespace ByteBank.Funcionarios { public abstract class FuncionarioAutenticavel : funcionario, IAutenticavel { public string Senha { get; set; } public FuncionarioAutenticavel(double salario, string cpf)

        : base(salario, cpf)
    {

    }


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

}

Olá Joana!

Eu fiz o teste com o seu código (exatamente todo o código) e o erro continua na mesma variável.

A diferença é que antes estava Funcionarios e agora está funcionarios ainda no plural. Mas note que a variável que vai fazer a verificação é funcionario no singular.

Veja na imagem abaixo:

Esses dois valores devem ser idênticos.

Bons estudos!

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