eu não consigo enxergar igual vcs… pq vcs não separam as cosias ??
Pessoa é uma Pessoa ora… PessoaJuridica não é uma Pessoa, é uma empresa, so pq o nome é PessoaJuridica todo mundo quer extender Pessoa pra PessoaJuridica…
Eu gosto de pensar assim
Pessoa = dados pesssoais
Funcionario = um contrato entre uma Empresa e uma Pessoa, normalmente só se tem 1 empresa, e portanto a referencia a empresa é omitida…
mais acredito que a melhor modelagem seja
public class Funcionario {
private Pessoa pessoa;
//... outros dados de funcionario, salario, data de adesao etc etc etc
}
Cliente = um contrato entre sua empresa e um terceiro, esse terceiro pode ser uma pessoa ou uma empresa, portanto
[code]public class Cliente {
private Pessoa pessoa;
private Empresa empresa;
public boolean isPessoa() {
return pessoa != null;
}
public boolean isEmpresa() [
return empresa != null;
}
}[/code] se quiser separa Cliente em subclasses ClientePessoa e ClienteEmpresa, tb não vejo problemas…
Usuario pode ser varias coisas, vc pode ter um Usuario geral, e outras subclasses, mais o fato é que se Quiser Linkar um usuari a uma pessoa, basta ligar Usuario -> Pessoa
se apenas clientes podem ser usuários, então ligue Usuario direto a Cliente… e assim por diante…