Divisão do sistema + validação

Estou fazendo um projeto e tenho algumas dúvidas em relação a divisão e validação.

Costumo usar [color=“orange”]3 pacotes[/color] para montar o sistema:

[color=“red”]> entidade:[/color] Classe que possui os métodos get’s e set’s de cada atributo. Nas classes de entidade, não uso nada de Swing ou AWT, não uso nda gráfico, por exemplo JOptionPane.

[color=“red”]> persistencia:[/color] Classe que possui os métodos de interação com o banco de dados. Método para gravar, excluir, alterar e consultar um tipo de objeto. Para cada classe de entidade, faço uma classe de persistência. Nas classes de persistência sigo as mesmas regras das de entidade, não uso nda gráfico.

[color=“red”]> fronteira:[/color] Telas do sistema. Instancia uma classe de entidade e uma de persistência para interagir com o banco de dados.

[color=“blue”]Minha dúvida é saber aonde coloco as validações dos campos.[/color]

Por exemplo, uma tela de cadastro de funcionários, aonde o usuário do sistema tenha que preencher o nome do funcionário, data de nascimento e cpf. Antes de cadastrar os dados, eu tenho que validar (saber se o campo está preenchido, se tem caracteres estranhos, se a data está correta, se o cpf tem os números certo), mas aonde posso colocar esses métodos de validação?

Me disseram para criar um pacote “controle” e para cada classe de entidade uma classe de controle da mesma, com os respectivos métodos de validação.

Nessa classe de controle, eu teria que seguir o mesmo esquema das entidades e persistências, tirando qualquer coisa que seja gráfico?

Alguém tem alguma idéia??

Vlw!

Olá,

Essa divisão com a classe controle é uma boa idéia. Ela não pode depender da parte gráfica que você está usando, assim como as outras camadas. Imagine se um dia você deseje passar a sua aplicação para a web!

Bom, vou dar um exemplo de divisão de camadas que utilizamos no trabalho:
Camada Gráfica - Web, SWT, Swing, etc…
Fachada de Negócios - Aqui vão os processos para ações de usuários: consulta de dados, cadastro de informações, etc
Objetos de Negócios - Validação de dados
Acesso a Dados - …
Rotinas de Suporte - Possui diversas rotinas que podem ser acessadas pelas outras camadas mais os objetos VOs (sua camada entidade)

Sendo que neste esquema a camada de cima acessa a camada de baixo, exceto a Rotinas de Suporte que é acessada por qualquer camada.

Atenciosamente,
Fabio

Fabio (jonlordbr), fiquei com algumas dúvidas em relação ao seu modo de divisão.

No caso a sua [color=“orange”]fachada de negócios[/color] seria a mesma coias q a minha [color=“orange”]persistencia[/color], e seus [color=“blue”]objetos de negócios[/color] seria a mesma coisa q a minha [color=“blue”]camada de controle[/color]?

Se o as minhas [color=“red”]entidades[/color] são as mesmas coisas que os seus [color=“red”]objetos VOs[/color] (o que significa VOs?), entaum o seu [color=“brown”]acesso a dados[/color] seria o que?

Mas como seria um método, por exemplo, da fachada de negócios, para cadastro de informações, já que a validação é feita dentro desse método?
Quais parâmetros da tela você passa para esse método?

Será que tem como vc me mandar um exemplo só de cabeçalhos de métodos pra eu entender melhor a lógica?

Vlw amigo!