Help em decisão no diagrama de classes basicas

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…