Bom dia Galera!
Estou fazendo os exercicios de poliformismo e herança da apostila da Caelum fj-11 e há o seguinte exercicio:
6) (opcional) Vamos criar uma classe que seja responsável por fazer a atualização de todas as contas
bancárias e gerar um relatório com o saldo anterior e saldo novo de cada uma das contas.
class AtualizadorDeContas {
private double saldoTotal = 0;
private double selic;
AtualizadorDeContas(double selic) {
this.selic = selic;
}
void roda(Conta c) {
// aqui voce imprime o saldo anterior, atualiza a conta,
// e depois imprime o saldo final
// lembrando de somar o saldo final ao atributo saldoTotal
}
// outros métodos, colocar o getter para saldoTotal!
}
7) (opcional) No método main, vamos criar algumas contas e rodá-las:
class TestaAtualizadorDeContas {
public static void main(String[] args) {
Conta c = new Conta();
Conta cc = new ContaCorrente();
Conta cp = new ContaPoupanca();
c.deposita(1000);
cc.deposita(1000);
cp.deposita(1000);
AtualizadorDeContas adc = new AtualizadorDeContas(0.01);
adc.roda(c);
adc.roda(cc);
adc.roda(cp);
System.out.println("Saldo Total: " + adc.getSaldoTotal());
}
}
8) (Opcional) Use a palavra chave super nos métodos atualiza reescritos, para não ter de refazer o trabalho.
eis minhas classes e o main
class Conta{
protected double saldo;
void deposita(double valor){
this.saldo += valor;
}
void saca(double valor){
this.saldo -= valor;
}
double getSaldo(){
return this.saldo;
}
void atualiza(double taxa){
this.saldo += this.saldo * taxa;
}
}
class ContaCorrente extends Conta {
void atualiza(double taxa){
this.saldo += this.saldo * (2*taxa);
}
void deposita(double valor){
this.saldo += valor - 0.10;
}
}
class ContaPoupanca extends Conta{
void atualiza(double taxa){
this.saldo += this.saldo * (3*taxa);
}
}
class AtualizadorDeContas extends Conta{
private double saldoTotal = 0;
private double selic;
AtualizadorDeContas(double selic){
this.selic = selic;
}
void roda(Conta c){
double d;
System.out.println("Saldo Anterior: "+ c.getSaldo());
super.atualiza(this.selic);
System.out.println("Saldo Final: "+c.getSaldo());
setSaldoTotal(c.getSaldo());
}
public double getSaldoTotal(){
return this.saldoTotal;
}
public void setSaldoTotal(double valor){
this.saldoTotal += valor;
}
}
public class TestaAtualizadorDeContas {
public static void main(String[] args){
Conta c = new Conta();
Conta cc = new ContaCorrente();
Conta cp = new ContaPoupanca();
c.deposita(1000);
cc.deposita(1000);
cp.deposita(1000);
AtualizadorDeContas adc = new AtualizadorDeContas(0.01);
adc.roda(c);
adc.roda(cc);
adc.roda(cp);
System.out.println("Saldo Total: " + adc.getSaldoTotal());
}
}
O que está ocorrendo é o seguinte ao depositar era para se retirar 0.10 do valor deposistado porem nao está ocorrendo e o método roda não está funcionando corretamente, pois quando chamo osuper.atualiza ele não age de acordo com a conta escolhida, alguem poderia me auxiliar neste exercicio?
Desde já agardeço
T+