Boa tarde a todos!
Gostaria de saber a opinião de vcs a respeito de um sistema que envolverá diversos módulos, sendo como exemplo os módulos de Folha, Livros e Contabilidade.
Analisando uma parte que será crucial para o projeto, que é o cadastro de Pessoas (a idéia é ter um cadastro único para todos módulos) chegamos a dois modelos:
Modelo 1:

Modelo 2:

Os atributos das classes foram omitidos e cada classe terá atributos próprios.
As classes que fazem parte de um determinado módulo devem ter os atributos segundo uma hierarquia, ex:
Pessoa -> PessoaContabil - > ClienteContabil e FuncionarioContabil devem ter os campos de PessoaContabil.
Esse sistema teria que ser projetado de forma modular, sendo que o cliente desse sistema poderá apenas ter o módulo Contábil por exemplo.
No modelo 1, as classes como Pessoa, Cliente e Funcionario acabam tendo um forte acomplamento entre as classes mais especializadas pois elas deveram ter uma instancia de todas as classes que seriam mais especializadas (Ex: a classe Cliente deve ter instancias de ClienteLivros, ClienteContabil, ClienteFolha, devido o uso do relacionamento 1 para 1).
Supondo que meu cliente tenha uma tela de cadastro de Clientes na qual haverá uma aba Geral com os dados pertinentes a Pessoa, uma aba Contabil, com os dados de PessoaContabil e ClienteContabil e uma aba Folha com os dados de PessoaFolha e ClienteFolha.
Utilizando o modelo 2, eu deveria criar 3 objetos, um para cada módulo (Cliente, ClienteContabil e ClienteFolha). O que no modelo 1 eu poderia apenas criar um objeto do tipo Cliente e ir setando os campos.
Qual é a opinião de vcs a respeito desses modelos?