1
resposta

Exercicio de Herança e uso de construtores

Pessoal, eu denovo!

percebi que muitas pessoas tiveram a mesma dificuldade no mao na massa que eu, com relação aos benditos 20 centavos que pedem pra retirar ao sacar. O que percebi é que o exercicio pede para sobrescrever o código na função transfere, porém o codigo original não utiliza sacar como parametro para a transferencia.

Nesse caso, fiz algumas alterações, sbrescrevendo também a transferencia e sacar tanto em CC quanto em CP. Vou colocar o código aqui, porém, gostaria de saber como posso realizar a transferencia utilizando o método sacar como base!

Conta



public class Conta {
    private double Saldo;
    private int agencia;
    private int numero;
    private Cliente titular;
    private static int total = 0;


    public Conta(int agencia, int numero) {
    //construtor
        //System.out.println("Criando uma conta.");
        this.agencia = agencia;
        this.numero = numero;
        //this.Saldo = 100;
        Conta.total++;
        //System.out.println("o total de contas é: " + Conta.getTotal());
    }

    //métodos

    public static int getTotal() {
        return total;
    }

    public void deposita(double valor) {
        this.Saldo += valor;
    }

    public boolean saca(double valor) {
        if (this.Saldo >= valor) {
            this.Saldo -= valor;
            return true;
        } else {
            return false;
        }
    }

    boolean transfere(double valor, Conta destino) {
        if (this.Saldo >= valor) {
            this.Saldo -= valor;
            destino.deposita(valor);
            return true;
        } else {
            return false;
        }

    }

    public boolean zerar (double valor) {
        if (this.Saldo >= valor) {
            this.Saldo -= Saldo;    
            return true;
    } else {
        return false;

        }
    }

    public double getSaldo() {
        return this.Saldo;
    }

    public void setSaldo(double Saldo) {
        this.Saldo = Saldo;
    }

    public int getAgencia() {
        return this.agencia;
    }

    public void setAgencia(int agencia) {
        this.agencia = agencia;
    }

    public int getNumero() {
        return this.numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public Cliente getTitular() {
        return titular;
    }

    public void setTitular(Cliente titular) {
        this.titular = titular;
    }
}

CP

public class ContaPoupanca extends Conta {

    public ContaPoupanca(int agencia, int numero) {
        super(agencia, numero);
    }

    @Override
    public boolean saca(double valor) {
        double valorASacar = valor - 0.2; 
        return super.saca(valorASacar);
    }

    @Override
    boolean transfere(double valor, Conta destino) {
        if (super.getSaldo() >= valor) {
            destino.deposita(valor - 0.2);
            return true;
        } else {
            return false;
    }
  }
}

CC


public class ContaCorrente extends Conta {

    public ContaCorrente(int agencia, int numero) {
        super(agencia, numero);
    }

    @Override
    public boolean saca(double valor) {
        double valorASacar = valor - 0.2; 
        return super.saca(valorASacar);
    }

    @Override
    boolean transfere(double valor, Conta destino) {
        if (super.getSaldo() >= valor) {
            destino.deposita(valor - 0.2);
            return true;
        } else {
            return false;
    }
  }
}

Teste


public class TesteContas {

    public static void main(String[] args) {
        ContaCorrente cc = new ContaCorrente(111, 222);
        ContaPoupanca cp = new ContaPoupanca(333, 444);

        cp.deposita(100.0);
        cc.deposita(200.0);

        cp.transfere(10, cc);

        System.out.println("Saldo CP: " + cp.getSaldo());
        System.out.println("Saldo CC: " + cc.getSaldo());


    }

}
1 resposta

Oie Andréia, tudo bem contigo?

Não consegui entender muito bem.

Qual foi a dificuldade com os 20 centavos no código mostrado na aula? Pois pelo que vejo, as suas alterações alteraram a lógica e o objetivo do original. O seu código parece estar funcionando, mas ele foge do que o "mão na massa" propõe.

Por isso, se puder explicar um pouco mais qual foi a dificuldade ao fazer o código proposto, que ai terei uma ideia melhor de como te ajudar :)

Fico no aguardo :)