Contador para novas instancias

oi pessoal,

por favor

coloquei um contador para o numero de instancias de Conta criadas e nada do contador funcionar instanciando apenas o contrutor que permite acessar todos os metodos de Conta.
Só funcionou quando percebi que deveria instanciar a classe e nao o construtor.

Minha duvida é:
C ao instanciar o contrutor (uma obrigação) para compilar a classe consigo usar todos os demais metodos da classe, porque este nao pode ser usado para contar o numero de instancias da classe Conta?
Tem como o contador funcionar apenas ao instancir o construtor?
esta pergunta quase que responde a questao, pois uma coisa eh um construtor e outra e uma classe pois o contador conta apenas as instancias de classe…

mas ficou confuso na minha cabeça o fato do construtor permitir a criação de objetos Conta que permitem acesso aos metodos de Conta.
o construtor tem dupla funçao (construtor/classe)?

nao sei c fui claro, mas o que quiz dizer é que o objeto criado a partir do construtor me permite fazer tudo que faria se instanciasse a classe, ou nao??

ta confuso na minha cabeça :?

outra duvida mais basica mas nao consegui resolver ainda é quanto ao metodo transfere(); que funfava e ao incrementar Conta mudando os modificadores e criar construtores nao consigo compilar/ insterpretar a saida do compilador.
para resolver até poderia encontrar um codigo pronto no google mas o objetivo é compreender a solução do ponto de vista conceitual tb.

obrigado

[code]class Conta {

private static int totalDeContas;
private int numero;
private double saldo;
private static double limite;
private Cliente titular;

/*
essa parte nao compila:| antes de definir os atributos funfava mas nao sei
prq nao compila mais e nao soube interpetrar o retorno do compilador

boolean transfere(Conta destino, double valor) {
 boolean retirou = Conta.titular.saca(valor);
		if (retirou == false) {
  	return false;
		} else {
			destino.deposita(valor);
			return true;
}

}
*/

public Conta(Cliente titular, int numero, double limite) {
this.limite = limite;
this.titular = titular;
this.numero = numero;
}

Conta() {
Conta.totalDeContas = Conta.totalDeContas + 1;
}
public int getTotalDeContas() {
return Conta.totalDeContas;
}

public double getSaldo() {
return this.saldo + this.limite;
}

public Cliente getTitular() {
return this.titular;
}

public double getLimite() {
return Conta.limite;
}

public void setTitular(Cliente titular) {
this.titular = titular;
}

public void deposita(double valor) {
if (valor > 0) {
this.saldo += valor;
} else {
System.out.println(“valor negativo nao aceito”);
}
}

public void saca(double valor) {
if (valor > this.saldo + this.limite) {
System.out.println(“Estorou limite fio”);
} else {
this.saldo -= valor;
}
}

public void mostra () {
System.out.println("numero " +this.numero);
System.out.println("titular " +this.titular.nome);
System.out.println("saldo " +getSaldo());
System.out.println(getTotalDeContas());
}
}

[/code]

no metodo transfere:

boolean retirou = Conta.titular.saca(valor);

o que vc queria fazer com essa linha?

titular é um atributo que não é static e o metodo saca tb nao…

e tenta explicar a sua duvida novamente, ta mto confuso, n deu para entender

valew xxta,

na verdade aquele metodo foi uma das inumeras tentativas pra resolver e esqueci de manter o metodo original que nao compila como segue

obrigado

[code] class Conta {

private static int totalDeContas;
private int numero;
private double saldo;
private static double limite;
private Cliente titular;

 /*
 	essa parte nao compila :| antes de definir os atributos funfava mas nao sei
 	prq nao compila mais e nao soube interpetrar o retorno do compilador

 */
boolean transfere(Conta destino, double valor) {
boolean retirou = this.saca(valor);
if (retirou == false) {
// não deu pra sacar!
return false;
}
else {
destino.deposita(valor);
return true;

}
}

public Conta(Cliente titular, int numero, double limite) {
this.limite = limite;
this.titular = titular;
this.numero = numero;
}

Conta() {
Conta.totalDeContas = Conta.totalDeContas + 1;
}
public int getTotalDeContas() {
return Conta.totalDeContas;
}

public double getSaldo() {
return this.saldo + this.limite;
}

public Cliente getTitular() {
return this.titular;
}

public double getLimite() {
return Conta.limite;
}

public void setTitular(Cliente titular) {
this.titular = titular;
}

public void deposita(double valor) {
if (valor > 0) {
this.saldo += valor;
} else {
System.out.println(“valor negativo nao aceito”);
}
}

public void saca(double valor) {
if (valor > this.saldo + this.limite) {
System.out.println(“Estorou limite fio”);
} else {
this.saldo -= valor;
}
}

public void mostra () {
System.out.println("numero " +this.numero);
System.out.println("titular " +this.titular.nome);
System.out.println("saldo " +getSaldo());
System.out.println(getTotalDeContas());
}
}

[/code]

Bueñas!

Neste trecho, você tenta atribuir a um boolean, um método (que não retorna nada, pois é void)…

boolean retirou = this.saca(valor);

Para isso, altere o método “saca()” para uma função “saca()” que retorne boolean:

public boolean saca(double valor) { ... // return false ou true; } Abraços.

PBNETO

agora ta bombando :!: :smiley:

public boolean saca(double valor)	{
	  if (valor > this.saldo + this.limite)	{
	  return false;
	  }	else {
		  this.saldo -= valor;
		  return true;
		  }
	  }

Obrigado!!
Abraços!!

Conta
http://trainspotting.pastebin.com/d1796ac22
Teste
http://trainspotting.pastebin.com/f531046f9

:lol: que bom q deu certo ! :smiley:

abraço

fmz xxta,

obrigado camarada :!: :smiley:

abraço!