Estou aprendendo programação Java há alguns meses.
Estou aressem na parte dos statics.
Gostaria de uma ajuda, de como fazer o seguinte exercício:
Supondo que o banco numera suas contas sequencialmente, preciso criar um atributo static ultimoNumero que guarde o nº da última conta que foi aberta, e também criar um construtor para a classe ContaBancaria que numera automaticamente a conta que está sendo instanciada por ele.
public class ContaBancaria{
private static double totalDepositos; //atributo de classe
private int numero;
private double saldo;
public ContaBancaria(int n){
numero = n; saldo = 0;
}
public boolean retira(double valor){
if (saldo >= valor){
saldo -= valor;
totalDepositos -= valor;
return true;
}
else
return false;
}
public void deposita(double valor){
saldo += valor; totalDepositos += valor;
}
....
}
O banco numera suas contas sequencialmente, acho que um contador resolveria, estou certo?
Então, preciso criar um atributo estático, para ‘salvar’ o número da última conta aberta.
Ex: Uma conta nova é criada(digamos que seja conta nº 8), o atributo estático ultimoNumero armazenará o nº da conta anterior, no caso, 7.
E após criar um construtor que numere automaticamente, cada conta que eu instanciar, por este contrutor.
edit:
O construtor deve ser outro, além deste que já fiz.
F
Far.ST
Desculpem-me pelo double post.
Mas tentei fazer do meu jeito, alguém pode verificar se está correto?
publicclassContaBancaria{privatestaticdoubletotalDepositos;//atributo de classeprivateintnumero;privatedoublesaldo;privatestaticintcont=0;//contador, para criação de contas com números sequenciais.privatestaticintultimoNumero;//atributo auxiliar para salvar o número da última conta aberta.publicContaBancaria(intn){numero=n;saldo=0;}publicContaBancaria(){cont++;numero=cont;saldo=0;}publicbooleanretira(doublevalor){if(saldo>=valor){saldo-=valor;totalDepositos-=valor;returntrue;}elsereturnfalse;}publicvoiddeposita(doublevalor){saldo+=valor;totalDepositos+=valor;}publicstaticStringgetNumeroContas(){// método static para poder utilizar os atributos staticsultimoNumero=cont-1;//Números sequenciar, logo, o número novo da conta -1, é o número anterior.if(ultimoNumero<=0){return"Primeira conta aberta";//Para não retornar 0.}else{return"Número da última conta aberta: "+ultimoNumero;}}}
F
Far.ST
Ainda no aguardo
adriano_si
Qual dos 2 construtores vais usar na criação do teu novo Objeto ContaBancaria ???
porque ambos estão independentes, como presumo que chamarás sempre o que possui o argumento, podes muito bem ignorar o Construtor sem argumentos e passar a contagem do teu ultimoNumero pra lá… que por sinal não está sendo incrementado quando crias uma nova conta…
Abs[]
F
Far.ST
Vou usar o segundo contrutor.
O que cria automaticamente o número da conta.
Pois o atributo ultimoNumero só serve para retornar qual foi o número da última conta que foi criada.
adriano_si
Porque você criou cont (que é quem está ficando com o valor da última conta criada) e ultimoNumero ???
Qual está sendo a função de ultimoNumero ??
F
Far.ST
É.
Acabei de notar este erro.
Vou arrumar.
publicclassContaBancaria{privatestaticdoubletotalDepositos;//atributo de classe privateintnumero;privatedoublesaldo;privatestaticintultimoNumero;//atributo auxiliar para salvar o número da última conta aberta. publicContaBancaria(intn){numero=n;saldo=0;}publicContaBancaria(){ultimoNumero++;numero=ultimoNumero;saldo=0;}publicbooleanretira(doublevalor){if(saldo>=valor){saldo-=valor;totalDepositos-=valor;returntrue;}elsereturnfalse;}publicvoiddeposita(doublevalor){saldo+=valor;totalDepositos+=valor;}publicstaticStringgetNumeroContas(){// método static para poder utilizar os atributos statics if(ultimoNumero<=0){return"Primeira conta aberta";//Para não retornar 0. }else{return"Número da última conta aberta: "+ultimoNumero-1;}}}