Dúvida Construtor Instanciando uma Classe

4 respostas
frooid

Bom Dia Pessoal,
É meu primeiro post aqui e também o primeiro contato com POO. Como trabalho na área de teste de software não quero aprender da maneira errada, claro que "quebrar a cabeça" é uma coisa, mas criar um código mal feito e nada robusto é outra bem diferente rs.
Vamos lá, eu possuo uma classe Pessoa e nesta classe estou criando um construtor que já instancia a Classe Endereço

public Pessoa() {
		endereco = new Endereco();

// metodo insert
	public void inserir(String primeiroNome, String ultimoNome, Endereco endereco) {
		this.primeiroNome = primeiroNome;
		this.ultimoNome = ultimoNome;
		this.endereco = endereco;
		
		System.out.println(endereco.getBairro());
	}

}

Agora que vêm a dúvida como já criei um objeto da classe Endereço eu tenho criar novamente para usar no main?

Ex:
public static void main(String[] args) {
		
		//Declaracao de variaveis
		Pessoa pessoa = new Pessoa();
		Endereco end = new Endereco();
		end.setBairro("test");
		pessoa.inserir(null, null,end);


	}

Coloque tudo null para simplificar. Pessoal isto funciona mas é assim mesmo? Não estou gastando recurso computacional?

Agradeço desde já.
Jean

4 Respostas

nel

Oi!

Você pretende utilizar o que chamamos de composição, nesse caso, está dizendo que toda pessoa irá possuir um Endereço prévio, mesmo que não preenchido. Se quiseres continuar a usar dessa forma, simplesmente crie um getEndereco() dentro da sua classe Pessoa, dessa forma, você simplesmente utiliza o objeto já criado no construtor da classe Pessoa. Assim:

public class Pessoa {
    private Endereco end;
    
    public Pessoa() {
        end = new Endereco();
    }
    
    // teus outros métodos
    public Endereco getEndereco() {
        return end;
   }
}

No seu main basta fazer:

public static void main(String[] args) {   
           
      //Declaracao de variaveis   
      Pessoa pessoa = new Pessoa();   
      Endereco end = pessoa.getEnd();
      end.setBairro("test");   
      pessoa.inserir(null, null,end);     
  
}

Certo? :)

Abraços.

frooid

Cara agora entendi! Muitíssimo obrigado pela resposta!
Neste final de semana é dia de programar rsrs!

Grato.
Bom final de semana

lucasportela

Muito interessante, parabéns pela explicação

ruben_m

nel ja disse tudo… Muito bem Explicado

Criado 26 de agosto de 2011
Ultima resposta 26 de ago. de 2011
Respostas 4
Participantes 4