Como tratar pessoa fisíca e juridica + cliente que pode ser os dois?
Boa tarde,
Relaciomaneto (Pessoa fisica e juridica) até ai tudo bem, o problema está
em ligar o cliente(Porque ele pode ser os dois)
até o momento estou fazendo desse jeito
public abstract class Pessoa {
.......
}
public class Fisica extends Pessoa {
........
}
public class Juridica extends Pessoa {
........
}
A duvida vem agora e cliente que pode ser os dois?
eu vi em outros forum que o melhor é usar composição?Seria essa a maneira de resolver esse problema?
Fico no aguardo de uma ajuda
Relaciomaneto (Pessoa fisica e juridica) até ai tudo bem, o problema está
em ligar o cliente(Porque ele pode ser os dois)
até o momento estou fazendo desse jeito
public abstract class Pessoa {
.......
}
public class Fisica extends Pessoa {
........
}
public class Juridica extends Pessoa {
........
}
A duvida vem agora e cliente que pode ser os dois?
eu vi em outros forum que o melhor é usar composição?Seria essa a maneira de resolver esse problema?
Fico no aguardo de uma ajuda
Thiago Volpato
Curtidas 0
Respostas
Robson Teixeira
22/03/2012
Iae tiago blz
so pergunta quais são os requisitos de sua app para que você diferencie pessoa fisica de pessoa juridica pois pelo que sei a mesma pessoa pode ter um cpf e um cnpj o que respectivamente destaca pessoa fisica e juridica.
att
robson
so pergunta quais são os requisitos de sua app para que você diferencie pessoa fisica de pessoa juridica pois pelo que sei a mesma pessoa pode ter um cpf e um cnpj o que respectivamente destaca pessoa fisica e juridica.
att
robson
GOSTEI 0
Thiago Volpato
22/03/2012
Robson,
Eu preciso diferenciar por que na minha aplicação o cliente pode ser tanto pessoa física como jurídica
e eu andei vendo nos fóruns esse assunto gera muita polémica mas ninguém fala ou da uma opinião clara
de como pode ser feito
Nesse caso como devo usar obter a pessoa física e jurídica para minha classe cliente que pode ser tanto um como outro?
Att
Eu preciso diferenciar por que na minha aplicação o cliente pode ser tanto pessoa física como jurídica
e eu andei vendo nos fóruns esse assunto gera muita polémica mas ninguém fala ou da uma opinião clara
de como pode ser feito
Nesse caso como devo usar obter a pessoa física e jurídica para minha classe cliente que pode ser tanto um como outro?
Att
GOSTEI 0
Davi Costa
22/03/2012
Na entidade cliente vc mantém uma pessoa (que pode ser física ou jurídica) - composição mesmo é a melhor saída.
Att Davi
Att Davi
GOSTEI 0
Dyego Carmo
22/03/2012
Deu certo ?
Valeu !
Valeu !
GOSTEI 0
Thiago Volpato
22/03/2012
Problema resolvido
Usei Herança com a estratégia JOINED
Valeu
Usei Herança com a estratégia JOINED
Valeu
GOSTEI 0
Thiago Volpato
22/03/2012
Boa tarde,
Eu estou usando Herança JOINED e não tinha pensando em cliente(podendo ser Fisico ou juridico)
agora bateu a duvida...
Tem como eu fazer isso sem perder minha herança?
e se for usar composição como poderia nesse caso.
Herança:
classe Pessoa
classe Fisico extends Pessoa
Classe Juridica extends Pessoa
e a classe Cliente como ficaria podendo ser os dois?
Fico no aguardo
Eu estou usando Herança JOINED e não tinha pensando em cliente(podendo ser Fisico ou juridico)
agora bateu a duvida...
Tem como eu fazer isso sem perder minha herança?
e se for usar composição como poderia nesse caso.
Herança:
classe Pessoa
classe Fisico extends Pessoa
Classe Juridica extends Pessoa
e a classe Cliente como ficaria podendo ser os dois?
Fico no aguardo
GOSTEI 0
Robson Teixeira
22/03/2012
Na sua classe que vai representar a venda basta você criar o seguinte atributo onde esse atributo pode ser tanto Pessoa Fisica quanto Juridica.
public class Venda{
private Pessoa cliente;
// get,set e os demais atributos omitidos.
}
espero ter ajudado
att
robson
public class Venda{
private Pessoa cliente;
// get,set e os demais atributos omitidos.
}
espero ter ajudado
att
robson
GOSTEI 0
Thiago Volpato
22/03/2012
Robson,
então o problema está na classe Cliente ainda
como que eu vou tratar ela do jeito que está a minha aplicação hoje.
Lembrando:
Tenho uma herança onde tenho Pessoa e estendo ela para as classes Fisico e Juridica.
e minha aplicação precisa ter esse nível de abstracao.
Qual é a melhor maneira de eu implementar meu Classe cliente nela?
então o problema está na classe Cliente ainda
como que eu vou tratar ela do jeito que está a minha aplicação hoje.
Lembrando:
Tenho uma herança onde tenho Pessoa e estendo ela para as classes Fisico e Juridica.
e minha aplicação precisa ter esse nível de abstracao.
Qual é a melhor maneira de eu implementar meu Classe cliente nela?
GOSTEI 0
Davi Costa
22/03/2012
Como já citei vc pode usar composição, dentro de Cliente vc teria um atributo pessoa, que dependendo do que o usuário interagisse na aplicação poderia ser pessoa física ou jurídica (pois os dois estendem de pessoa).
att Davi
att Davi
GOSTEI 0
Thiago Volpato
22/03/2012
Deixaria dessa maneira certo
como eu faria a escolha? Pessoa Física ou Jurídica?
e teria mapeamento OneToOne?
public class Client implements Serializable{
private static final long serialVersionUID = 1L;
@Id
private Long id;
private Pessoa pessoa;
como eu faria a escolha? Pessoa Física ou Jurídica?
e teria mapeamento OneToOne?
GOSTEI 0
Thiago Volpato
22/03/2012
A classe Pessoa não pode conhecer Cliente certo?
tem como você me passa um exemplo simples
de como eu teria os atributos da classe
Pessoa Física e Jurídica para o cadastro do cliente
tem como você me passa um exemplo simples
de como eu teria os atributos da classe
Pessoa Física e Jurídica para o cadastro do cliente
GOSTEI 0
Davi Costa
22/03/2012
Além dos atributos de pessoa, para facilitar vc teria que ter alguma coluna que defina se é pessoa fisica ou juridica.
em pessoa física e/ou juridica, na teria que ter o id da tabela pessoa. Então pronto, ao pegar o id de pessoa vc vai nas tabelas filhas e vai saber se é um ou outro. Porém com essa coluna auxiliar vc diminuiria esse join, pois vc já olharia logo p ela p saber se é umou outro
att Davi
em pessoa física e/ou juridica, na teria que ter o id da tabela pessoa. Então pronto, ao pegar o id de pessoa vc vai nas tabelas filhas e vai saber se é um ou outro. Porém com essa coluna auxiliar vc diminuiria esse join, pois vc já olharia logo p ela p saber se é umou outro
att Davi
GOSTEI 0
Thiago Volpato
22/03/2012
Davi,
o problema está ai, por que eu vou herdar apenas os atributos da classe Pessoa
mas como estou usando herança eu dividi os atributos correspondente as classe Fisica e Juridica
e inserindo apenas a classe Pessoa como atributo eu não tenho acesso aos atributos das demais
e outra coisa a classe pessoaFisica e jurídica são superClass
entendeu a dificuldade
o problema está ai, por que eu vou herdar apenas os atributos da classe Pessoa
mas como estou usando herança eu dividi os atributos correspondente as classe Fisica e Juridica
e inserindo apenas a classe Pessoa como atributo eu não tenho acesso aos atributos das demais
e outra coisa a classe pessoaFisica e jurídica são superClass
entendeu a dificuldade
GOSTEI 0
Davi Costa
22/03/2012
Já pensou em usar os atributos transients em Cliente que contemplem os atributos de fisica e juridica?
att Davi
att Davi
GOSTEI 0
Thiago Volpato
22/03/2012
transient não é persistido certo
não vejo o pq usar isso
tem exemplo para me mostrar
não vejo o pq usar isso
tem exemplo para me mostrar
GOSTEI 0
Davi Costa
22/03/2012
vc pode popular esses campos (transients de cliente) na tela pelo usuário e passar esses valores para um objeto física ou juridica (conforme o usuário escolheu)... persistir ele isoladamente e no cliente antes de persistir vc dá um set em pessoa, passando essa pessoa fisica pou jurídica que foi persistida anteriormente... n vai ter problema pois as filhas estendem do pai que é um pessoa (mesmo tipo de atributo do cliente)
Não tem como ser mais claro do que isso, mas calma.. que logo vc vai pegar a idéia
att Davi
Não tem como ser mais claro do que isso, mas calma.. que logo vc vai pegar a idéia
att Davi
GOSTEI 0
Thiago Volpato
22/03/2012
vamos ver se eu entendi
na minha classe Pessoa eu tenho apenas 3 atributos blz até ai,
dai na classe Cliente iria criar todos os atributos que tem em fisica e juridica
anotando todas como transient
e la no bean(Face) no metodo salvar daria em Set em Pessoa
é isso?
na minha classe Pessoa eu tenho apenas 3 atributos blz até ai,
dai na classe Cliente iria criar todos os atributos que tem em fisica e juridica
anotando todas como transient
e la no bean(Face) no metodo salvar daria em Set em Pessoa
é isso?
GOSTEI 0
Davi Costa
22/03/2012
é por ai
att Davi
att Davi
GOSTEI 0
Robson Teixeira
22/03/2012
Completando a maneira que eu queria lhe mostrar(o que o davi lhe mostrou está correto) segue um modelo de classe venda com 2 métodos.
public class Venda{
private Pessoa cliente;
public boolean isClientePessoaFisica(){
return cliente instanceOf Fisica;
}
public boolean isClientePessoaJuridica(){
return cliente instanceOf Juridica;
}
}
com esses 2 métodos ambos vão lhe informar se o cliente é pessoa fisica ou pessoa juridica.
espero que com esses 2 métodos lhe auxilie a enxegar um caminho diferente.
att
robson
public class Venda{
private Pessoa cliente;
public boolean isClientePessoaFisica(){
return cliente instanceOf Fisica;
}
public boolean isClientePessoaJuridica(){
return cliente instanceOf Juridica;
}
}
com esses 2 métodos ambos vão lhe informar se o cliente é pessoa fisica ou pessoa juridica.
espero que com esses 2 métodos lhe auxilie a enxegar um caminho diferente.
att
robson
GOSTEI 0
Davi Costa
22/03/2012
essa solução do robson é excelente para akele campo auxiliar que sugeri... só mais uma dica se seguir minha dica, épreciso submeter a Pessoa primeiro depois setar esse atributo em cliente e depois submeter cliente.
att Davi
att Davi
GOSTEI 0
Thiago Volpato
22/03/2012
Davi estou tentando
Duvidas:
1 - estendo a classe Pessoa em Cliente
2 - Criar todos os atributos na classe Cliente sendo transient?
3 - No ManageBean no metodo salvar dar um setPessoa?
esse setPessoa que está dificil
Duvidas:
1 - estendo a classe Pessoa em Cliente
2 - Criar todos os atributos na classe Cliente sendo transient?
3 - No ManageBean no metodo salvar dar um setPessoa?
esse setPessoa que está dificil
GOSTEI 0
Davi Costa
22/03/2012
Cliente não estende pessoa, cliente possui um atributo pessoa.
Criar em cliente como transient apenas os atributos especificos de p fisica e jurídida.
Para no seu bena vc instanciar essa pessoa específica, salvar no banco primeiro essa pessoa específica e depois dar um set em cliente:
Ex. pessoa física
PessoaFisica pf = new PessoaFisica();
//preenche os campos dela conforme o usuário interagiu na tela
save(pf);
depois pega Cliente e dá um set:
cliente.setPessoa(pf); // devido pf estender pessoa não terá problemas aqui
save(cliente)
att Davi
Criar em cliente como transient apenas os atributos especificos de p fisica e jurídida.
Para no seu bena vc instanciar essa pessoa específica, salvar no banco primeiro essa pessoa específica e depois dar um set em cliente:
Ex. pessoa física
PessoaFisica pf = new PessoaFisica();
//preenche os campos dela conforme o usuário interagiu na tela
save(pf);
depois pega Cliente e dá um set:
cliente.setPessoa(pf); // devido pf estender pessoa não terá problemas aqui
save(cliente)
att Davi
GOSTEI 0