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());
}
}