Caelum FJ11 - finalizado e refazendo

Bom galera eu terminei minha leitura da apostila da caelum FJ11 mas antes de partir para FJ21 ou fazer um curso quero dizer que ela foi importantissima nossa me deu uma mega noção da coisa ja consigo ler codigos e montar pequenos sisteminhas respeitando OO, mas antes de partir adiante resolvi refazer a leitura e passar os topicos marcados por mim novamente, foi bom, por que notei que havia deixado alguns exercicios pra traz queria a ajudade de vc´s em um em particular segue abaixo :

[b]10) (Opcional, Trabalhoso) Crie uma classe Banco que possui um array de Conta. Repare que num array de Conta você pode colocar tanto ContaCorrente quanto ContaPoupanca. Crie um método void adiciona(Conta
c), um método Conta pegaConta(int x) e outro int pegaTotalDeContas(), muito similar a relação anterior
de Empresa-Funcionario.
Faça com que seu método main crie diversas contas, insira-as no Banco e depois, com um for, percorra
todas as contas do Banco para passá-las como argumento para o AtualizadorDeContas.

[/b]
Bom vai a duvida:

eu montei a class Banco assim :

[code]class Banco{
protected Conta[] conta;
Banco(int valor){
this.conta = new Conta[valor];
}
public void adiciona(Conta c){
for (int i = 0; i < conta.length;i++){
if (this.conta[i] == null) {
this.conta[i] = c;
return;
}
else{
System.out.println(“Array cheia”);
}
}
}
//public Conta pegaConta(int x){
// System.out.println(conta[x]);
// }
public int pegaTotalDeContas(){
int total =0;
for (int i = 0; i < this.conta.length; i++){
if (this.conta[i] == null){
total += 0;
}
else {
total += 1;
}

	}
	return total;

}
}

[/code]

Bom não sei como montar ou não entendi oque o pessoal da caelum quer no metodo Conta pegaConta(), se alguem puder me ajudar.

Desde ja grato

Ola

A ideia é que, em vez de voce imprimir algum dado sobre a conta, é pegar a referencia dessa conta e devolve-la para quem chamou esse metodo:

public Conta pegaConta(int x){  
      System.out.println(conta[x]);  
} 

dessa forma, se alguem quisesse imprimir o saldo da 7a conta do banco, faria algo como:

System.out.println(bancp.pegaConta(6).getSaldo());

Voce pode melhorar bastante esse codigo ainda, como lancar uma exception caso na posicao X do banco nao haja nenhuma conta (null), ou caso esse numero ultrapasse contas.length ou seja menor que zero…

Cada conta filha tem um método atualiza (vide apostila).
Depois, qdo vc pegar a conta no main atraves do banco (banco.pegaConta(x)), passa ela pro atualizador, que o atualizador atualiza cada uma. Seu código está assim?
Depois, se puder, troca seus arrays por List. Vai economizar bastante código.

Bom galera entendido e resolvido deixe-me so corrigir meu codigo acima pois contem um erro que não havia percebido o metodo pegaConta(int x) tem que ter um retorno e esqueci deste detalhe:

[code]class Banco{
protected Conta[] conta;
Banco(int valor){
this.conta = new Conta[valor];
}
public void adiciona(Conta c){
for (int i = 0; i < conta.length;i++){
if (this.conta[i] == null) {
this.conta[i] = c;
break;
}
else{
System.out.println(“Array cheia”);
}
}
}
public Conta pegaConta(int x){
return conta[x];
}
public int pegaTotalDeContas(){
int total =0;
for (int i = 0; i < this.conta.length; i++){
if (this.conta[i] == null){
total += 0;
}
else {
total += 1;
}

	}
	return total;

}
}[/code]

Ola.
Gostaria de saber se você pode me ajudar com o exercício 5, do capitulo 6 da apostila fj11.

/‘nome’ da classe conta
this.titular = tit.getNome();
//Atribuição do ‘cpf’ da classe ‘Titular’ para a variável
//‘cpf’ da classe conta
this.cpf = tit.getCpf();

//Setando o valor de limite para a variável ‘limite’
this.limite = limite;

}

public void depositar(double valor) {
//Deposito do valor na conta
this.saldo = valor;
// implemente o código aqui
}
public void sacar(double valor) {
if (valor >= this.saldo + this.limite){
System.out.println(“Valor indisponivel”);
}else{
this.saldo -= valor;

//public void sacar (double valor){
//Saque do valor na conta somente se houver saldo
//if (valor <= saldo limite) {
//this.saldo -= valor;

}

{//Mensagem para o caso de não haver saldo na conta
System.out.println(“Saldo insuficiente para realizar este saque!”);
}
}

public void transferir (Conta destino, double valor){
//Método que realiza transferência
if (saldo - valor > 0)
{
this.saldo -= valor;
}
else
{//Mensagem para o caso de não haver saldo positivo para realizar a transferência
System.out.println(“Saldo insuficiente para realizar esta transferência!”);

} //Realiza o deposito na classe destino
destino.depositar(valor);

}

public void mostrarSaldo(){
//Mostra saldo atual

System.out.println( " saldo da conta " titular " é " (saldo limite) “.”);
}

}