Duvida de principiante. Classe Paciente e Classe Endrecos, cmo referenciar endrecos

E ai galera blz??
Então a minha duvida é bem de principiante!!!
Tenho uma classe paciente nela varios atributos, e tenho a classe endereco com varios atributos tambem!!
Como eu referencio um paciente a um certo endereco ou um certo endereco a um paciente hehehe!!???

Exemplo
Paciente 1 Endereco1
nome : fulano rua : k
tel : 1234 numero : 2

paciente 2 Endereco2
nome : fulano2 Rua : k2

pensei em criar um vetor de enderecos dentro de paciente, so que isso me embolou mais ainda!!!
Agradeco desde ja !!

O mais correto me parece dentro de tua classe paciente um List ou um Set do tipo Endereço.

No caso que o paciente só, poda ter um endereço, basta com somente criar um atributo do tipo Endereço.

Uhummm…complicado…pelo menos pra mim que nao entendo muito…
mas acho que eu faria era nao ter uma classe endereço…pois endereço poderia ser um atributo de paciente…
masssss poderia fazer uma herança entre paciente e endereço…paciente herdando de endereço…entao todo paciente vai ter todos atributos e metodos da classe endereço!
acho que é mais ou menos por ai…
um abraço!

Alias acho que o mais certo mesmo é a herança entre eles.

[quote=Cássio Tessaro]Uhummm…complicado…pelo menos pra mim que nao entendo muito…
mas acho que o mais correto era nao ter uma classe paciente…pois endereço poderia ser um atributo de paciente…
masssss poderia fazer uma herança entre paciente e endereço…paciente herdando de endereço…entao todo paciente vai ter todos atributos e metodos da classe endereço!
acho que é mais ou menos por ai…
um abraço![/quote]
Não, você adotou uma abordagem errada. Um paciente pode ter 1 ou mais endereços ( quem mora sozinho pode “morar” na mãe também, não? ) e paciente nunca vai ser um endereço ( a não ser que o cara morra e seja famoso ).
O ideal seria fazer o que colega falou:
Paciente:
-nome
-idade
-etc
-Set( ou List )

Logradouro:
-Rua
-Número
-CEP
-etc

Nem é tão complicado modelar essas classes, pense na vida real: uma pessoa é um endereço ( no caso da herança proposta )? Uma pessoa tem todos os métodos do endereço ( isAsfaltada() por exemplo )? Se não, então são entidades diferentes e devem ser tratadas como tal.

Até!

:oops:
como eu disse eu nao entendo muito bem ainda…comecei faz menos de uma semana…
mas valeu…
pelo menos eu consegui entender!

É errado fazer herança porque não passa no teste É-UM.
Existem testes É-UM e TEM-UM.

Portanto, não passa no teste É-UM, então NÃO deve ser aplicada a herança.

Se ele passa no teste TEM-UM (paciente TEM-UM endereço) aplica-se a composição, que é quando uma classe tem referência a objetos de outras classes como membros.

[quote=dc.rec1]O mais correto me parece dentro de tua classe paciente um List ou um Set do tipo Endereço.

No caso que o paciente só, poda ter um endereço, basta com somente criar um atributo do tipo Endereço.[/quote]

Beleza vou pesquisar sobre esses termos, e no caso de dúvidas ,voltarei aqui hehehe!!
Abraços!

Então eu poderia criar dentro da classe paciente um atributo do tipo endereço?
ex:

classe paciente

//classe paciente
public class Paciente {
	private String nome;
	private int idade;
	public Endereco endereco;//atributo do tipo endereço
	
	//inicializando Getters e Setters
	
	
	public String getNome() {
		return nome;
	}
	
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	
	public int getIdade() {
		return idade;
	}
	
	
	public void setIdade(int idade) {
		this.idade = idade;
	}
	
		
	}

classe endereço


//classe endereço
public class Endereco {
	private String rua;
	private int numero;
	private String cidade;
	
	
	
	//inicializando getters e setters
	public String getRua() {
		return rua;
	}
	public void setRua(String rua) {
		this.rua = rua;
	}
	public int getNumero() {
		return numero;
	}
	public void setNumero(int numero) {
		this.numero = numero;
	}
	public String getCidade() {
		return cidade;
	}
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}
	

}

main


public class Teste {

	public static void main(String[] args) {
	 Paciente paciente = new Paciente();//objeto paciente
	 Endereco endereco = new Endereco();//obejto endereco
	 
	 
	 
	 //atribuindo valores
	 paciente.setNome("Cássio Tessaro");
	 paciente.setIdade(15);
	 paciente.endereco.setCidade("São Paulo");
	 paciente.endereco.setRua("rua dos perdidos");
	 paciente.endereco.setNumero(666);
	 
	 
	 //mostrando valores
	 System.out.println(paciente.getNome()+ "\n");
	 System.out.println(paciente.getIdade() + "\n");
	 System.out.println(paciente.endereco.getCidade() + "\n");
	 System.out.println(paciente.endereco.getRua() + "\n");
	 System.out.println(paciente.endereco.getNumero() + "\n");
		
		
		

	}

}

so que mesmo assim ta dando erro…Exception in thread “main” java.lang.NullPointerException
at Teste.main(Teste.java:13)

alguem poderia me dar uma luz?
agradeço desde ja!

As duas primeiras partes estão corretas, a terceira é que está errada. Você chega a iniciar um novo endereço e o que você faz com ele? Nada! Você começa a preencher um endereço que não existe no cliente. Melhor seria assim:
ex:


public class Teste {

	public static void main(String[] args) {
	 Paciente paciente = new Paciente();//objeto paciente
	 Endereco endereco = new Endereco();//obejto endereco
	 
	 //atribuindo valores
	 paciente.setNome("Cássio Tessaro");
	 paciente.setIdade(15);
///////////////////////////////////////////////
// Atente aqui!
         endereco.setCidade("São Paulo");
	 endereco.setRua("rua dos perdidos");
	 endereco.setNumero(666);
	 
	 paciente.setEndereco(endereco);
////////////////////////////////////////////////////////////
	 //mostrando valores
	 System.out.println(paciente.getNome()+ "\n");
	 System.out.println(paciente.getIdade() + "\n");

//////////////////////////////////////////////////////////
// Atente aqui!
	 System.out.println(paciente.getEndereco().getCidade() + "\n");
	 System.out.println(paciente.getEndereco().getRua() + "\n");
	 System.out.println(paciente.getEndereco().getNumero() + "\n");
////////////////////////////////////////////////////////////////
		
		

	}

}

E na classe paciente faltou o setter e getter do endereco:

//classe paciente
public class Paciente {
	private String nome;
	private int idade;
	private Endereco endereco;//atributo do tipo endereço
	
	//inicializando Getters e Setters
	
	
	public String getNome() {
		return nome;
	}
	
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	
	public int getIdade() {
		return idade;
	}
	
	
	public void setIdade(int idade) {
		this.idade = idade;
	}
	
	public Endereco getEndereco(){
               return this.endereco;	
	}

        public void setEndereco(Endereco endereco){
                this.endereco=endereco;
        }
}

Até!

Ahhhhh sim sim…agora sim! eu pensei que ao criar o objeto do tipo endereço eu ja estava setando o seus valores diereto em paciente…por isso eu nao havia nem criado os Setters e Getters dele na classe paciente…
Valeu e agradeço a atenção dispensada.
:lol:

[quote=dc.rec1]O mais correto me parece dentro de tua classe paciente um List ou um Set do tipo Endereço.
[/quote]

O que seria esse List?? :oops:

Estudaste Collections? Pegue a apostila FJ-11 da Caelum que lá explica bem esse tópico e não só essa collection.

Até!

[quote=maquiavelbona]Estudaste Collections? Pegue a apostila FJ-11 da Caelum que lá explica bem esse tópico e não só essa collection.

Até![/quote]

Não não estudei ainda…mas obrigado vou dar uma lida nesse material.
:stuck_out_tongue:

Valeu gente deu pra esclarecer!!! vou dar uma estudada em collections tbm !!!
Abraços e retorno em breve cm mais duvidas hehehe!