Cadastro de Pessoa Ex:

Saldação a todos, minha primeira pergunta aqui no forum.
Sou iniciante em desenvolvimento de sistema em javaSe, estudei o Curso fj11 da caelum porem não estou conseguindo aplicar os conceitos estudados.
Construir uma classe de pessoas e a interface com o swing para o cadastro de pessoa eu até consigo, mais nao tenho a minima noção como eu vou relacionar isso a a classe do formulario e a classe de pessoa e a classe que conecta ao banco.
Se alguem tiver algum exemplo de cadastro de pessoa em javase, com inserção,alteração, exclusão, navegação… seria de muita ajuda, ou seja quero um exemplo com a classe de pessoa,classe do swing e a classe do banco,relaciondo essas 3 classes de modo que funcione.
Estou utilizando o ECLIPSE
Muito Obrigado

Atenciosamente
Erick Ferreira Macedo

Boa tarde, dá uma estudada em Heranças e até mesmo polimorfismo em Java, vais melhorar muito o seu conhecimento em relação a estas dúvidas.

Mas vou lhe dar um exemplo rápido, já que estou no trabalho, de como relacionar duas classes:

[code]public class ConectaBD(){
public Connection createConnection(){
//sua lógica

//deve retornar uma Connection (java.sql)
return Connection
}
}
[/code]

Agora uma classe que utilize esta conexão com o banco.

[code]public class CadastroDePessoa(){
private Connection con;

public void insere(){
//crio uma instancia (referencia) para a o objeto (classe) ConectaBD
ConectaBD conecta = new ConectaBD()

 //o this garante que a variável con pertence a classe em questão, caso nao use outra variavél  
 //com o nome de con não há necessidade de usar this               
 this.con = conecta.createConnection();
//implementação do insere

}
}
[/code]

E por ai vai, espero ter ajudado :slight_smile:
Abraço!

Tinha esquecido de comentar, esse foi um exemplo criando a conexão com o banco de dados via JDBC, existem outros meios mas a forma de utilização das classes é praticamente, senão a mesma, de utilização.

Muito Obrigado pela ajuda, mais acho que não me expressei direito, bom vamos la, vou mostrar o que eu consigo fazer e tabem não se se esta certo do jeito que eu fiz.

TELA CADASTRO DE PESSOA FEITO EM SWING NO ECLIPSE

package Grafico;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction;

public class Cadastro implements ActionListener {

private JLabel lblCodigo;
private JLabel lblNome;
private JLabel lblDataNascimento;
private JLabel lblRg;
private JLabel lblCpf;
private JLabel lblSexo;

private JTextField txtCodigo;
private JTextField txtNome;
private JTextField txtDataNascimento;
private JTextField txtRg;
private JTextField txtCpf;
private JTextField txtSexo;

private JButton btnNovo;
private JButton btnAlterar;
private JButton btnApagar;
private JButton btnCancelar;
private JButton btnGravar;
private JButton btnPrimeiro;
private JButton btnAnterior;
private JButton btnProximo;
private JButton btnUltimo;

private JPanel pnlPrincipal;
private JPanel pnlBotoes;

private JFrame frmPrincipal;

public void montaFormulario(){

  lblCodigo = new JLabel("Código");
  lblNome = new JLabel("Nome");
  lblDataNascimento = new JLabel("Data Nascimento");
  lblRg = new JLabel("Rg");
  lblCpf = new JLabel("Cpf");
  lblSexo = new JLabel("Sexo");
  lblCodigo.setBounds(50, 20, 80, 20);
  lblNome.setBounds(50, 60, 80, 20);
  lblDataNascimento.setBounds(50, 100, 80, 20);
  lblRg.setBounds(50, 140, 80, 20);
  lblCpf.setBounds(50, 180, 80, 20);
  lblSexo.setBounds(50, 220, 80, 20);
  
  txtCodigo = new JTextField(10);
  txtNome = new JTextField(50);
  txtDataNascimento = new JTextField(15);
  txtRg = new JTextField(15);
  txtCpf = new JTextField(15);
  txtSexo = new JTextField(1);
  txtCodigo.setBounds(110, 20, 80, 20);
  txtNome.setBounds(110, 60, 80, 20);
  txtDataNascimento.setBounds(110, 100, 80, 20);
  txtRg.setBounds(110, 140, 80, 20);
  txtCpf.setBounds(110, 180, 80, 20);
  txtSexo.setBounds(110, 220, 80, 20);
 
  btnNovo = new JButton("Novo");
  btnAlterar = new JButton("Alterar");
  btnApagar = new JButton("Apagar");
  btnCancelar = new JButton("Cancelar");
  btnGravar = new JButton("Gravar");
  btnPrimeiro = new JButton("Primeiro");
  btnAnterior = new JButton("Anterior");
  btnProximo = new JButton("Proximo");
  btnUltimo = new JButton("Ultimo");
  btnNovo.addActionListener(this);
  btnAlterar.addActionListener(this);
  btnApagar.addActionListener(this);
  btnCancelar.addActionListener(this);
  btnGravar.addActionListener(this);
  btnPrimeiro.addActionListener(this);
  btnAnterior.addActionListener(this);
  btnProximo.addActionListener(this);
  btnUltimo.addActionListener(this);
  
  pnlPrincipal = new JPanel();
  pnlPrincipal.add(lblCodigo);
  pnlPrincipal.add(txtCodigo);
  pnlPrincipal.add(lblNome);
  pnlPrincipal.add(txtNome);
  pnlPrincipal.add(lblRg);
  pnlPrincipal.add(txtRg);
  pnlPrincipal.add(lblCpf);
  pnlPrincipal.add(txtCpf);
  pnlPrincipal.add(lblDataNascimento);
  pnlPrincipal.add(txtDataNascimento);
  pnlPrincipal.add(lblSexo);
  pnlPrincipal.add(txtSexo);
  pnlPrincipal.add(btnNovo);
  pnlPrincipal.add(btnAlterar);
  pnlPrincipal.add(btnApagar);
  pnlPrincipal.add(btnCancelar);
  pnlPrincipal.add(btnGravar);
  pnlPrincipal.add(btnPrimeiro);
  pnlPrincipal.add(btnAnterior);
  pnlPrincipal.add(btnProximo);
  pnlPrincipal.add(btnUltimo);
  
  frmPrincipal = new JFrame("Cadastro de Pessoa");
  frmPrincipal.add(pnlPrincipal);  
  frmPrincipal.setSize(600, 400);
  frmPrincipal.setResizable(false);
  frmPrincipal.setVisible(true);
  frmPrincipal.setLocationRelativeTo(null);    
  frmPrincipal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//GRAVA
//inseri
//altera
//exclui
//navega pelos registros
}

}

POREM NAO CONSIGO FAZER AS IMPLEMENTAÇÃO DENTRO DO ACTIONPERFORMED, QUE SERIA OS EVENTOS DOS BOTOES, E TABEM NAO ESTOU CONSEGUINDO REDIMENCIONAR OS COMPONENTES NA TELA.

AGORA MINHA CLASSE DE PESSOA

package Pessoa;

public class Pessoa {

private String nome;
private String rg;
private String cpf;
private String dataNascimento;
private String sexo;

Pessoa(String nome , String rg , String cpf , String dataNascimento, String sexo){
setNome(nome);
setRg(rg);
setCpf(cpf);
setDataNascimento(dataNascimento);
setSexo(sexo);
}

public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getRg() {
	return rg;
}
public void setRg(String rg) {
	this.rg = rg;
}
public String getCpf() {
	return cpf;
}
public void setCpf(String cpf) {
	this.cpf = cpf;
}
public String getDataNascimento() {
	return dataNascimento;
}
public void setDataNascimento(String dataNascimento) {
	this.dataNascimento = dataNascimento;
}
public String getSexo() {
	return sexo;
}
public void setSexo(String sexo) {
	this.sexo = sexo;
}

}

Até ai tudo bem, porem falta a classe que conecta ao banco não consigo fazer, e eu queria UM EXEMPLO PRATICO E FUNCIONANDO com a classe do swing, a classe de pessoa e a classe do banco, para eu ter uma noção. ficaria muito grato se alguem poder me ajudar.

Galera a classe de cadastro feito em swing eu consigui melhorar vejam, mais conserteza tem muito a ser corrido ainda.

[code]
package Grafico;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;

import javax.swing.*;
import javax.swing.text.MaskFormatter;

public class Cadastro implements ActionListener {

private String [] sexo = {“Masculino”,“Feminino”};

private JComboBox cmbSexo;
private JLabel lblCodigo,lblNome,lblDataNascimento,lblRg,lblCpf,lblSexo;
private JTextField txtCodigo,txtNome;
private MaskFormatter mskDataNascimento, mskRg, mskCpf;
private JFormattedTextField txtDataNascimento,txtRg,txtCpf;
private JButton btnNovo,btnAlterar,btnApagar,btnCancelar,btnGravar,btnPrimeiro,btnAnterior,btnProximo,btnUltimo;
private JPanel pnlPrincipal;
private JFrame frmPrincipal;

public void montaFormulario(){

  lblCodigo = new JLabel("Código:");
  lblNome = new JLabel("Nome:");
  lblDataNascimento = new JLabel("Data Nasc:");
  lblRg = new JLabel("Rg:");
  lblCpf = new JLabel("Cpf:");
  lblSexo = new JLabel("Sexo:");
  lblCodigo.setBounds(50, 20, 80, 20);
  lblNome.setBounds(50, 60, 80, 20);
  lblDataNascimento.setBounds(50, 100, 80, 20);
  lblRg.setBounds(50, 140, 80, 20);
  lblCpf.setBounds(50, 180, 80, 20);
  lblSexo.setBounds(50, 220, 80, 20);

 try{
	 
   mskDataNascimento = new MaskFormatter("##/##/####");
   mskRg = new MaskFormatter("#####-###");
   mskCpf = new MaskFormatter("#########-##");
   mskDataNascimento.setPlaceholderCharacter('_');
   mskRg.setPlaceholderCharacter('_');
   mskCpf.setPlaceholderCharacter('_');
 }
 catch(ParseException excp){};
 
  txtCodigo = new JTextField(10);
  txtCodigo.setEnabled(false);
  txtCodigo.setBackground(Color.lightGray);
  txtNome = new JTextField(50);
  txtDataNascimento = new JFormattedTextField(mskDataNascimento);
  txtRg = new JFormattedTextField(mskRg);
  txtCpf = new JFormattedTextField(mskCpf);
  cmbSexo = new JComboBox(sexo);
  txtCodigo.setBounds(120, 20, 100, 20);
  txtNome.setBounds(120, 60, 400, 20);
  txtDataNascimento.setBounds(120, 100, 100, 20);
  txtRg.setBounds(120, 140, 100, 20);
  txtCpf.setBounds(120, 180, 100, 20);
  cmbSexo.setBounds(120, 220, 100, 20);
      
  btnNovo = new JButton("Novo");
  btnAlterar = new JButton("Alterar");
  btnApagar = new JButton("Apagar");
  btnCancelar = new JButton("Cancelar");
  btnGravar = new JButton("Gravar");
  btnPrimeiro = new JButton("<<");
  btnAnterior = new JButton("<");
  btnProximo = new JButton(">");
  btnUltimo = new JButton(">>");
  btnNovo.setBounds(5,265,85,30);
  btnAlterar.setBounds(90,265,85,30);
  btnApagar.setBounds(175,265,85,30);
  btnCancelar.setBounds(260,265,85,30);
  btnGravar.setBounds(345,265,85,30);
  btnPrimeiro.setBounds(437,265,50,30);
  btnAnterior.setBounds(487,265,50,30);
  btnProximo.setBounds(537,265,50,30);
  btnUltimo.setBounds(587,265,50,30);
  btnNovo.addActionListener(this);
  btnAlterar.addActionListener(this);
  btnApagar.addActionListener(this);
  btnCancelar.addActionListener(this);
  btnGravar.addActionListener(this);
  btnPrimeiro.addActionListener(this);
  btnAnterior.addActionListener(this);
  btnProximo.addActionListener(this);
  btnUltimo.addActionListener(this);
  
  pnlPrincipal = new JPanel();
  pnlPrincipal.setLayout(null);
  pnlPrincipal.add(lblCodigo);
  pnlPrincipal.add(txtCodigo);
  pnlPrincipal.add(lblNome);
  pnlPrincipal.add(txtNome);
  pnlPrincipal.add(lblRg);
  pnlPrincipal.add(txtRg);
  pnlPrincipal.add(lblCpf);
  pnlPrincipal.add(txtCpf);
  pnlPrincipal.add(lblDataNascimento);
  pnlPrincipal.add(txtDataNascimento);
  pnlPrincipal.add(lblSexo);
  pnlPrincipal.add(cmbSexo);
  pnlPrincipal.add(btnNovo);
  pnlPrincipal.add(btnAlterar);
  pnlPrincipal.add(btnApagar);
  pnlPrincipal.add(btnCancelar);
  pnlPrincipal.add(btnGravar);
  pnlPrincipal.add(btnPrimeiro);
  pnlPrincipal.add(btnAnterior);
  pnlPrincipal.add(btnProximo);
  pnlPrincipal.add(btnUltimo);
  
  frmPrincipal = new JFrame("Cadastro de Pessoa");
  frmPrincipal.add(pnlPrincipal);  
  frmPrincipal.setSize(650, 350);
  frmPrincipal.setResizable(false);
  frmPrincipal.setVisible(true);
  frmPrincipal.setLocationRelativeTo(null);    
  frmPrincipal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnNovo){

}
if (e.getSource() == btnAlterar){
	
}
if (e.getSource() == btnApagar){
	
}
if (e.getSource() == btnCancelar){
	
}
if (e.getSource() == btnGravar){
	
}
if (e.getSource() == btnPrimeiro){
	
}
if (e.getSource() == btnAnterior){
	
}
if (e.getSource() == btnProximo){
	
}
if (e.getSource() == btnUltimo){
	
}	

}

}[/code]

Porem ainda falta fazer a implementação dentro do actionPerformed que eu não consigo, e tem a classe de pessoa que eu citei acima e tbm falta fazer a classe que conecta ao banco e depois relacionar essas 3 classes de modo que funcione, se alguem poder me ajudar ficaria muito grato.

Ola Erick,

         Seu formulario swing esta mais legal, o que acontece é o seguinte, de uma estudada no padrao Dao, ele ira te ajudar no controle da persistencia da sua aplicacao, tendo um dao com os devidos metodos, voce teria que fazer mais ou menos isto no seu actionPerformed:
//codigo que supostamente salvaria uma pessoa no banco
PessoaDao dao = new PessoaDao();

//aqui eu crio uma instancia da pessoa que sera preenchida com os dados que o usuario digitou na tela swing
Pessoa pessoa = new Pessoa();
pessoa.setNome(tf_Nome.getText());
pessoa.setIdade(Integer.parseInt(tf_idade.getText()));
pessoa.setTelefone(tf_Telefone.getText());

//aqui eu simplesmente diria para o meu Dao Salvar esta Pessoa no Banco
dao.salva(pessoa);

Perceba que voce colocaria este codigo no actionPerformed para o botao Salvar por exemplo, a logica para salvar a sua pessoa esta dentro do dao, o legal de usar um dao e nao misturar os metodos que realmente sao responsaveis por persistencia na sua camada de apresentacao é que por exemplo, voce poderia estar deixando de lado jdbc e usar hibernate depois… voce faria a implementacao do hibernate, modificaria seu dao (nem seria necessario se voce quiser ir mais a frente, pode pesquisar sobre repository), mas as chamadas na sua apresentacao continuariam as mesmas, ou seja, voce acaba ficando INDEPENDENTE da forma como o sistema persiste os dados.

Foi apenas um pequeno Exemplo, abraços e bons codigos!

André Martins

Ola amigos, muito obrigado por vcs estar ajudando, porem eu ainda nao estou conseguindo fazer as implementacao do inserir,alterar,grava,deletar,cancelar,

como voces viu ai em cima consegui fazer a classe de pessoa, a classe do swing, e agora onsegui fazer a classe que conecta ao banco vejam :


package ConexaoJDBC;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;

import javax.swing.JOptionPane;

public final class Conexao {

	private static String url = "jdbc:mysql://localhost:3306/teste";
	private static String usuario = "root";
	private static String senha = "root";
	private static String driver = "com.mysql.jdbc.Driver";

	
	public static Connection abreConexao() throws SQLException {
		Connection conn = null;
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url,usuario,senha);
 			return conn;
			
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null,"Erro ao conectar ao servidor");
			return null;
		}   
	}
	
	public static void fechaConexao(Connection conn){
		try {   
            if (conn != null) {   
                conn.close();   
            }   
        } catch (Exception e) {   
			JOptionPane.showMessageDialog(null,"Não foi possivel fechar a conexão");
        }   

	}
}

POREM EU NAO SEI AONDE EU FAÇO GRAVA PESSOA, DELETA PESSOA , EU FAÇO UM METODO NA CLASSE PESSOA PRA GRAVA?? OU FAÇO ISSO NA CLASSE QUE CONECTA AO BANCO, PRO FAVOR MINHA DUVIDA PRINCIPAL É ESSA

pelo que eu entendi vc não esta sabendo como fazer a comunicação entre as camadas, procure sobre padrões de desenvolvimento,
segue a dica, apesar de estar usando swing, pode ser aplicado tbm:

outra dica, se tiver um equipamento bom utilize o netbeans, é uma mão na roda pra desenvolvimento grafico.

É isso mesmo amigo a minha dúvida, eu li esse artigo que voce me passou porem não consigo colocar em pratica, eu ja trabalhei um ano com delphi e somente em duas camadas entao era bem mais simples, agora estou estudando java e o que eu queria e que alguem mostrasse ai no forum um exemplo disso, funcionando encima das classe que eu criei acredito que muitos programadores delphi tem essa duvida.

Obrigado

Ola pessoal, fiquei o sabado inteiro tentando resolver esse problema “DUVIDA” e está funcionando , porem acho que essa não é a melhor forma (obs: fiz o metodo incluir pessoa dentro da classe pessoa está correto?) de ser feito por isso queria que voces estruturase essas classes da melhor forma possivel.

1 - CLASSE que fabrica Conexoes


package ConexaoJDBC;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;

import javax.swing.JOptionPane;

public final class Conexao {

	private static String url = "jdbc:mysql://localhost:3306/teste";
	private static String usuario = "root";
	private static String senha = "root";
	private static String driver = "com.mysql.jdbc.Driver";

	
	public static Connection abreConexao() {
		Connection conn = null;
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url,usuario,senha);
			return conn;
			
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null,"Erro ao conectar ao servidor");
			return null;
		}
		catch (Exception e) {
			JOptionPane.showMessageDialog(null,"Erro ao conectar ao servidor");
			return null;
		}   
	}
	
	public static void fechaConexao(Connection conn){
		try {   
            if (conn != null) {   
                conn.close();   
            }   
        } catch (Exception e) {   
			JOptionPane.showMessageDialog(null,"Não foi possivel fechar a conexão");
        }   

	}
}

2 - CLASSE de pessoa


package Pessoa;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;

import javax.swing.JOptionPane;

import ConexaoJDBC.Conexao;

public class Pessoa {
	
	private int codigo;
	private String nome;
	private String rg;
	private String cpf;
	private String dataNascimento;
	private String sexo;
	
   public Pessoa(int codigo, String nome , String rg , String cpf , String dataNascimento, String sexo){
		setCodigo(codigo);
	    setNome(nome);
		setRg(rg);
		setCpf(cpf);
		setDataNascimento(dataNascimento);
		setSexo(sexo);
	}

	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getRg() {
		return rg;
	}
	public void setRg(String rg) {
		this.rg = rg;
	}
	public String getCpf() {
		return cpf;
	}
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	
	public String getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(String dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public String getSexo() {
		return sexo;
	}
	public void setSexo(String sexo) {
		this.sexo = sexo;
	}
	
	public void inclui() {
		Connection conn = Conexao.abreConexao();
		Statement comando;

		String SQL;
		SQL = "INSERT INTO pessoa (codigo , nome , rg , cpf ,datanascimento, sexo)" ;
		SQL += "VALUES ('" +getCodigo()+"' , '"+getNome()+"' , '"+getRg()+"' , '"+getCpf()+"' , '"+getDataNascimento()+"' , '"+getSexo()+"' )";
		
		try {
			comando = conn.createStatement();
			comando.executeUpdate(SQL);
		} catch (SQLException e1) {
			e1.printStackTrace();
			JOptionPane.showMessageDialog(null,"Erro ao Gravar o cliente");

		}

		Conexao.fechaConexao(conn);
	}

	
	

}

3 - CLASSE do swing(“interface com o usuario”)


package Grafico;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.*;
import javax.swing.text.MaskFormatter;

import Pessoa.Pessoa;

public class Cadastro implements ActionListener {

  private String [] sexo = {"Masculino","Feminino"};

  private JComboBox cmbSexo;
  private JLabel lblCodigo,lblNome,lblDataNascimento,lblRg,lblCpf,lblSexo;
  private JTextField txtCodigo,txtNome;
  private MaskFormatter mskDataNascimento, mskRg, mskCpf;
  private JFormattedTextField txtDataNascimento,txtRg,txtCpf;
  private JButton btnNovo,btnAlterar,btnApagar,btnCancelar,btnGravar,btnPrimeiro,btnAnterior,btnProximo,btnUltimo;
  private JPanel pnlPrincipal;
  private JFrame frmPrincipal;
  
  public void montaFormulario(){
	  	  
	  lblCodigo = new JLabel("Código:");
	  lblNome = new JLabel("Nome:");
	  lblDataNascimento = new JLabel("Data Nasc:");
	  lblRg = new JLabel("Rg:");
	  lblCpf = new JLabel("Cpf:");
	  lblSexo = new JLabel("Sexo:");
	  lblCodigo.setBounds(50, 20, 80, 20);
	  lblNome.setBounds(50, 60, 80, 20);
	  lblDataNascimento.setBounds(50, 100, 80, 20);
	  lblRg.setBounds(50, 140, 80, 20);
	  lblCpf.setBounds(50, 180, 80, 20);
	  lblSexo.setBounds(50, 220, 80, 20);
	
	 try{
		 
	   mskDataNascimento = new MaskFormatter("##/##/####");
	   mskRg = new MaskFormatter("#####-###");
	   mskCpf = new MaskFormatter("#########-##");
	   mskDataNascimento.setPlaceholderCharacter('_');
	   mskRg.setPlaceholderCharacter('_');
	   mskCpf.setPlaceholderCharacter('_');
	 }
	 catch(ParseException excp){};
	 
	  txtCodigo = new JTextField(10);
      txtNome = new JTextField(50);
      txtDataNascimento = new JFormattedTextField(mskDataNascimento);
      txtRg = new JFormattedTextField(mskRg);
      txtCpf = new JFormattedTextField(mskCpf);
      cmbSexo = new JComboBox(sexo);
      txtCodigo.setBounds(120, 20, 100, 20);
	  txtNome.setBounds(120, 60, 400, 20);
	  txtDataNascimento.setBounds(120, 100, 100, 20);
	  txtRg.setBounds(120, 140, 100, 20);
	  txtCpf.setBounds(120, 180, 100, 20);
	  cmbSexo.setBounds(120, 220, 100, 20);
	      
      btnNovo = new JButton("Novo");
      btnAlterar = new JButton("Alterar");
      btnApagar = new JButton("Apagar");
      btnCancelar = new JButton("Cancelar");
      btnGravar = new JButton("Gravar");
      btnPrimeiro = new JButton("<<");
      btnAnterior = new JButton("<");
      btnProximo = new JButton(">");
      btnUltimo = new JButton(">>");
      btnNovo.setBounds(5,265,85,30);
      btnAlterar.setBounds(90,265,85,30);
      btnApagar.setBounds(175,265,85,30);
      btnCancelar.setBounds(260,265,85,30);
      btnGravar.setBounds(345,265,85,30);
      btnPrimeiro.setBounds(437,265,50,30);
      btnAnterior.setBounds(487,265,50,30);
      btnProximo.setBounds(537,265,50,30);
      btnUltimo.setBounds(587,265,50,30);
      btnNovo.addActionListener(this);
      btnAlterar.addActionListener(this);
      btnApagar.addActionListener(this);
      btnCancelar.addActionListener(this);
      btnGravar.addActionListener(this);
      btnPrimeiro.addActionListener(this);
      btnAnterior.addActionListener(this);
      btnProximo.addActionListener(this);
      btnUltimo.addActionListener(this);
      
      pnlPrincipal = new JPanel();
      pnlPrincipal.setLayout(null);
      pnlPrincipal.add(lblCodigo);
      pnlPrincipal.add(txtCodigo);
      pnlPrincipal.add(lblNome);
      pnlPrincipal.add(txtNome);
      pnlPrincipal.add(lblRg);
      pnlPrincipal.add(txtRg);
      pnlPrincipal.add(lblCpf);
      pnlPrincipal.add(txtCpf);
      pnlPrincipal.add(lblDataNascimento);
      pnlPrincipal.add(txtDataNascimento);
      pnlPrincipal.add(lblSexo);
      pnlPrincipal.add(cmbSexo);
      pnlPrincipal.add(btnNovo);
      pnlPrincipal.add(btnAlterar);
      pnlPrincipal.add(btnApagar);
      pnlPrincipal.add(btnCancelar);
      pnlPrincipal.add(btnGravar);
      pnlPrincipal.add(btnPrimeiro);
      pnlPrincipal.add(btnAnterior);
      pnlPrincipal.add(btnProximo);
      pnlPrincipal.add(btnUltimo);
      
      frmPrincipal = new JFrame("Cadastro de Pessoa");
      frmPrincipal.add(pnlPrincipal);  
      frmPrincipal.setSize(650, 350);
      frmPrincipal.setResizable(false);
      frmPrincipal.setVisible(true);
      frmPrincipal.setLocationRelativeTo(null);    
      frmPrincipal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
  }

@Override
public void actionPerformed(ActionEvent e) {
	if (e.getSource() == btnNovo){
		
	}
	if (e.getSource() == btnAlterar){
		
	}
	if (e.getSource() == btnApagar){
		
	}
	if (e.getSource() == btnCancelar){
		
	}
	if (e.getSource() == btnGravar){
		
		Pessoa pessoa = new Pessoa(Integer.parseInt(txtCodigo.getText()) , txtNome.getText() , txtRg.getText(), txtCpf.getText() , txtDataNascimento.getText() , cmbSexo.getToolTipText());
		pessoa.inclui();
		JOptionPane.showMessageDialog(null, "Cliente Gravado com sucesso");
	}
	if (e.getSource() == btnPrimeiro){
		
	}
	if (e.getSource() == btnAnterior){
		
	}
	if (e.getSource() == btnProximo){
		
	}
	if (e.getSource() == btnUltimo){
		
	}	
}
  
  
}

é ± por ai, eu costumo trbalhar com as camadas da seguinte forma:

camada de persistencia:
todas as classes que fazem contato direto com sql:

exemplo:
        public class PessoaDAO
        {
            public void incluir()
            {
                // aqui toda a geração de sql para inclusão, (Obs: caso não for utilizar algum framework de persistencia).
            }
        }

camada de negocio:

 uma classe de negocio onde todas as regras de nogocio(obvio) são aplicadas.
 Exemplo:

    [code]
    public classe pessoaBE
    {
        public void incluir()
        {
            // aqui aplico as regras de negocio, exemplo: verifico se pessoa já existe (fazendo uma consulta na camada 
            //de  persistencia)
            // aqui chamo a classe de persistencia para incluir a pessoa.
        }
    }

[/code]

camada de controle:
geralmente utilizo servlets mas como vc esta utilizando desktop, swing.
Exemplo:

    public class Cadastro implements ActionListener {
    // num evento qualquer faça a chamada a uma classe de negocio, exemplo: botão incluir pessoa chame o metodo de inclusão
    // da classe PessoaBE.
    }

mais uma coisa:
Eu utilizo beans ou TO, ou VO para transporte entre as camadas, da mesma forma e nomenclatura que vc utilizou:

public classe Pessoa{
    public String nome;
    //... getters and setters
}

não utilize metodos de negocio e nem persistencia nessa Classe, utilize ela somente como transporte de atributos entre as camadas.

Ola pessoal muito obrigado a todos por estar colaborando com o Tópico .
Ola vanzella obrigado por ter postado os exemplo como eu pedi deste o começo.

Intao eu fiz deste jeito POREM queria que você analizase para ver se estar correto,aonde eu possa estar melhorando ou corrigindo.

Obs: (so vou colocar alguns trexos da classe, porem e as mesma que eu postei anteriormente.

Classe .Swing

[quote]if (e.getSource() == btnGravar){

pessoa = new Pessoa(Integer.parseInt(txtCodigo.getText()) , txtNome.getText() , txtRg.getText(),          
                           txtCpf.getText () , txtDataNascimento.getText() , cmbSexo.getToolTipText());
            	pessoa.grava();

JOptionPane.showMessageDialog(null, "Cliente Gravado com sucesso");

}[/quote]

Classe Pessoa

[quote]public void grava() {

PessoaDao pessoaDao = new PessoaDao();
pessoaDao.grava(this);

}[/quote]

Class PessoaAdo

[code]public class PessoaDao {

private Connection conn ;
private Statement stm ;
private String sql;

public void grava(Pessoa pessoa) {

conn = Conexao.abreConexao();
sql = "INSERT INTO pessoa (codigo , nome , rg , cpf ,datanascimento, sexo)" ;
sql += "VALUES ('" +pessoa.getCodigo()+"' , '"+pessoa.getNome()+"' , '"+pessoa.getRg()+"' , '"+pessoa.getCpf()     
            +"' , '"+pessoa.getDataNascimento()+"' , '"+pessoa.getSexo()+"' )";
try {
	stm = conn.createStatement();
	stm.executeUpdate(sql);
} catch (SQLException e) {
	e.printStackTrace();
	JOptionPane.showMessageDialog(null,"Erro ao Gravar o cliente");
} finally {
	try {
		stm.close();
	} catch (SQLException e) {
		e.printStackTrace();
	}
}
Conexao.fechaConexao(conn);

}[/code]

Classe Banco

é a mesma citada anteriormente, ela apenas fabrica conecoes.

Agora em relação a :

Pelo que eu intendi eu eu usar os meus get e set, eu usar um objeto de referencia ao inves te colocar seus atributos

Ex: grava(pessoa.getNome() , pessoa.getRg() , e assim vai… ).

e colocar apena.

grava(pessoa)…

esses padroes seria isso?

Obrigado

Aguardo a colaboração de todos

Pessoal desculpe de ter colocado em Quote ai encima eu errei =/

Flws

vamos lá, primeiramente difina bem a nomenclatura da suas camadas:

Eu utilizo assim:

Pessoa: classe Bean, Entidade que contem os atributos representados.
PessoaBE: classe de negocio (Business Entity).
PessoaDAO: classes de persistencia.

Com relação ao Bean Pessoa, eu não utilizo metodos como vc esta fazendo, deixo somente os atributos:

public class Pessoa
{
    private String nome;
    private String cpf;
    private String rg;
    // gets e sets
}

no controle em vez de:

faço assim:


if (e.getSource() == btnGravar){

pessoa = new Pessoa(Integer.parseInt(txtCodigo.getText()) , txtNome.getText() , txtRg.getText(),
txtCpf.getText () , txtDataNascimento.getText() , cmbSexo.getToolTipText());
new PessoaBE().grava(pessoa);

JOptionPane.showMessageDialog(null, "Cliente Gravado com sucesso");
}

Bom eu estou fazendo assim veja

Classe Cadastro : inteface com o usuario.
Classe Pessoa : Classe de negocio.
Classe PessoaDao : Classe de persistencia.

Obs:(Sua Classe Pessoa seria a minha classe Cadastro?? e sua classe PessoaBE seria minha classe de Pessoa??).


Entao voce fala que eu devo tirar o gravar da minha classe Pessoa(negocio) e deixar apenas o gravar da minha classe PessoaAdo. É isso?E eu fazeria tudo as translação dentro da minha classe Cadastro(swing)?

se for isso ficaria assim


	if (e.getSource() == btnGravar){
		
		Pessoa pessoa = new Pessoa(Integer.parseInt(txtCodigo.getText()) , txtNome.getText() , txtRg.getText(),      
                                txtCpf.getText() , txtDataNascimento.getText() , cmbSexo.getToolTipText());
		
                                PessoaDao pessoaDao = new PessoaDao();
		
		pessoaDao.grava(pessoa);
		
		
		JOptionPane.showMessageDialog(null, "Cliente Gravado com sucesso");
	}

É isso?

Obrigado.

Espero que este tópico possa ajudar ainda mais! :smiley:

Artigo muito bom, mais como eu disse no inicio do post queria algum exemplo PRATICO , ou alguem que possa concertar os meus exemplos citado no post acima…

Alguem??

Obrigado

Mais ninguemm???

Tem algum administrador do forum afimm de ajudar???