Minha Abstração - Pessoa Jurídica, Física, Cliente, Vendedor - terei algum problema?  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
Bruno Reis
JavaChild

Membro desde: 18/10/2010 16:41:46
Mensagens: 101
Offline

Saudações Pessoal!

Que problemas poderei ter nesta abstração?

Como poderei instanciar uma pessoa a partir de seu papel?



[Thumb - ABSTRACAO_PF_PJ_CLIENTE_VENDEDOR.JPG]
 Nome do arquivo ABSTRACAO_PF_PJ_CLIENTE_VENDEDOR.JPG [Disk] Download
 Descrição Abstracao
 Tamanho 17 Kbytes
 Baixado:  16 vez(es)

marcoslogan
JavaGuru

Membro desde: 09/11/2008 07:07:31
Mensagens: 217
Offline

você pode até instanciar agora vc tem que saber qual o papel da classe pessoa na sua aplicação, e quando vc deve instanciá-la.

geralmente, a classe pessoa é uma classe abstrata, eu não colocaria lá a classe tipo atributo, eu colocaria assim:



usando herança

Outro exemplo

Conta Corrente e Poupança.

As duas são um exemplo de conta certo?

se eu fosse seguir o seu exemplo eu teria que ter uma classe intermediária. TipoConta. Essa classe faria oq, qual a finalidade dela.


Eu faria assim:

leoramos
GUJ Ranger
[Avatar]

Membro desde: 28/03/2008 12:22:12
Mensagens: 845
Localização: Florianópolis / SC
Offline

Cara, por experiência própria, eu não coloco Pessoa Jurídica e Pessoa Física na mesma hierarquia de classes.
Apesar do nome parecido, o tratamento delas é completamente diferente. As chaves naturais, os tipos de documento, os processos em que se envolvem... é tudo bem diferente, tu acaba fazendo uma herança desnecessária, e que acaba com umas chamadas de método (usando fluent interface) que ficam parecendo um trem, de tão gigantes.
Eu, particularmente, faço isso. Mas cada um na sua.
É só uma dica
Abraço!

"Nunca atribua à falta de caráter o que pode ser facilmente explicado pela estupidez."
[Email] [MSN]
gomesrod
GUJ Ranger
[Avatar]

Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline

Olá!

Eu tentaria melhorar o seguinte:

- As classes "Pessoa" e "Empresa", se entendi corretamente, não são necessárias. "Pessoa" traz os atributos de uma pessoa física, e "Empresa" traz os atributos de uma empresa (dããã )... correto? Então por que não colocar esses atributos nas próprias classes PessoaFisica e PessoaJuridica?

- Feita a alteração acima, a classe TipoJuridico poderia ser renomeada para Pessoa, que é bem mais significativo (PessoaFisica "é uma" pessoa, PessoaJuridica "é uma" pessoa).

- O Papel não deveria ser um atributo da pessoa. É bem possível que algumas pessoas sejam os 2, vendedores e clientes, e o modelo não suportaria essa situação.

- Aliás, a classe Papel a meu ver não seria necessária pois Vendedor e Cliente são entidades do negócio totalmente distintas. Não parece haver muito sentido em colocá-las em uma mesma hierarquia.


Além disso, sempre é bom ver a necessidade de ter uma hierarquia para PessoaFisica e PessoaJuridica. Dependendo do negócio, não há nenhum comportamento diferenciado entre eles, o que possibilitaria criar um único tipo "Pessoa" com um campo indicando se é Fisica ou Juridica.
Em outros casos (citado acima), a diferença de tratamento é tão grande que os 2 se tornam entidades totalmente separadas.
Bruno Reis
JavaChild

Membro desde: 18/10/2010 16:41:46
Mensagens: 101
Offline

mas

Pessoa Jurídica não é uma pessoa

Empresa não é uma pessoa

Pessoa Jurídica é um conceito jurídico

PessoaFísica não é uma pessoa, também é um conceito

não se pode herdar coisas de papéis ou transações

um vendedor pode ser um cliente, se ele trabalhar na empresa e comprar dela

todos dão opinião, mas o que existe aqui no GUJ é sempre, Pessoa Jurídica e Pessoa Física extendendo de Pessoa

rodei o fórum e não encontrei uma abstração que não seja assim,

o que existe no fórum, é só discussão, filosofia

acabando em sempre extender PJ e PF de Pessoa

Bruno Reis
JavaChild

Membro desde: 18/10/2010 16:41:46
Mensagens: 101
Offline

por favor

postem aí então

uma abstração Pessoa Física, Pessoa Jurídica

com papéis Vendedor, Cliente, Fornecedor, Transportador,

mas sem discussão, "você pode isso", "você pode aquilo", e etc.

postem já indicando as FK e PK
gomesrod
GUJ Ranger
[Avatar]

Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline

Bruno Reis wrote:
Pessoa Jurídica não é uma pessoa
Empresa não é uma pessoa

Claro que tudo depende do domínio da aplicação em questão, como é tratado no seu negócio especificamente. Mas no sentido comum, pessoa jurídica é uma pessoa sim... Ela pode comprar, vender, contratar, ser contratada, processar judicialmente, ser processada... só não pode ir no banheiro. Porque isso é uma necessidade física, portanto típica das pessoas físicas

Bruno Reis wrote:
postem aí então
uma abstração Pessoa Física, Pessoa Jurídica
mas sem discussão, "você pode isso", "você pode aquilo", e etc.

Mas a discussão não é o mais importante ???
Bruno Reis
JavaChild

Membro desde: 18/10/2010 16:41:46
Mensagens: 101
Offline

acho isso herança descabida

daqui a pouco, teremos

pessoa tipo especial de computadores

computador tipo especial de sabonetes

na OO

não temos que observar a realidade?

acho importante separar conceitos da realidade

já li muita discussão

preciso ver algo melhor do que eu postei

já mapeado com fk e pk

Bruno Reis
JavaChild

Membro desde: 18/10/2010 16:41:46
Mensagens: 101
Offline

gomesrod wrote:

Claro que tudo depende do domínio da aplicação em questão, como é tratado no seu negócio especificamente. Mas no sentido comum, pessoa jurídica é uma pessoa sim...


mas, se eu quiser migrar minhas classes para outra regra de negócio, de uma clínica médica, por ex.

se acompanhar a realidade, não fica mais fácil a migração?

imagina eu ter um sistema de uma clínica médica, onde a clínica é uma pessoa jurídica

e uma pessoa é um ser humano

a clínica, terá rins, coração, dentes, ossos
Bruno Reis
JavaChild

Membro desde: 18/10/2010 16:41:46
Mensagens: 101
Offline

gomesrod wrote:

- O Papel não deveria ser um atributo da pessoa. É bem possível que algumas pessoas sejam os 2, vendedores e clientes, e o modelo não suportaria essa situação.

- Aliás, a classe Papel a meu ver não seria necessária pois Vendedor e Cliente são entidades do negócio totalmente distintas. Não parece haver muito sentido em colocá-las em uma mesma hierarquia.


por favor, posta aí então

um ex. de abstração de Papéis onde uma pessoa pode ser todos os papéis ao mesmo tempo

já com fk e pk
Edufa
JavaEvangelist
[Avatar]

Membro desde: 18/04/2006 10:20:03
Mensagens: 315
Localização: Curitiba, PR
Offline

Pesquise Actor-Role Pattern, ele resolve esta situação de forma bem elegante, na minha opinião, e é o que uso quanto existem vários papeis.

Edufa
Curitiba, PR
--
"O estado sou eu". - Luís XIV
"O estado somos nós."- Lênin
"O estado somos eu." - Lula
--
O mundo é deles mas a amazônia é nossa
O petróleo é nosso, mas o gás é deles.
gomesrod
GUJ Ranger
[Avatar]

Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline

Bruno Reis wrote:
gomesrod wrote:
posta aí então
já com fk e pk

Puxa, expliquei tão mal assim ? Não dá nem pra tentar imaginar?
Bruno Reis
JavaChild

Membro desde: 18/10/2010 16:41:46
Mensagens: 101
Offline

gomesrod wrote:
Puxa, expliquei tão mal assim ? Não dá nem pra tentar imaginar?



não quer imaginar pra mim né? rs

o jeito é

Pessoa Jurídica é um tipo especial de Pessoa

vi uma Pessoa Jurídica passando aqui na rua

que coisa linda!

que quadril torneado!

assoviei para ela, ela me disse "não vou te dar meu cnpj"

rsrsrs




Bruno Reis
JavaChild

Membro desde: 18/10/2010 16:41:46
Mensagens: 101
Offline

Agent Role Pattern

http://www.cs.sjsu.edu/faculty/pearce/modules/patterns/analysis/agents.htm
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team