Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Erro no Exercício da Primeira Aula Designer Patterns C#

Pessoal estou implementando a classe Investimento e não estava conseguindo então decidir visualizar o resultado nas dúvidas porem a classe Investimento possui dois métodos o Arrojado() e o Moderado() que não possuem parametros , e o que acontece quando tento rodar o RealizarDeInvestimento eu recebo uma notifição

Error    1    'CursoDesignPatterns.Moderado' does not implement interface member 'CursoDesignPatterns.Investimento.Calcula(CursoDesignPatterns.Conta)'    c:\users\hugo\documents\visual studio 2013\Projects\CursoDesignPatterns\CursoDesignPatterns\Investimento.cs    22    18    CursoDesignPatterns
Error    2    'CursoDesignPatterns.Arrojado' does not implement interface member 'CursoDesignPatterns.Investimento.Calcula(CursoDesignPatterns.Conta)'    c:\users\hugo\documents\visual studio 2013\Projects\CursoDesignPatterns\CursoDesignPatterns\Investimento.cs    38    18    CursoDesignPatterns

Segue meu código da classe Investimento.cs

public interface Investimento
    {
        double Calcula(Conta conta);
    }

    public class Conservador : Investimento
    {
        public double Calcula(Conta conta)
        {
            return conta.Saldo * 0.008;
        }
    }

    public class Moderado : Investimento
    {
        private Random random;
        public Moderado()
        {
            this.random = new Random();
        }
        public double calcula(Conta conta)
        {
            if (random.Next(2) == 0)
                return conta.Saldo * 0.025;
            else
                return conta.Saldo * 0.007;
        }
    }

    public class Arrojado : Investimento
    {
        private Random random;

        public Arrojado()
        {
            this.random = new Random();
        }
        public double calcula(Conta conta)
        {
            int chute = random.Next(10);
            if (chute >= 0 && chute <= 1) return conta.Saldo * 0.5;
            else if (chute >= 2 && chute <= 4) return conta.Saldo * 0.3;
            else return conta.Saldo * 0.006;
        }
    }

Minha classe RealizadoradeInvestimento

ublic class RealizadoraDeInvestimentos
    {
        public void Realiza(Conta conta, Investimento investimento)
        {
            double resultado = investimento.Calcula(conta);
            conta.Deposita(resultado * 0.75);
            Console.WriteLine("Novo Saldo :" + conta.Saldo);
            bool escolhido = new Random().Next(101) > 30;
        }
    }

Alguem teve esse problema ??

2 respostas
solução

Hugo,

O problema é que você criou a declaração do método na interface com "C" (maiúsculo) e, nas classes, você implementou com "c" (minúsculo). Sugiro que você altere seu código para que todos os métodos comecem com a letra maiúscula, que é a convenção utilizada no C#. Além disso, sempre procure utilizar o IntelliSense do Visual Studio que evita isso.

Também recomendo que você separe o código para ficar mais claro. Separe as classes em arquivos individuais para ficar melhor a leitura.

Beleza arthur resolvido aqui , foi erro vou me atentar a essas dicas ! Grande Abraço !

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