Duvida com Entidades de Pessoa

7 respostas
A

Seguinte sou novato em java e tenho muitas duvidas com Relacionamento de Entidades

A Minha Duvida e os Relacionamentos com Pessoa , PessoaFisica, PessoaJuridica e Cliente, Fornecedor

Quero saber qual e a maneira mais correta de se relacionar Pessoa com PessoaFisica e PessoaJuridica
se o certo e usar Herança ou Composiçao se PessoaFisica tem que herdar de Pessoa ou nao…

e a outra Duvida Cruel e o meu Cliente que pode ser tanto PessoaFisica quanto PessoaJuridica

neste caso como que vou fazer com as minhas chaves estrangeiras se eu vou relacionar
Cliente com a Tabela de Pessoa …

Estou usando Jpa

Ate + conto com ajuda de vcs

7 Respostas

M

Quando uma classe estende outra, podemos dizer que o objeto da subclasse É também uma instância da superclasse. Por exemplo:

public class Veiculo {
// toda a classe aqui
}

E:

public class Carro extends Veiculo {
// toda a classe aqui
}

Nesse caso podemos dizer que o um objeto do tipo carro É um veículo.

PessoaJuridica é uma Pessoa. Assim como PessaFisica.

Cliente (em geral) é uma PessoaFisica. Já Fornecedor é uma PessoaJuridica.

Logo, teríamos uma hierarquia similar a essa:

Pessoa
|___PessoaFisica
|    |___Cliente
|___PessoaJuridica
     |___Fornecedor

Porém, pessoa física e pessoa jurídica poderiam ser interfaces, e não classes. E teríamos, estendendo Cliente, as classes ClienteFisico e ClienteJuridico, cada um implementando a devida interface. Algo como:

Cliente (talvez uma classe abstrata)
|___ClienteFisico (implementa PessoaFisica)
|___ClieteJuridico (implementa PessoaJuridica)
Fornecedor (implementa PessoaJuridica)

Onde PessoaFisica e PessoaJuridica seriam interfaces que estendem Pessoa.

foxpv

Cara, quanto ao uso de herança, a minha opinião é que você deve evitar ao máximo usá-la, apenas quando for realemente necessário.
Nesse caso você poderia criar uma interface Pessoa, e a PessoaFisica e PessoaJuridica poderiam implementar essa inferface, sendo assim as duas teriam obrigatoriamente todo o comportamento desejado para a Pessoa, adicionado das coisas específicas em cada uma.

Isso vai muito da opnião de cada pessoa, deve ter uma forma de implementar mais elegante, mais alguém aqui do fórum deve se manifestar para te ajudar melhor

Abraços…

sf.marcius

quais os campos e métodos que PessoaFisica e PessoaJuridica possuem a mais que Pessoa?
PessoaFisica e PessoaJuridica devem sobrescrever algum método de pessoa?

de repente, se a diferença for pouca, dava pra mesclar as classes numa única classe pessoa, mas isso depende das características (metodos e atributos) de cada classe.

o bom mesmo seria vc postar uma modelagem inicial do que vc quer, pra gente ver e ir adaptando/otimizando.

[]s

A

Classe Pessoa

public class Pessoa implements IPessoa{
	
	private long idPessoa;
	private String nomeFantasia;
	private String email;
	private String site;
	private Date dataCadastro;
	private String razaoSocial;
	private Endereco end;
	private Telefone telefone;
	private Cliente cliente;
	

}
Classe Pessoa Fisica
public class PessoaFisica  implements IPessoaFisica{

	private long idPessoaFisica;
	private String rg;
	private String cpf;
	private String orgaoExpedidor;
	private String numeroCartaoTrabalhador;
	private String numeroCartaoPlanoSaude;
	private String tipoSanguineo;
	private String nomePlanoSaude;
	private String tituloEleitor;
	private String zonaEleitoral;
	private String secaoEleitoral;
	private String ctps;
	private String serieCtps;
	private String pis;
	private String numeroCertidaReservista;
	private String categoriaCertidaoReservista;
	private Date dn; 
	private int idade;
	private String naturalidade; //local de nascimento
	private String nacionalidade;
	private String estadoCivil;
	private String nomeConjuge;
	private String emailConjuge;
	private Date dnConjuge; //data de nascimento do conjuge
	private String nomePai;
	private String nomeMae;
	private Date dataVencimentoCNH;
	private String cnh;
	private Date dataEmissaoRG;
	private String foneConjuge;


}

Classe Pessoa Juridica

public class PessoaJuridica implements IPessoaJuridica{
	
	private long idPessoaJuridica;
	private long cnpj;
	private String inscricaoEstadual;
	private Status status;
	private String inscricaoMunicipal;

	

}
public class Cliente implements ICliente{

	private long idCliente;
	private Date dataCadastro;
            private Date dataMaiorCompra;
            private Date dataUltimaCompra;
            private int  status;         
 

}

As Minhas Classes são essas so que no cliente tem mais atributos...

Estou Pensando em Usar composiçao "Pessoa com PessoaFisica e Cliente "
ou "Pessoa com PessoaJuridica e Cliente"

Assim Para Fornecedor e o resto da Entidades que se relacionam com Pessoa

Me fale as vantagens e as desvantagens de usar herança ou Composição nesses relacionamentos

Conto com Ajuda de Vcs..

ate +

Marcio_Nogueira
public lass Pessoa{
//implementar código
}

public class PessoaFisica extends Pessoa{
//implementar código
}

public class PessoaJuridica extends Pessoa{
//implementar código
}

A palavra extends implementa a herança entre as classes. :wink:

A

Acho que cheguei a uma decisão vou colocar
Pessoa com classe Abstrata as classes PessoaFisica e PessoaJuridica estendendo de Pessoa e as Entidades ClienteFisico faz composiçao com PessoaFisica e Cliente Juridico Fazendo Composicao com PessoaJuridica

e as Demais entidadades que precisar Faço composiçao

Obrigado pelo pessoal do Forum e ate +

Lavieri

Eu sou da opinião que Pessoa fisica e juridica não tem nada a ver uma com a outra… veja a definição abaixo

http://www.sebraesp.com.br/faq/criacao_empresa/criacao_empresa/pessoa_fisica_juridica

O que é pessoa física e pessoa jurídica?

Conforme o Dicionário Michaelis, pessoa jurídica é a entidade abstrata com existência e responsabilidade jurídicas como, por exemplo, uma associação, empresa, companhia, legalmente autorizadas. Podem ser de direito público (União, Unidades Federativas, Autarquias etc.), ou de direito privado (empresas, sociedades simples, associações etc.). Vale dizer ainda que as empresas individuais, para os efeitos do imposto de renda, são equiparadas às pessoas jurídicas.

Pessoa física é a pessoa natural, isto é, todo indivíduo (homem ou mulher), desde o nascimento até a morte. A personalidade civil da pessoa começa do nascimento com vida. Para efeito de exercer atividade econômica, a pessoa física pode atuar como autônomo ou como sócio de empresa ou sociedade simples, conforme o caso.

Quando vc quer levar isso pra dentro de uma empresa, eu prefiro chamar de PessoaFisica (ou só pessoa) e Empresa …

esses 2 nesse momento nem precisam ter nada em comun…

depois disso, vc pode precisar ter 1 cliente, então o que é um cliente… cliente é alguem q atende algumas regras, pra isso vc pode criar 1 interface… pega tua classe PessoaFisica, e implementar a interface cliente… então vc tem um ClientePessoaFisica… que é tanto cliente, como pessoa fisica…

Empresa pode ser apenas um endereço, um contato um lugar, mais pode ser um cliente tb… vc pode implementar isso, basta usar a interface Cliente…

Mais vc pode pensar, poxa vida, um cliente Pessoa fisica, precisa disso, disso e dakilo a mais que os outros tipos de clientes precisam pra ser meu cliente, implemente isso para esse grupo…

Vc pode pensar tb que uma empresa, pra ser cliente, precisa atender outras coisas que uma pessoa fisica não precisa, e pra isso vc pode usar interfaces, ao extender a classe empresa…

Não vejo como uma Empresa, um Governo, uma Ong … pode vim de uma mesma classe que o José, o seu faxineiro O.O uma pessoa fisica da empresa o.O

Criado 14 de janeiro de 2009
Ultima resposta 15 de jan. de 2009
Respostas 7
Participantes 6