Caros amigos,
Estou desenvolvendo um sistema contábil e tenho uma estrutura de classe (especialização/generalização) que representa um planos de contas, por exemplo, no nível mais alto tenho CONTA depois duas especializações RESULTADO e PATRIMONIAL em RESULTADO há mais duas especializações DESPESA e RECEITA, etc. Esta estrutura tende a ficar maior. Por definição somente as "folhas" desta estrutura irão possuir instâncias (objetos), sendo assim todas as generalização de uma especialização serão abstratas.
Neste cenário quero numerar os níveis e a folhas terão numeração composta dos seus níveis superiores + sequencial. Por exemplo.
CONTA = 1
RESULTADO = 1
PATRIMONIAL = 2
DESPESA = 1
RECEITA = 2
Um objeto do tipo DESPESA teria o seguinte numero: 1.1.1.seq. (CONTA.REULTADO.DESPESA.sequencial). Para o armazenamento penso ou retirar os pontos e usar este idenficador (que é unico, por definição contábil) como sendo a PK da tabela. Para isso terei de fixar a quantidade de dígitos em cada nível para que na retirada ou remontagem do número fique correto. Por exemplo no caso acima (com somoente 1 digito por nível), teria 1.1.1.1 na camade de negócio e no banco 1111, ou sjea, é bem fácil mudar de um para outro.
A minha dúvida, na verdade é um pedido de sugestões, é como implementar isso. Pensei em criar um atributo estático de instância em cada classe que representa ser numero e na hora da construção de um objeto ir varendo esta numeração (pra cima) e montando o número do objeto. Por exemplo, ao instanciar um objeto A do tipo DESPESA o construtor de A iria pesquisar a numeração de seus "pais" e montaria o seu identificador 1.1.1.1 (os três primeiros dígitos são fixos, advindo do ramo que vai da folha a raiz e o quarto dígito é um sequencial do objeto).
Alguém ai tem alguma sugestão?
Abraços.