Dúvida Construtor [RESOLVIDO]

Olá galera,

Tenho dúvida sobre o método construtor.

Por exemplo se possuo uma classe com um atributo do tipo Objeto de outra classe, como vou passar esse objeto pelo construtor? Por exemplo um jogo de apostas, uma classe jogo tem que ter um atributo do tipo Objeto jogador.

[code]public class Jogador{

 private String nome;
 private double saldo;

 public Jogador(String n){
        nome = n;
 }
 public Jogador(String n, double s){
        nome = n;
        saldo = s;
 }

 public void setSaldo(double novoSaldo){
        saldo = novoSaldo;
 }

 public double getSaldo(){
        return saldo;
 }

}[/code]

Tenho aqui uma classe Jogador que possui dois atributos e dois construtores, onde posso instânciar objetos Jogador inserindo somente o nome, ou o nome e o seu saldo à apostar no jogo. Agora minha dúvida é, estava fazendo um exercício da faculdade e no enunciado pedia para mim criar uma classe do tipo Jogo e um construtor que receberia como parâmetro o objeto Jogador.

[code]public class Jogo{

  private Jogador jogador;

  public Jogo(Jogador j){
         jogador = j;
  }

}[/code]

Então, como seria esse procedimento de passar um objeto por parâmetro? o correto não seria eu passar os dados do objeto Jogador e instânciar o mesmo no construtor, ficando assim o código:

public Jogo(String n, double s){ jogador = new Jogador(n, s); }

É correto esse procedimento de passar um objeto por parâmetro?

Cara, presta atenção.

Você cria uma variavel para armazenar uma referencia a um objeto que está na heap.

Na classe Jogador você tem esses dois construtores. Ai vamos dizer que voce tem a classe de TESTE por exemplo. ai na classe de teste voce faz assim:

Jogador jog1 = new Jogador( "lucas" );
Jogador jog2 = new Jogador( "Você", 10.0 );

Você concorda que acabou de instanciar dois objetos jogador aqui e armazena a referencia deles nas variaveis do tipo Jogador jog1 e jog2?

Então, quando voce for passar um objeto para o construtor da classe Jogo, você concorda que nao precisa instancia-lo no construtor porque ele ja foi instanciado?

Jogo game = new Jogo( jog1 );

entendeu?

Entendi, mas para esse construtor ser chamado então eu teria que ter instânciado um Objeto antes de enviá-lo por parâmetro. Caso contrário eu poderia criar uma sobrecarga deste construtor passando os dados do Objeto Jogador, caso eu queira criar um novo Jogador ao iniciar o jogo?

Desculpa, não entendi sua ultima pergunta. Poderia detalhar um pouco mais :? Eu acho que entendi que a classe Jogador serve para armazenar os dados do Jogador, e a classe Jogo? E tem mais algumas classes?

Não, na verdade a ideia é que todo jogo precisa ter um jogador. Então o que quis lhe confirmar é que o construtor da classe Jogo que recebe por parâmetro a referência do objeto Jogador vai ser usado somente quando já houver uma instância do objeto Jogador. Conseguiu entender?

Entendii. Mas cara você pode tentar fazer o que você falou, criar um outro construtor para passar só a referencia ou os dados ( passar so os dados do objeto jogador, essa parte nao entendi ) para o metodo. Só que talvez passando uma referencia vazia e deixando para instanciar só no construtor, aconteça uma NullPointerException eu acho. Por teoria aqui eu não lembro, então aconselho você a testar mesmo e vê o que acontece.

( passar so os dados do objeto jogador, essa parte nao entendi )

Essa parte eu quis me referir quando não há nenhum jogador criado, aí assume esse construtor já criando um jogador, entendeu?

[quote=jonathanleal]( passar so os dados do objeto jogador, essa parte nao entendi )

Essa parte eu quis me referir quando não há nenhum jogador criado, aí assume esse construtor já criando um jogador, entendeu?[/quote]

Entendi. Mas se voce for passar os dados do jogador se ele nao tiver sido criado, nao é melhor cria-lo logo e passa-lo tbm? Afinal de contas você já tem uma classe Jogador. Vai estar mantendo a O.O.

Sim, entendi :smiley: obrigado cara pelas dicas. Sou iniciante e quando me aperto nos exercícios venho direto aqui hehehe.

De nada. Tambem sou iniciante, e pedindo ajuda aos outros e ajudando tambem é uma ótima forma de aprender e raciocinar. Outra dica que dou tambem se quiser, é, não se prenda somenta a um livro ou uma apostila. Sempre que tiver duvida naquele livro, procure a resposta aqui ou no google ou em outros livros, mas só faça isso se voce nao for do tipo que vai se embolar ao ler de varias fontes ao mesmo tempo. Eu faço isso como um jeito de vamos dizer achar o melhor “professor” porque as vezes o que um livro nao explica direito, uma pessoa explica ou um outro livro, ou um artigo em um site e assim vai. Abraços, vou dormir. Edite seu post e coloque a tag[RESOLVIDO] no assunto do topico quando for editar. Fuiiii