4
respostas

Como adicionar rendimentos na conta poupança

eu quero que sempre que um objeto do tipo ContaPoupanca receber uma transferencia de um objeto tipo ContaCorrente, seja adicionado mais 10 reais nessa conta poupança. Pensei em criar um metodo boolean na classe ContaPoupanca com um if que comparasse se o objeto CP recebeu valor do objeto CC e adicione o rendimento nela, mas não consegui fazer um que compile.

Dicas?

4 respostas

Na classe mãe "Conta", cria um método chamado "transfereCCParaCP". Como parâmetro, vc obriga a definir uma conta do tipo conta corrente e outra do tipo conta poupança. O seu problema fazendo isso será não confundir o método "transfereCCParaCP" com o método "transfere"; para isso você terá que pensar em um arranjo de métodos que evite confusão.

Nesse caso eu coloco nesse metodo uma regra de adicionar tal valor na CP assim que ela receber a transferência, certo? Se sim, como ?

Pensando bem, vc terá que escrever o método transfereCCParaCP dentro da classe ContaCorrente. Note que ainda existirá o método "transfere", que serve para outros tipos de transferência.

faz assim:

public void transfereCCParaCP (ContaPoupanca cp, int valor){

cp.deposita(valor + 10);
super.saca(valor - 10); //método saca presente na Classe mãe "Conta" (acho que no exemplo da alura esse método saca foi reescrito dentro da classe Conta Corrente)

//Faça uma validação para confirmar se há dinheiro suficiente na conta corrente

}

Olá, segue a minha ideia de implementação:

Alterei o método transfere na classe Conta (mãe):

public boolean transfere(double valor, Conta contaDestino) {
        if (this.saldo >= valor) {
            System.out.println("-------------------------------------------------------");
            System.out.println("*******************************************************");
            System.out.println("Iniciando transferencia ...");
            this.saca(valor);
            if(contaDestino instanceof ContaPoupanca && this instanceof ContaCorrente) {       /*Verifica se contaDestino é do tipo ContaPoupança e também se  o objeto que está chamando o método trasfere()  é do tipo contaCorrente. Quem está ajudando é o operador instanceof*/
                contaDestino.deposita(valor + 10.0);
                System.out.println("Conta poupança adicionar mais R$10");
                System.out.println("-------------------------------------------------------");
                System.out.println("Transferencia realizada com sucesso");
                System.out.println("-------------------------------------------------------");
                System.out.println("*******************************************************");
                return true;

            }
            contaDestino.deposita(valor);
            System.out.println("Transferencia realizada com sucesso");
            System.out.println("-------------------------------------------------------");
            System.out.println("*******************************************************");
            return true;

        }
        System.out.println("Saldo insuficiente");
        System.out.println("-------------------------------------------------------");
        System.out.println("*******************************************************");
        return false;
    }

As classes filhas, ContaCorrente e ContaPoupança, não foram mexidas.

Testando a nova implementação:

public class TesteConta {
    public static void main(String[] args) {

        ContaCorrente cc = new ContaCorrente(111, 333);
        cc.deposita(100.0);

        ContaCorrente cc2 = new ContaCorrente(111, 222);
        cc2.deposita(100.0);

        ContaPoupanca cp = new ContaPoupanca(222, 222);
        cp.deposita(100.0);

        cc.transfere(10.0, cp);

        cc.transfere(10.0, cc2);

        System.out.println("CC: " + cc.getSaldo());
        System.out.println("CC2: " + cc2.getSaldo());
        System.out.println("CP: " + cp.getSaldo());
    }

}

Resultado do console:

Estou criando uma conta
Depósito realizado com sucesso
-------------------------------------------------------
Estou criando uma conta
Depósito realizado com sucesso
-------------------------------------------------------
Estou criando uma conta
Depósito realizado com sucesso
-------------------------------------------------------
-------------------------------------------------------
*******************************************************
Iniciando transferencia ...
Saque realizado com sucesso
-------------------------------------------------------
Depósito realizado com sucesso
-------------------------------------------------------
Conta poupança adicionar mais R$10
-------------------------------------------------------
Transferencia realizada com sucesso
-------------------------------------------------------
*******************************************************
-------------------------------------------------------
*******************************************************
Iniciando transferencia ...
Saque realizado com sucesso
-------------------------------------------------------
Depósito realizado com sucesso
-------------------------------------------------------
Transferencia realizada com sucesso
-------------------------------------------------------
*******************************************************
CC: 179.6
CC2: 210.0
CP: 220.0