Fala galera do PJ!
Confesso que já vi alguns tutoriais de MVC e acho que não entendi muito bem as funções da camada de controle.
Estou fazendo uma agenda (bem básico mesmo :lol: ) e criei as 3 camadas:
modelo (Contato, AgendaBD - para conexão com banco), view (FrmPrincipal, FrmCadastro e FrmPesquisa) e na camada de controle a classe Agenda.
Segue o codigo - inacabado - da classe Agenda:
public class Agenda {
private AgendaScreen telaPrincipal = null; //tela principal
private CadastroScreen janelaCadastro = null; //tela de cadastro
private PesquisaScreen janelaPesquisa = null; //tela de pesquisa
private AgendaBD banco = null; //referencia ao banco de dados
public Agenda(){
//abre a janela principal
telaPrincipal = new AgendaScreen("Agenda 1.0");
//eventos
//menu Cadastrar contatos
telaPrincipal.getMnuInserir().addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evento1){
janelaCadastro = new CadastroScreen("Contatos");
janelaCadastro.iniciar();
}
});
//menu pesquisar contatos
telaPrincipal.getMnuPesquisar().addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evento1){
janelaPesquisa = new PesquisaScreen("Pesquisar contato...");
janelaPesquisa.iniciar();
}
});
/*
*eventos da janela de Cadastro
*inserir, alterar, excluir etc.
*/
/*
*eventos da janela de Pesquisa
*pesquisar
*/
}
public void executa(){
telaPrincipal.iniciar();
//realiza conexao com banco de dados
try{
banco = new AgendaBD();
banco.conecta();
}catch(ClassNotFoundException cnfEx){
JOptionPane.showMessageDialog(telaPrincipal,cnfEx,
"Erro - Driver",JOptionPane.ERROR_MESSAGE);
System.exit(1);
}catch(SQLException sqlEx){
JOptionPane.showMessageDialog(telaPrincipal,sqlEx,
"Erro - MySQL",JOptionPane.ERROR_MESSAGE);
}
}
public static void main(String args[]){
Agenda aplicativo = new Agenda();
aplicativo.executa();
}
}
No construtor eu coloquei os codigos dos eventos das janelas. É desta forma que eu devo proceder? A regra de negócio também deve estar nesta classe? Ou devo criar em uma classe separada, para ficar, talvez, um código mais legível.
Se tiverem mais alguma observação sobre o meu código, por favor respondam.
Muito obrigado pela atenção!!