OO - Construtor

Seguinte, programo oo faz um tempinho, porém soh agora atentei pra um detalhe, eu sempre usava de inicio o construtor da classe no caso abaixo (bola). Com a collection ArrayList eu iniciava com (exemplo-):

aListBola.add(new Bola (
       	raio,peso))

porém eu construi o construtor vazio e queria soh usar os metodos get e set, tem jeito?

exemplo:

class Bola {
  private float raio;
  private float peso;

  public Bola() {
      }

 public void setRaio(float r) {
    this.raio = r;
  }

}

fiz tudo direitinho:

// dentro da classe Simulador
private ArrayList aListBola = new ArrayList();
Bola b1;
// dentro do construtor
bb1 = new Bola();

porém na hora q eu fui inicializar:

// deu pau nessa linha:
bb1 = (Bola)aListBola.get(0);
// ai eu daria o:
bb1.set(11);

ai deu pau, o q q tah acontecendo???
tem q ter o construtor de inicio???
mais as duvidas de cima…

Obrigado.

Heero

Esse código que vc postou está faltando coisas… não da pra saber se vc não esta conseguindo porque esta faltando coisas ou se o erro é justamente isso…

por exemplo,
vc criou o ArrayList e a Bola, só que não deu um .add nele
na instancia de Bola vc chama set, mas esse método não existe na sua classe…

tente explicar melhor o seu problema, com um programinha inteiro, aí sim dará pra enxergar a sua dificuldade…

Abraços,
Tiago

que tipo de erro esta dando?

o metodo da classe bola chama mesmo set()?
não seria setRaio() ou setPeso()?

onde vc pegou o exemplo de Bola?

esse exemplo bola eh soh pra ilustrar a situação…
tah tosco mesmo…
a duvida minha eh se tem jeito de eu manipular objetos sem usar o construtor da classe:
utilizando apenas o metodos set pra inserir os campos…
sem dar o

alist.add((new Bola(atributos))

usar por exemplo pra inserir o raio na posição:

bb1 = (Bola)aListBola.get(posicao); 
// ai eu daria o: 
bb1.set(11); // colocando 11 no raio sem dar o new pro constutor como    acima

[/code]

[quote=“Heero”]a duvida minha eh se tem jeito de eu manipular objetos sem usar o construtor da classe:
utilizando apenas o metodos set pra inserir os campos…[/quote]

Com certeza! Basta voce ter os metodos na classe (setX, setY, etc). :smiley:

Marcio Kuchma

como?

sendo q se eu fizer:

bb1 = (Bola)aListBola.get(0); 

o programa dah pau.
acho q se ele não econtrou nada dentro da posição 0 ( a primeira posição do ArrayList), pois não foi dado um add antes, então ele não consegue pegar a referencia da posição 0 impossibilitanto de usar os metodos set…
eh isso?
como q faz sem usar o construtor? to achando q não tem jeito…
sem dar o add no ArrayList, tipo soh ir setando os seus campos…
tipo assim:

setRaio
dpois setPeso

eu falo o construtor nesse estado:

public Bola() { 
      } 

e os metodos:

public void setRaio(float r) {
    this.raio = r;
  }

  public void setPeso(float p) {
    this.peso = p;
  }

Acho que agora entendi o que voce quis dizer. O erro esta dando justamente por isso que voce falou: o programa esta tentando puxar um elemento da List que nao existe. Antes de dar um get voce precisa joga-lo la (add).

Quanto a usar objetos sem chamar o construtor - resposta simples*: nao da. Basicamente voce sempre tem que CRIAR o objeto antes de usa-lo. Pode ate cria-lo chamando um construtor sem argumentos (Bola b = new Bola()) e setar as propriedades depois com setX, setY, etc. Mas mesmo assim o objeto deve ser criado antes.

  • O objeto pode ser instanciado (criado) sem ser por uma chamada de construtor explicitamente, mas o feijao-com-arroz eh isso: instancie o objeto e entao use-o. Jogue-o na lista e entao pegue-o. Do contrario voce vai ganhar diversas Exceptions. :smiley:

Marcio Kuchma