discorpio: agradeço a sua ajuda. mas isso q vc falou eu ja sei e o que eu desejava não era atualizar a variavel “saldo” da classe mae “Conta”. Cada tipo de “Conta” tem sua variavel “saldo” pra uso próprio. bom mas vamos ao que interessa:
Como vcs podem ver ai em baixo temos 3 tipos de “Contas” e cada uma delas tem o metodo “double atualiza()” só que em todas elas a implementação desse metodo e diferente. Até ai tudo bem.
O problema surge quando na pagina 85 da apostila j11 Java OO ela pede pra usar a palavra “super” nos metodos herdados e reescritos (pra poupar trabalho de reescrever codigo - http://www.caelum.com.br/download/caelum-java-objetos-fj11.pdf) “double atualiza()” das classes filhas (no caso classe ContaCorrente.java e classe ContaPoupanca.java).
Ora o metodo “double atualiza()” herdado pelas classes filhas ContaCorrent.javae e ContaPoupanca.java da classe mae Conta.java já foi propositalmente reescrito pra que esse metodo herdado tivesse um comportamento diferente nessas classes filhas.
minha opinião é q eu nao devo ter entendido o enunciado corretamente ou q eu teria de ter feito um outro tipo de codigo para aplicar o que o enucidado pede.
para ser ainda mais claro veja sublinhado o codigo onde a apostila me pede pra usar “super” (nas classes ContaCorrente.javae e classe ContaPoupanca.java):
aqui abaixo a classe mae:
class Conta{
protected double saldo;
double getSaldo(){return this.saldo;}
void deposita(double valor){this.saldo = this.saldo + valor;}
void saca(double valor){this.saldo = this.saldo - valor;}
double atualiza(double taxa){
this.saldo = this.saldo + (this.saldo * taxa);
return this.saldo;
}
}
aqui as duas classe filhas
class ContaCorrente extends Conta{
double atualiza(double taxa){
this.saldo = this.saldo + (this.saldo * (taxa * 2)); // usar super aqui? como? pra que?
return this.saldo;
}
void deposita(double valor){this.saldo += (valor - 0.1);}
}
--------------------------------------------------------------------
class ContaPoupanca extends Conta{
double atualiza(double taxa){
this.saldo = this.saldo + (this.saldo * (taxa * 3)); // usar super aqui? como? pra que?
return this.saldo;
}
}
aqui um atualizador pra armazenar uns dados globais
class AtualizadorDeContas {
private static double saldoTotal = 0;
private static double selic;
AtualizadorDeContas(double selic){
this.selic = selic;
}
double getSaldoTotal(){return this.saldoTotal;}
static void roda(Conta c){
System.out.println("----------------------");
System.out.println("Saldo incial desta conta: " + c.getSaldo());
System.out.println("Saldo atualizado desta conta: " + c.atualiza(selic));
saldoTotal += c.getSaldo();
}
}
aqui o main
class TestaContas{
public static void main(String[] args){
Conta C1 = new Conta();
ContaPoupanca CP1 = new ContaPoupanca();
ContaCorrente CC1 = new ContaCorrente();
C1.deposita(1000);
CC1.deposita(1000);
CP1.deposita(1000);
AtualizadorDeContas atc = new AtualizadorDeContas(0.01);
Banco BancoVista = new Banco();
BancoVista.adiciona(C1);
BancoVista.adiciona(CC1);
BancoVista.adiciona(CP1);
BancoVista.passaParaAtualizador();
BancoVista.pegaTotalDeContas();
System.out.println("Total de depositos: " + atc.getSaldoTotal());
}
}
por ultimo a classe “Banco”
class Banco{
Conta[] contas = new Conta[4];
int totalContas;
boolean adiciona(Conta c){
for (int i=1; i<this.contas.length; i++){
if (this.contas[i] == null){
this.contas[i] = c;
break;
}
}return true;
}
Conta pegaConta(Conta c){
for(int i = 1; i < contas.length; i++){
if (this.contas[i] == c){
return this.contas[i];
}
}
return this.contas[0]; //outra duvida minha é aqui pois tive de deixar a primeira posição do array sem gravar nada pra poder aqui dar um returnr duma conta (que eu nao queria mas se eu nao der da erro pq acursa falta de retorno). tb nao entendi isso.
}
int pegaTotalDeContas(){
for(int i = 1; i < contas.length; i++){
if (this.contas[i] != null){
this.totalContas++;
}
}
return this.totalContas;
}
boolean passaParaAtualizador(){
for(int i = 1; i < contas.length; i++){
if (this.contas[i] != null){
AtualizadorDeContas.roda(this.contas[i]);
}
}
return true;
}
}