blz Pessaol,
to no mesmo problema da apostila que o super zica e ja tinha desistido deste AtualizadorDeContas mas vi a persistencia do cara em aprender certo e decidi avançar.
meus numeros finais tao esquisitos, acho que o saldo do Arbelardo ta inconsistente assim como outros numero.
ja mudei/verifiquei o codigos varias vezes inclusive a diferenca de remuneraçao do metodo atualiza(); para as conta basica, poupanca e conta corrente, mas nada :roll:
na verdade to um pouco confuso e me perdi no labirinto de oo e herançe e agradeço por ajuda;
o codigo ta um pouco extenso, mas fazer o que neh 
muito obrigado!
a classe Cliente
class Cliente {
protected String nome;
protected String sobrenome;
protected String cpf;
private int idade;
public void mudaCPF(String cpf) {
if (this.idade <= 60) {
validaCPF(cpf);
}
this.cpf = cpf;
}
private void validaCPF(String cpf) {
// serie de regras aqui, falha caso nao seja valido
}
// ..
}
a Conta
class Conta {
private static int totalDeContas;
protected int numero;
public double saldo;
protected double limite;
protected Cliente titular;
public void atualiza(double valor) {
this.saldo += this.saldo * valor;
System.out.println("remuneração selic + " + getSaldo() * valor);
}
public void transfere(Conta destino, double valor) {
if (valor > this.saldo + this.limite) {
System.out.println("Erro! saldo de " + getSaldo() + " inferior a transferencia " + valor);
} else {
this.saldo -= valor;
destino.saldo += valor;
System.out.println("transferencia - " + valor);
}
}
public Conta(Cliente titular, int numero, double limite) {
this.limite = limite;
this.titular = titular;
this.numero = numero;
}
Conta() {
Conta.totalDeContas = Conta.totalDeContas + 1;
}
public int getTotalDeContas() {
return Conta.totalDeContas;
}
public double getSaldo() {
return this.saldo + this.limite;
}
public Cliente getTitular() {
return this.titular;
}
public double getLimite() {
return this.limite;
}
public void setTitular(Cliente titular) {
this.titular = titular;
}
public void deposita(double valor) {
if (valor > 0) {
this.saldo += valor;
System.out.println("depósito + " + valor);
} else {
System.out.println("valor negativo nao aceito");
}
}
public void saca(double valor) {
if (valor > this.saldo + this.limite) {
System.out.println("Erro. saque de " + valor + " superior ao saldo " + this.getSaldo());
} else {
this.saldo -= valor;
System.out.println("saque - " + valor);
}
}
public void mostra () {
System.out.println("conta nº " +this.numero);
System.out.println("titular " +this.titular.nome);
System.out.println("limite + " +getLimite());
System.out.println("===================================");
}
}
a conta corrente
class ContaCorrente extends Conta {
public ContaCorrente(Cliente titular, int numero, double limite) {
super.limite = limite;
this.titular = titular;
this.numero = numero;
}
public void atualiza(double valor) {
this.saldo += this.saldo * (valor * 1.5);
}
public void deposita(double valor) {
this.saldo += valor - 0.10;
}
}
a Poupanca
class ContaCorrente extends Conta {
public ContaCorrente(Cliente titular, int numero, double limite) {
super.limite = limite;
this.titular = titular;
this.numero = numero;
}
public void atualiza(double valor) {
this.saldo += this.saldo * (valor * 1.5);
}
public void deposita(double valor) {
this.saldo += valor - 0.10;
}
}
o AtualizadorDeContas
public class AtualizadorDeContas {
protected double saldoTotal = 0;
protected double selic;
AtualizadorDeContas(double selic) {
this.selic = selic;
}
public 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
System.out.println("saldo anterior + " + c.getSaldo());
c.atualiza(selic);
System.out.println("saldo total + ");
System.out.println(this.saldoTotal += c.getSaldo());
// outros métodos, colocar o getter para saldoTotal!
}
// usei o println anterior pois nao preciso ficar com varios get, eu acho::??
public double getSaldoTotal() {
return this.saldoTotal;
}
}
o main
class Principal {
public static void main(String[] args) {
Cliente felipe = new Cliente();
Cliente ze = new Cliente();
Cliente marcos = new Cliente();
Cliente manuel = new Cliente();
Cliente abelardo = new Cliente();
felipe.nome = "Felipe";
ze.nome = "Zé";
marcos.nome = "Marcos";
manuel.nome = "Manuel";
abelardo.nome = "Aberlardo";
Conta minhaConta = new Conta();
Conta minhaConta2 = new Conta();
Conta minhaConta3 = new Conta();
minhaConta = new Conta(marcos, 1,1000.0);
minhaConta2 = new Conta(ze, 2,1000.0);
minhaConta3 = new Conta(felipe, 3,1000.0);
Conta cc = new ContaCorrente(manuel, 4,1000.0);
Conta cp = new ContaPoupanca(abelardo, 5,1000.0);
AtualizadorDeContas atc = new AtualizadorDeContas(0.05);
minhaConta.deposita(1000.0);
minhaConta.saca(100.0);
minhaConta.transfere(minhaConta,500.0);
atc.roda(minhaConta);
minhaConta.mostra();
minhaConta2.deposita(100.0);
minhaConta2.saca(200.0);
minhaConta2.transfere(minhaConta3,3000.0);
atc.roda(minhaConta2);
minhaConta2.mostra();
minhaConta3.deposita(555.0);
minhaConta3.saca(190.0);
minhaConta3.transfere(minhaConta,140.0);
atc.roda(minhaConta3);
cc.deposita(1450.0);
cc.saca(150.0);
cc.transfere(minhaConta,150.0);
atc.roda(cc);
cc.mostra();
cp.deposita(150.0);
cp.saca(150.0);
cp.transfere(cc,130.0);
atc.roda(cp);
cp.mostra();
System.out.println("total de contas " + minhaConta.getTotalDeContas());
}
}
a saida de tela
depósito + 1000.0
saque - 100.0
transferencia - 500.0
saldo anterior + 1900.0
remuneração selic + 97.25
saldo total +
1945.0
conta nº 1
titular Marcos
limite + 1000.0
===================================
depósito + 100.0
saque - 200.0
Erro! saldo de 900.0 inferior a transferencia 3000.0
saldo anterior + 900.0
remuneração selic + 44.75
saldo total +
2840.0
conta nº 2
titular Zé
limite + 1000.0
===================================
depósito + 555.0
saque - 190.0
transferencia - 140.0
saldo anterior + 1225.0
remuneração selic + 61.8125
saldo total +
4076.25
saque - 150.0
transferencia - 150.0
saldo anterior + 2149.9
saldo total +
6312.3925
conta nº 4
titular Manuel
limite + 1000.0
===================================
depósito + 150.0
saque - 150.0
transferencia - 130.0
saldo anterior + 870.0
saldo total +
7169.3925
conta nº 5
titular Aberlardo
limite + 1000.0
===================================
total de contas 5