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

3 Erros no meu código que não consigo resolver

Error CS0103 The name 'senha' does not exist in the current context ByteBankError CS0513 'Funcionario.GetBonificacao()' is abstract but it is contained in non-abstract type 'Funcionario' ByteBankError CS0513 'Funcionario.AumentarSalario()' is abstract but it is contained in non-abstract type 'Funcionario' ByteBank

using ByteBank.Funcionários;
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";

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


        }


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

namespace ByteBank.Funcionários
{
    public class Funcionario
    {

        public static int TotalDeFuncionarios { get; private set; }
        public string Nome { get; set; }
        public double Salario { get; protected set; }
        public string CPF { get; private set; }

        public Funcionario(double salario, string cpf)
        {
            CPF = cpf;
            Salario = salario;
            TotalDeFuncionarios++;
        }


        public abstract void AumentarSalario();
        public abstract double GetBonificacao();

    }
}



using ByteBank.Funcionários;
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(Diretor funcionario, String senhaTentativa)
        {
            bool usuarioAutenticado = funcionario.Autenticar(senha);

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

    }
}
4 respostas

Faltou eu colocar o código da classe diretor também

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

namespace ByteBank.Funcionários
{
    public class Diretor : Funcionario
    {

        public String Senha { get; set; }


        public Diretor(string cpf) : base(5000, cpf)
        {

        }

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

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

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

Olá Juniano, então a sua classe Funcionario tem métodos abstratos, mas ela em si não é abstrata. Então quando outras classes que herdam de Funcionario tentam sobrescrever esses métodos, da erro. Mude:

public class Funcionario

Para:

public abstract class Funcionario

Resolveu o problema da Classe Funcionário, mas ainda diz q Error CS0103 The name 'senha' does not exist in the current context ByteBank

solução!

Ah beleza, o problema é no método Logar() do SistemaInterno. Tem duas coisas erradas aqui:

1º :

public bool Logar(Diretor funcionario, String senhaTentativa)
        {
            bool usuarioAutenticado = funcionario.Autenticar(senha);

No construtor você colocou senhaTentativa mas, no funcionario.Autenticar() você está passando só senha e não senhaTentativa.

2º : String senhaTentativa String com S maiúsculo é a classe String, não é a mesma coisa que a palavra reservada string, tem diferença.

Se o problema for resolvido, por favor marque a duvida como solucionada.