Dúvidas no uso de classes

8 respostas
swing

Pessoal, estou tentando fazer uma classe 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.
No método main, tentei criar algumas contas e passá-las, só que quando compilo os valores vêm zerados, alguém sabe pq?

class Conta {
	protected double saldo = 0;	
	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 deposita(double valor){
		this.saldo += valor * 0.9962;
	}	
	void atualiza(double taxa){
		this.saldo += this.saldo * taxa * 2;
	}
}

class ContaPoupanca extends Conta {	
	void atualiza(double taxa){
		this.saldo += this.saldo * taxa * 3;
	}
}

public class AtualizadorDeContas {
	private static double saldoTotal = 0;
	private double selic;
	Conta c = new Conta();
	AtualizadorDeContas(double selic){
		this.selic = selic;
	}	
	void roda(Conta c){
		System.out.println(c.getSaldo());
		c.atualiza(10);
	}	
	double getSaldoTotal(){
		saldoTotal = saldoTotal + c.getSaldo();
		return saldoTotal;
	}
}

public class TestaContas {
	public static void main(String[] args) {
		AtualizadorDeContas adc = new AtualizadorDeContas(100);
		Conta c  = new Conta();
		Conta cc = new ContaCorrente();
		Conta cp = new ContaPoupanca();
		adc.roda(c);
		adc.roda(cc);
		adc.roda(cp);
		System.out.println("Saldo Total: " + adc.getSaldoTotal());
	}
}

desde já agradeço qq ajuda.

8 Respostas

A

acho q o seu problema esta aqui:

quando voce chama o metodo

adc.getSaldoTotal() ele chama isso
double getSaldoTotal(){
 		saldoTotal = saldoTotal + c.getSaldo();
 		return saldoTotal;
 	}

e essa variavel 'c' eh a 'Conta c = new Conta();'

entao vc nao esta pegando as atualizadas..... para funcionar isso acho q vc teria q fzer assim , mudar o metodo :
void roda(Conta c){
 		System.out.println(c.getSaldo());
 		c.atualiza(10);
this.c = c;
 	}

acredito q seja isso!!! nao testei entao testa ai!!

marciobarroso

Tente mudar a sua classe conforme acima

Você esta se confundindo com as instancias de objeto.

[]'s

swing

Realmente eu me passei nesse detalhe, mas já fiz a alteração que o amigo recomendou, só que não resolveu o problema.

O resultado está saindo assim:
0.0
0.0
0.0
Saldo Total: 0.0

A

cara esta aparecendo tudu 0 pq vc nao esta depositando nd nas contas ex:

public class TestaContas { public static void main(String[] args) { AtualizadorDeContas adc = new AtualizadorDeContas(100); Conta c = new Conta(); c.deposita(50.5); Conta cc = new ContaCorrente(); cc.deposita(30.56); Conta cp = new ContaPoupanca(); cp.deposita(10.5); adc.roda(c); adc.roda(cc); adc.roda(cp); System.out.println("Saldo Total: " + adc.getSaldoTotal()); } }

swing

Foi mal de novo, eu tinha apagado essas linhas, mas o saldo total continua zerado.

swing

Pessoal, mais uma coisa, eu preciso mostrar:

  • saldo anterior
  • atualiza
  • saldo atual

só que eu não posso somar o valor do saldo + o percentual de atualização pq o método do saldo é double e o atualiza é void, já tentei ver nos livros aki e não encontro essa resposta, será q alguém poderia me ajudar?

ele está imprimindo assim para a conta c:
1000.0
100.0

mas deveria ser:
1000.0
1100.0

void roda(Conta conta){ System.out.println(conta.getSaldo()); conta.atualiza(0.10); System.out.println(conta.getSaldo()); }

T
void atualiza(double taxa){
 		this.saldo = this.saldo * taxa;
 	}

Deveria ser

void atualiza(double taxa){
 		this.saldo += this.saldo * taxa;
 	}

ou, o que acho mais claro:

void atualiza(double taxa){
 		this.saldo = this.saldo * (1 + taxa);;
 	}
swing

era isso msm. valew

Criado 30 de maio de 2007
Ultima resposta 30 de mai. de 2007
Respostas 8
Participantes 4