Dúvida Modelagem OO e Agregação

Pessoal … embora já esteja estudando java há algum tempo, a parte de modelagem (Análise e Projeto) estou começando agora, ou pelo menos, tentando …

Suponham um Sistema para Gerenciamento Eletrônico de Documentos … suponham ainda que eu identifiquei as classe Documento e TipoDocumento

Cada Documento pertence há (é de) 1 Tipo; agora, como modelar e codificar isso ?

O Ideal seria eu criar a classe TipoDocumento e dentro dela criar uma Collection de Documentos ? onde ficaria melhor a criação de um método criarDocumento, na classe TipoDocumento ou na classe Documento ?

Alguém sabe onde posso encontrar um exemplo de uma aplicação simples de banco de dados em java, construída com qualidade (pensando em reuso, modularidade e OO) …

TipoDocumento deveria ser um atributo da classe documentos. Você pode criar uma classe TipoDocumento, se ela possui várias funcionalidades/atributos, ou ser uma simples String ou int que contém o código do tipo do documento. Na verdade tudo vai depender de suas necessiades.

Não. TipoDocumento, ao meu ver, é um atributa da classe documento.
criarDocumento deveria ficar na própria documento ou em alguma factory específica.

Então kra … TipoDocumento na verdade é uma informação que tem várias outras relacionadas, por isso tinha pensado em colocá-la como classe

TipoDocumento: codigo descricao pathdefault template

Além disso, existe diversas informações ligadas a TipoDocumento como:

  • Usuários e níveis de acesso ao Documentos de um determinado tipo;
  • chaves de busca dos Documentos de um determinado tipo

Aí já muda um pouco o panorama da coisa né ? não dá pra TipoDocumento ser um atributo …

o que vc acha agora ?

Filet para criar uma classe. Vá em frente.

Na verdade isso é até bem pessoal, mas uma classe acho que cai bem.

Outro dia me deparei com um banco de dados onde as tabelas só tinham um campo e ele separava os campos, dentro desse campozão, com ponto-e-vírgula. O kra que programou era um hardcoder de c. Por incrível que pareça tudo funcionava blz.

A bronca eh que se ele morrer, quem é que vai pegar a tromba??? :smiley:

eu prefiro o approach de dizer que o DOCUMENTO eh de um TIPO_DOCUMENTO

documento.tipo = aqueleTIpo;

e nao o contrario:

aqueleTipo.addNewDocument(documento);

mas varia da situacao e de como seu sistema sera no futuro

Fica dificil escolher qual será a super classe e qual será a sub classe, ou se nem vai utilizar herança e sim apenas agregação, sem saber o tipo de funcionalidade que essas classes terão, que outras classes irão utilizá-la, etc.