Camada de Controle

4 respostas
luiz_ross
Gostaria de que alguem me ajudasse, desce alguma dica de como implementar (não precisa ser com código) a camada de controle de uma aplicação feita em swing(é um exemplo bem básico). Tipo eu tenho minha classe que monta a interface com o usuário que seria o meu View
import javax.swing.*;
public class Tela extends javax.swing.JFrame {
    FBean fb = new FBean();
    Insere insert;
    
    public Tela() {
        
        initComponents();
               
    }
    private void initComponents() 
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        t_nome = new javax.swing.JTextField();
        t_end = new javax.swing.JTextField();
        t_tel = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        getContentPane().setLayout(null);

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jLabel1.setText("Nome:");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(20, 80, 41, 16);

        jLabel2.setText("Endereu00e7o:");
        getContentPane().add(jLabel2);
        jLabel2.setBounds(20, 100, 60, 16);

        jLabel3.setText("Telefone:");
        getContentPane().add(jLabel3);
        jLabel3.setBounds(20, 120, 60, 16);

        getContentPane().add(t_nome);
        t_nome.setBounds(80, 80, 170, 20);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setSize(new java
        getContentPane().add(t_end);
        t_end.setBounds(80, 100, 170, 20);

        getContentPane().add(t_tel);
        t_tel.setBounds(80, 120, 170, 20);

        jButton1.setText("Inserir");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton1);
        jButton1.setBounds(140, 170, 81, 26);

        jButton2.setText("Clear");
        getContentPane().add(jButton2);
        jButton2.setBounds(140, 210, 64, 26);

        pack();.awt.Dimension(400, 300));
        setLocation((screenSize.width-400)/2,(screenSize.height-300)/2);
    }//GEN-END:initComponents
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        insert = new Insere(getDados());
    }
    public FBean getDados(){
    fb.setNome(t_nome.getText());
    fb.setEndereco(t_end.getText());
    fb.setTelefone(t_tel.getText());
    return fb;
    }    
    private void exitForm(java.awt.event.WindowEvent evt) {
    System.exit(0);
    }
    public static void main (String args[]){
      try{
        UIManager.setLookAndFeel("com.jgoodies.plaf.plastic.PlasticXPLookAndFeel");
        }catch(Exception e){}
        new Tela().show();
    }
    
    private javax.swing.JButton jButton2;
    public javax.swing.JButton jButton1;
    public javax.swing.JTextField t_tel;
    public javax.swing.JTextField t_end;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel1;
    public javax.swing.JTextField t_nome;  
}
e tenho a minha lógica de aplícação que no caso seria a minha classe que faz a inserção dos dados no banco
import java.sql.*;

public class Insere {
	ResultSet rs;
	Statement stmt;
	FBean fb = new FBean();

	public Insere(FBean fb){
	try{
		Conexao conecta = new Conexao();
		stmt = conecta.con.createStatement();
		stmt.executeUpdate("INSERT INTO cadastro (" +
               "nome, telefone, endereco" + ") VALUES ('" +
                fb.getNome() + "', '" + 
                fb.getTelefone() + "', '" +
                fb.getEndereco() + "')");
		}
		catch (Exception e)
		{
			System.out.println(e.toString());
			System.exit(0);
		}
	}
}
Agora que vem problema. Tipo, eu encapsulei os meus dados num objeto que eu criei
no caso o meu objeto está sendo criado nesse trecho de código

    public FBean getDados(){
    fb.setNome(t_nome.getText());
    fb.setEndereco(t_end.getText());
    fb.setTelefone(t_tel.getText());
    return fb;
só que acontece o seguinte, eu mando ele direto pra minha camada de lógica de aplicação, simplesmente eu não tenho idéia de como manipular esse objeto na camada de controle antes de manda-lo pra camada de modelo. Só uma coisa, eu omiti o código do bean que armazena meus dados pra evitar que o Post ficasse muito grande, e mesmo assim ficou. Desde já agradeço qualquer ajuda!!!

4 Respostas

thiagorani

Luiz, explique melhor oq voce esta querendo implementar!
Assim posso tenta-lo ajudar.

[]´s

luiz_ross

Vamos supor que meu programa vai dar permissão pra incluir um cadastro de cliente no meu banco de dados apenas pra alguns usuários do meu sistema e pra outros não. Eu gostaria de saber se é na camada de controle que eu teria que implementar essa lógica pra saber quem tem ou não permissão pra incluir algum cadastro no banco de dados, + ou - assim, eu crio meu objeto com os dados digitados pelo usuário, só que ao invés de mandar ele direto pra minha classe que faz a inclusão no banco(camada de modelo), eu pego meu objeto criado na classe que monta a tela do cadastro(camada de visualização), mando ele pra minha classe intermediária(camada de controle) e testo antes pra ver se o usuário tem direito ou não de fazer a inclusão no banco ai então eu mando pra minha classe de inclusão(camada de modelo). Queria que alguem me tirasse essa dúvida, se essa maneira que eu pensei seria a maneira correta de se implementar o padrão MVC.

pedromuyala

Mais conteúdo sobre MVC recomendo acessar este link: http://www.guj.com.br/posts/list/129277.java
Vou adicionar este tópico como referência na lista de links sobre MVC que estão na primeira postagem do link que estou recomendando.
Cuidado: Não confunda MVC com CAMADAS (Layer’s). Uma coisa é MVC, outra coisa é Layer’s!
Espero ter colaborado! :wink:

paolo.ramos

Cara,

Eu vi uma vídeo aula de uma cara implementando uma calculadora (simples assim), onde ele separa 100% a view da regra de negócio…talvez possa te ajudar…
o link da pagina de vídeos e esse ai em baixo… so tem q da uma procurada no video… calculadora em swing com netbeans…alguma coisa assim…

http://spartaconsultoria.com.br/home/index.php/video-aulas

sucesso!

Criado 8 de março de 2003
Ultima resposta 28 de out. de 2009
Respostas 4
Participantes 4