Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

(Dúvida) Por que o atributo posiçãoLivre não é static

Bom dia Senhores,

alguém poderia me ajudar nessa dúvida por favor,:

(Obs: posso está viajando ou esquecido algum detalhe aqui mas ajuda a me lembrar ae ehehehhee)

Por que o atributo posiçãoLivre não é static???? pois toda vez que crio um novo objeto usando new, o construtor deveria zerar o atributo posicaoLivre e também deveria criar um novo array ?? no caso do vídeo o posicaoLivre continua contando msm chamando novos objetos do tipo Conta, sendo que deveria zerar a toda chamada.

package br.com.bytebank.teste;

import br.com.bytebank.modelo.Conta; import br.com.bytebank.modelo.ContaCorrente; import br.com.bytebank.modelo.GuardadorDeContas;

public class Teste {

public static void main(String[] args) {

    GuardadorDeContas guardador = new GuardadorDeContas();

    Conta cc1 = new ContaCorrente(22, 11);
    guardador.adiciona(cc1);

    Conta cc2 = new ContaCorrente(22, 22);
    guardador.adiciona(cc2);

    System.out.println(guardador.getQuantidadeDeElementos());


}

}

CLASSE GuardadorDeContas

package br.com.bytebank.modelo;

public class GuardadorDeContas {

private Conta[] guardador;
private int posicaoLivre;

public GuardadorDeContas() {
    guardador = new Conta[10];
    posicaoLivre = 0;
}

public void adiciona(Conta conta) {
    guardador[posicaoLivre] = conta;
    posicaoLivre++;
}

public int getQuantidadeDeElementos() {
    return this.posicaoLivre;
}

}

2 respostas
solução!

Já entendi aqui.

Vou deixar a pergunta porque pode aparecer para outras pessoas.

No caso não precisa ser static porque a classe GuardadorDeContas só é chamado apenas uma vez na classe main.

Desculpa ae e obrigado ^^

Olá Roberto, bem interessante essa questão levantada por você.

Eu acho que não é static porque cada array criado com o guardador de contas precisa ter o seu próprio índice de posições.

Se fosse estático, ao criar vários arrays do tipo GuardadorDeContas, todos eles usariam o mesmo índice de posições.

O que seria bem complicado porque o primeiro array o índice começa no zero mas à medida que fossem sendo criados novos o índice começaria de onde parou por último.

Por exemplo:

GuardadorDeContas guardador1 = new GuardadorDeContas();

Conta cc1 = new ContaCorrente(22, 7985);
guardador.adiciona(cc1); // índice 1

Conta cc2 = new ContaCorrente(22, 4658);
guardador.adiciona(cc2); // índice 2

GuardadorDeContas guardador2 = new GuardadorDeContas();

Conta cc1 = new ContaCorrente(44, 7895);
guardador.adiciona(cc1); // índice 3

Conta cc2 = new ContaCorrente(44, 4621);
guardador.adiciona(cc2); // índice 4

Um guardador 2 começaria do índice 3.

Outro problema é que como o array tem 10 posições, elas se esgotariam rapidamente.