OO - Construtor

6 respostas
Heero

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

6 Respostas

V

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

Rubem_Azenha

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?

Heero

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]

kuchma

“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…

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

Marcio Kuchma

Heero

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;
  }
kuchma

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

Criado 29 de agosto de 2004
Ultima resposta 30 de ago. de 2004
Respostas 6
Participantes 4