Duvida de principiante. Classe Paciente e Classe Endrecos, cmo referenciar endrecos
14 respostas
O
orlandini
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.
Cassio_Tessaro
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!
Cassio_Tessaro
Alias acho que o mais certo mesmo é a herança entre eles.
maquiavelbona
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!
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é!
Cassio_Tessaro
:oops:
como eu disse eu nao entendo muito bem ainda…comecei faz menos de uma semana…
mas valeu…
pelo menos eu consegui entender!
Andre_Brito
É 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.
O
orlandini
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.
Beleza vou pesquisar sobre esses termos, e no caso de dúvidas ,voltarei aqui hehehe!!
Abraços!
Cassio_Tessaro
Então eu poderia criar dentro da classe paciente um atributo do tipo endereço?
ex:
classe paciente
//classe pacientepublicclassPaciente{privateStringnome;privateintidade;publicEnderecoendereco;//atributo do tipo endereço//inicializando Getters e SetterspublicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicintgetIdade(){returnidade;}publicvoidsetIdade(intidade){this.idade=idade;}}
classe endereço
//classe endereçopublicclassEndereco{privateStringrua;privateintnumero;privateStringcidade;//inicializando getters e setterspublicStringgetRua(){returnrua;}publicvoidsetRua(Stringrua){this.rua=rua;}publicintgetNumero(){returnnumero;}publicvoidsetNumero(intnumero){this.numero=numero;}publicStringgetCidade(){returncidade;}publicvoidsetCidade(Stringcidade){this.cidade=cidade;}}
main
publicclassTeste{publicstaticvoidmain(String[]args){Pacientepaciente=newPaciente();//objeto pacienteEnderecoendereco=newEndereco();//obejto endereco//atribuindo valorespaciente.setNome("Cássio Tessaro");paciente.setIdade(15);paciente.endereco.setCidade("São Paulo");paciente.endereco.setRua("rua dos perdidos");paciente.endereco.setNumero(666);//mostrando valoresSystem.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!
maquiavelbona
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:
E na classe paciente faltou o setter e getter do endereco:
//classe pacientepublicclassPaciente{privateStringnome;privateintidade;privateEnderecoendereco;//atributo do tipo endereço//inicializando Getters e SetterspublicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicintgetIdade(){returnidade;}publicvoidsetIdade(intidade){this.idade=idade;}publicEnderecogetEndereco(){returnthis.endereco;}publicvoidsetEndereco(Enderecoendereco){this.endereco=endereco;}}
Até!
Cassio_Tessaro
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:
Cassio_Tessaro
dc.rec1:
O mais correto me parece dentro de tua classe paciente um List ou um Set do tipo Endereço.
O que seria esse List?? :oops:
maquiavelbona
Estudaste Collections? Pegue a apostila FJ-11 da Caelum que lá explica bem esse tópico e não só essa collection.
Até!
Cassio_Tessaro
maquiavelbona:
Estudaste Collections? Pegue a apostila FJ-11 da Caelum que lá explica bem esse tópico e não só essa collection.
Até!
Não não estudei ainda…mas obrigado vou dar uma lida nesse material.
O
orlandini
Valeu gente deu pra esclarecer!!! vou dar uma estudada em collections tbm !!!
Abraços e retorno em breve cm mais duvidas hehehe!