Como "pensar" em uma classe do tipo Pessoa?

7 respostas
MrDataFlex

Pessoal, como vocês fazem a diferença entre pessoa fisica e juridica? 2 classes ? 3 classes ? ou uma só, contendo métodos 'abstratos"

cpfCnpj
nomeRazaoSocial
?
?

Eu fiz:

fisica extends juridica
pessoa extends fisica

mas tô achando que fiz gambi! hehehe

Valeu,!!!

7 Respostas

Marky.Vasconcelos

Melhor seria
Fisica extends Pessoa
Juridica extends Pessoa

Assim uma Fisica ou Juridica seria uma Pessoa

nbluis

hum… assim fica melhor.

MrDataFlex

Entendi

blz então pessoal, valeu

gui_sv

Apenas uma dica…

vc ta usando um atributo cpfCnpj

para a normalizacao de banco de dados relacional isto não é legal, pois uma coluna deve ter apenas um unico dominio e um unico atributo.

entao

cpf na classe fisica
cnpj na classe juridica

e separa esses caras no banco.

boa sorte

MrDataFlex

gui_sv:
Apenas uma dica…

vc ta usando um atributo cpfCnpj

para a normalizacao de banco de dados relacional isto não é legal, pois uma coluna deve ter apenas um unico dominio e um unico atributo.

entao

cpf na classe fisica
cnpj na classe juridica

e separa esses caras no banco.

boa sorte

Não foi isso que aprendi na faculdade o.O

marcosbrandao

desta maneira você esta dizendo o mesmo que:
pessoa fisica é uma pessoa juridica, e isso nao esta correto, nao eh?

sergiotaborda

Existem muitas formas de pensar neste problema, e no fim, não existe a melhor escolha. Tudo depende do que vc quer fazer com essas classes.

Tomando uma prespetiva estritamente orientada a objetos e tendo em conta que eles devem traduzir a realidade então uma pessoa fisica (individuo) e uma pessoa juridica ( empresa , etc…) não são a mesma coisa.

O individuo pode ser uma pessoa física , mas pode não ser. O que faz com que ele seja ? Se ele tem uma identificação tributária (cpf) ele é uma pessoa física. “Pessoa Fisica” é na realidade um conceito legal e não um conceito real (do mundo real dos objetos fisicos e palpáveis) . Pessoa Fisica é na realidade uma interface. É um conjunto de propriedades/acções que o sistema fiscal/legal espera do individuo. Analogamente da empresa.

A representação ficaria assim

IdentificadorFiscal (abstracto ou interface)
CPF extends IdentificadorFiscal
CNPJ extends IdentificadorFiscal
(ou IdentificadorFiscal seja genérico de forma a suportar ambos)

EntidadeFiscal (interface)
IdentificadorFiscal getIdentificadorFiscal ()

Individuo extends Pessoa implements EntidadeFiscal
Empresa extends Pessoa implements EntidadeFiscal

Pessoa
getName()
getBirthDay()

Empresa
getLegalName() // nome verdadeiro da empresa , getName seria o nome fantasia

Esta é uma possibilidade.

Criado 14 de junho de 2007
Ultima resposta 14 de jun. de 2007
Respostas 7
Participantes 6