Sempre tenho essas dúvidas toda vez que tenho que modelar sistemas com elementos do tipo interface Swing, BD e objetos e tabelas do tipo Usuario, Cliente, Produto, etc.
Acho que fica melhor explicar através de um exemplo, sendo assim, lá vai…
Em um sistema existe um cadastro de usuários que devem ter suas senhas validadas para conseguirem executar o programa. Para isso, os dados dos usuários são armazenados no BD na tabela ‘usuario’, a qual possui os campos ‘id’, ‘nome’ e ‘senha’.
Para utilizar (trafegar) esses dados no sistema, devo criar uma classe ‘Usuario’ (um JavaBeans… correto??) e, como toda classe desse tipo, esta terá apenas seus atributos (id, nome e senha) e seus gets e sets correspondentes.
Agora, para efetuar as operações no BD crio um DAO correspondente ‘UsuarioDAO’, o qual conterá os selects, inserts e updates e utilizará o referido JavaBeans ‘Usuario’ para armazenar os dados coletados no BD (retorno dos selects) ou ainda receber os dados do sistema para atualizar a tabela ‘usuario’ (inserts, updates e deletes).
Aqui vem a questão (ou as questões):
Quando começo a pensar nas ações e responsabilidades de cada objeto vejo que o ‘Usuario’ deve, por exemplo, acessar o sistema. Assim, onde devo criar o método correspondente?
1.) Dentro da classe Usuário? Se sim, os JavaBeans não devem conter APENAS os atributos com seus gets e sets? Ou será que esse conceito é aplicável apenas às aplicações Web (que por sinal conheço pouco)?
2.) Deixo pra interface gráfica fazer o trabalho? E a questão da responsabilidade? Não são os ‘Usuários’ que acessam o sistema?
Aguardo.