Você está na página 1de 35

UNICASTELO

DESENVOLVIMENTO DE SOFTWARE JAVA DESKTOP MVC

Trabalho para nota do 1Bimestre da disciplina: Desenvolvimento de Software

So Paulo 07 de outubro de 2010 ndice 1. 2. 2.1 2.2 3. 3.1 3.2 4. 4.1 4.2 5. 5.1 5.2 6. 7. Introduo..............................................................................................................04 Java Desktop MVC Cadastrar(insert).......................................................................05 Visual...............................................................................................................05 Cdigo..............................................................................................................07 Java Desktop MVC Alterar(update).........................................................................13 Visual...............................................................................................................13 Cdigo..............................................................................................................15 Java Desktop MVC Excluir(delete)...........................................................................22 Visual...............................................................................................................22 Cdigo..............................................................................................................24 Java Desktop MVC Restaurar(select).......................................................................28 Visual...............................................................................................................28 Cdigo..............................................................................................................29 Concluso...............................................................................................................33 Bibliografia.............................................................................................................34

Introduo Histria O MVC foi descrito originalmente em 1979 por Trygve Reenskaug, ento trabalhando no Smalltalk na Xerox PARC. A implementao original descrita em profundidade no artigo "Applications Programming in Smalltalk-80: How to use ModelViewController". Componentes O modelo (model) usado para definir e gerenciar o domnio da informao e notificar observadores sobre mudanas nos dados. Ele uma representao detalhada da informao que a aplicao opera. A lgica de negcio adiciona valor semntico aos dados, e quando h mudana de estado o modelo notifica seus observadores. Por exemplo, aluno, professor e turma fazem parte do domnio de um sistema acadmico. Operaes como calcular a mdia final do aluno ou o ndice de faltas da turma fazem parte da lgica de domnio. A forma como o dado armazenado ou acessado no de interesse do MVC, assume-se que de responsabilidade do modelo. A viso (view) apresenta o modelo num formato adequado ao utilizador, na sada de dados, e diferentes vises podem existir para um mesmo modelo, para diferentes propsitos. O controlador (controller) recebe a entrada de dados e inicia a resposta ao utilizador ao invocar objetos do modelo, e por fim uma viso baseada na entrada. Ele tambm responsvel pela validao e filtragem da entrada de dados. Um caso prtico uma aplicao web em que a viso um documento HTML (ou derivado) gerado pela aplicao. O controlador recebe uma entrada GET ou POST aps um estmulo do utilizador e decide como process-la, invocando objetos do domnio para tratar a lgica de negcio, e or fim invocando uma viso para apresentar a sada.

2.

Java Desktop MVC Cadastrar(insert)

2.1

Visual Fig.2 Dados inseridos.

Fig. 1 Tela de cadastro de aluno.

Fig. 3 Mensagem de confirmao de cadastro cadastro.

Fig.4 Campos so limpos para novo

Fig.5 Banco de dados com novo Cadastro.

2.2 /**

Cdigo

* @(#)Insert.java * * Insert application * * @author * @version 1.00 2010/9/9 */ /*------------------------------VIEW---------------------------------------*/

import javax.swing.*; import java.awt.*; import java.awt.event.*;

//JFrame = moldura da tela public class Insert extends JFrame {

private JLabel rotulo1,rotulo2,rotulo3,rotulo4,rotulo5,rotulo6; public static JTextField nome,ra,tel,mail,senha; public static JButton botao1, botao2;

public Insert(){ // determinado o texto da barra azul o nome que vai dar a aplicao que vai aparecer na tela super("JAVA MVC INSERT");

//Container atribui o objeto container a c(vai a nossa tela) Container c = getContentPane(); c.setBackground(Color.green); setLayout(null);

//Instanciando o rotulo1 rotulo1 = new JLabel (" Nome : "); rotulo2 = new JLabel (" RA rotulo3 = new JLabel (" Tel : "); :");

rotulo4 = new JLabel (" E-mail:"); rotulo5 = new JLabel (" Senha :"); rotulo6 = new JLabel ("CADASTRO DE ALUNO"); botao1 = new JButton("Gravar"); botao2 = new JButton("Sair"); nome = new JTextField(100); ra = new JTextField(100); tel = new JTextField(100); mail = new JTextField(100); senha = new JTextField(100);

rotulo1.setBounds(10,30,80,20); rotulo2.setBounds(10,60,80,20);

rotulo3.setBounds(10,90,80,20); rotulo4.setBounds(10,120,80,20); rotulo5.setBounds(10,150,80,20); rotulo6.setBounds(40,05,230,20); rotulo6.setForeground(Color.white); rotulo6.setFont(new Font("Arial",Font.BOLD,18));

nome.setBounds(70,30,200,20); ra.setBounds(70,60,200,20); tel.setBounds(70,90,200,20); mail.setBounds(70,120,200,20); senha.setBounds(70,150,200,20); botao1.setBounds(50,180,80,20); botao2.setBounds(140,180,80,20);

c.add(rotulo1); c.add(rotulo2); c.add(rotulo3); c.add(rotulo4); c.add(rotulo5); c.add(rotulo6); c.add(nome); c.add(ra); c.add(tel); c.add(mail); c.add(senha); c.add(botao1);

botao2.setToolTipText("Boto que finaliza a janela"); c.add(botao2); botao2.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { int opcao; opcao=JOptionPane.showConfirmDialog(null, "Deseja mesmo fechar a janela?", "Fechar",JOptionPane.YES_NO_OPTION);

if (opcao==JOptionPane.YES_OPTION)

System.exit(0); }});

ButtonHandler handler = new ButtonHandler(); botao1.addActionListener(handler);

setVisible(true); setLocationRelativeTo(null); setSize(300,250); show(); }

public static void main(String[] args) {

Insert app = new Insert();

//Para a aplicao quando fechamos o formulrio app.addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } } ); }

/*------------------------------CONTROL---------------------------------------*/

private class ButtonHandler implements ActionListener{ public void actionPerformed(ActionEvent e){

Insere insere = new Insere();

if (nome.getText().length() != 0){ insere.setNome(nome.getText()); } else{ JOptionPane.showMessageDialog(null, "Digite o nome!"); return; }

if (ra.getText().length() != 0){

insere.setRa(ra.getText()); } else{ JOptionPane.showMessageDialog(null, "Digite o RA!"); return; }

if (tel.getText().length() != 0){ insere.setTel(tel.getText()); } else{ JOptionPane.showMessageDialog(null, "Digite o telefone!"); return; }

if (mail.getText().length() != 0){ insere.setMail(mail.getText()); } else{ JOptionPane.showMessageDialog(null, "Digite o e-mail!"); return; } if(senha.getText().length() !=0){ insere.setSenha(senha.getText()); } else{ JOptionPane.showMessageDialog(null,"Digite a sua senha!!");

return; } JOptionPane.showMessageDialog(null, insere.gravar());

//limpa os campos textos para uma nova insero nome.setText(null); ra.setText(null); tel.setText(null); mail.setText(null); senha.setText(null); nome.requestFocus();

} } }

/*------------------------------MODEL---------------------------------------*/ import java.sql.*;

// Classe de logica para as Insere public class Insere { String nome; String ra; String tel; String mail; String senha;

public Insere(){ System.out.println("Instancia da midia criada"); }

public void setNome(String vnome){ nome = vnome; }

public void setRa(String vra){ ra = vra; }

public void setTel(String vtel){ tel = vtel; }

public void setMail(String vmail){ mail = vmail; }

public void setSenha(String vsenha){ senha = vsenha; }

public String gravar(){

String mensagem = "";

try { //Instanciando o objeto de conexao Connection conn = DriverManager.getConnection("jdbc:odbc:aluno", "", ""); //Instanciando o objeto comando SQL Statement s = conn.createStatement(); //Insere um novo valor na tabela_cadastro s.execute("INSERT INTO aluno(nome,ra,tel,mail,senha) VALUES('"+nome+"','"+ra+"','"+tel+"','"+mail+"','"+senha+"')"); s.execute("SELECT * FROM aluno"); mensagem = "Cadastro realizado com sucesso!!"; } catch(Exception e){ mensagem ="Erro ao gravar. Envie esta mensagem ao suporte: "+e.toString(); } return mensagem; } }

3. 3.1

Java Desktop MVC Alterar(update) Visual

Fig.6 Tela de Atualizao de cadastro

Fig.7 Busca de registro

Fig.8 Registro localizado

Fig.9 Registro alterado(senha)

Fig.10 Mensagem de confirmao de atualizao atualizao

Fig.11 Campos limpos para nova

Fig.12 Registro atualizado no Banco de Dados

3.2 /**

Cdigo

* @(#)Alterar.java * * Alterar application * * @author * @version 1.00 2010/9/23 */

/*-------------------VIEW------------------*/ import javax.swing.*; import java.awt.*; import java.awt.event.*;

//JFrame = moldura da tela public class Alterar extends JFrame {

private JLabel rotulo1,rotulo2,rotulo3,rotulo4,rotulo5,rotulo6,rotulo7,rotulo8; public static JTextField nome,nome_alterado,ra,tel,mail,senha,cod; public static JButton botao1, botao2,botao3;

public Alterar(){ // determinado o texto da barra azul o nome que vai dar a aplicao que vai aparecer na tela super("JAVA MVC UPDATE");

//Container atribui o objeto container a c(vai a nossa tela) Container c = getContentPane(); c.setBackground(Color.green); setLayout(null);

//Instanciando o rotulo1 rotulo1 = new JLabel (" Nome : "); rotulo2 = new JLabel (" Cdigo : "); rotulo3 = new JLabel (" Nome : "); rotulo4 = new JLabel (" RA : ");

rotulo5 = new JLabel (" Telefone: "); rotulo6 = new JLabel (" E-mail : "); rotulo7 = new JLabel (" Senha : "); rotulo8 = new JLabel ("ATUALIZAO DE CADASTRO");

rotulo1.setBounds(10,30,80,20); rotulo2.setBounds(10,90,80,20); rotulo3.setBounds(10,120,80,20); rotulo4.setBounds(10,150,80,20); rotulo5.setBounds(10,180,80,20); rotulo6.setBounds(10,210,80,20); rotulo7.setBounds(10,240,80,20);

rotulo8.setBounds(20,05,250,20); rotulo8.setForeground(Color.white); rotulo8.setFont(new Font("Arial",Font.BOLD,16));

nome = new JTextField(100); cod = new JTextField(100); nome_alterado = new JTextField(100); ra = new JTextField(100); tel = new JTextField(100); mail = new JTextField(100); senha = new JTextField(100); botao1 = new JButton("Buscar"); botao2 = new JButton("Sair"); botao3 = new JButton("Salvar");

nome.setBounds(70,30,200,20); cod.setBounds(70,90,30,20); nome_alterado.setBounds(70,120,200,20); ra.setBounds(70,150,200,20); tel.setBounds(70,180,200,20); mail.setBounds(70,210,200,20); senha.setBounds(70,240,200,20); botao1.setBounds(190,55,80,20); botao2.setBounds(190,270,80,20); botao3.setBounds(110,270,80,20);

c.add(rotulo1);

c.add(rotulo2); c.add(rotulo3); c.add(rotulo4); c.add(rotulo5); c.add(rotulo6); c.add(rotulo7); c.add(rotulo8); c.add(nome); c.add(nome_alterado); c.add(ra); c.add(tel); c.add(mail); c.add(senha); c.add(cod); c.add(botao1); c.add(botao3);

botao2.setToolTipText("Boto que finaliza a janela"); c.add(botao2); botao2.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { int opcao; opcao=JOptionPane.showConfirmDialog(null, "Deseja mesmo fechar a janela?", "Fechar",JOptionPane.YES_NO_OPTION);

if (opcao==JOptionPane.YES_OPTION)

System.exit(0); }});

ButtonHandler handler = new ButtonHandler(); botao1.addActionListener(handler);

ButtonHandler2 handler2 = new ButtonHandler2(); botao3.addActionListener(handler2);

setVisible(true); setLocationRelativeTo(null); //determinando o tamanho da tela setSize(300,350); //exibindo a tela show();

} public static void main(String[] args) {

Alterar app = new Alterar();

//Para a aplicao quando fechamos o formulrio app.addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); }

} ); }

/*-------------------CONTROL------------------*/ private class ButtonHandler implements ActionListener{ public void actionPerformed(ActionEvent e){

Editar editar = new Editar();

if (nome.getText().length() != 0){ editar.setNome(nome.getText()); } else{ JOptionPane.showMessageDialog(null, "Digite o nome!"); return; } editar.gravar(); } } private class ButtonHandler2 implements ActionListener{ public void actionPerformed(ActionEvent i){

Editar editar = new Editar();

editar.setNomeAlterado(nome_alterado.getText()); editar.setRa(ra.getText());

editar.setTel(tel.getText()); editar.setMail(mail.getText()); editar.setSenha(senha.getText()); editar.setCod(cod.getText());

JOptionPane.showMessageDialog(null,editar.atualizar());

//limpa os campos de texto para nova alterao mail.setText(null); ra.setText(null); senha.setText(null); nome_alterado.setText(null); cod.setText(null); nome.setText(null); tel.setText(null); nome.requestFocus(); } } }

/*--------------------------MODEL-----------------------------*/ import java.sql.*; import javax.swing.*; import java.awt.*; import java.awt.event.*;

public class Editar {

static String nome; static String nome_alterado; static String ra; static String tel; static String mail; static String senha; static String cod;

public Editar(){ System.out.println("Instancia da midia criada"); }

public void setNome(String vnome){ nome = vnome; } public void setNomeAlterado(String vnome_alterado){ nome_alterado = vnome_alterado; } public void setRa(String vra){ ra = vra; } public void setTel(String vtel){ tel = vtel; } public void setMail(String vmail){ mail = vmail; }

public void setSenha(String vsenha){ senha = vsenha; } public void setCod(String vcod){ cod = vcod; }

public String gravar(){

String mensagem = "";

try { //Instanciando o objeto de conexao Connection conn = DriverManager.getConnection("jdbc:odbc:aluno", "", ""); //Instanciando o objeto comando SQL Statement s = conn.createStatement();

ResultSet rs = s.executeQuery("SELECT * FROM aluno WHERE nome LIKE'"+nome+"'"); int cont=0;

while (rs.next()){

cont++; Alterar.nome_alterado.setText(rs.getString("nome")); Alterar.ra.setText(rs.getString("ra")); Alterar.tel.setText(rs.getString("tel"));

Alterar.mail.setText(rs.getString("mail")); Alterar.senha.setText(rs.getString("senha")); Alterar.cod.setText(rs.getString("codigo")); }

if(cont==0){ JOptionPane.showMessageDialog(null,"Registro no encontrado!!"); }

} catch(Exception e){ mensagem ="Erro ao comunicar com banco de dados. Envie esta mensagem ao suporte: "+e.toString(); }

return mensagem; }

public String atualizar(){

String mensagem="";

try{ Connection con = DriverManager.getConnection("jdbc:odbc:aluno","","");

Statement st = con.createStatement();

String sql = "UPDATE aluno SET nome="+"'"+nome_alterado+"',ra=" +"'"+ra+"',tel="+"'"+tel+"',mail="+"'"+mail+"',senha="+"'"+senha+"' WHERE codigo="+""+cod+""; st.execute(sql); System.out.println(sql); mensagem = "Registro alterado com sucesso!!"; } catch(Exception e){ mensagem ="Erro ao alterar. Envie esta mensagem ao suporte: "; } return mensagem; } }

4.

Java Desktop MVC Excluir(delete)

4.1

Visual

Fig.13 Tela de Excluso de Cadastro

Fig.14 Busca de Registro

Fig.15 Tela para confirmao de Excluso

Fig.16 Mensagem de Confirmao de Excluso

Fig.17 Campos limpos para nova excluso

Fig.18 Registro excludo do Banco de Dados

4.2

Cdigo

/*---------------------VIEW------------------*/ /** * @(#)Delete.java * * Delete application * * @author * @version 1.00 2010/9/9 */ import javax.swing.*; import java.awt.*; import java.awt.event.*;

//JFrame = moldura da tela public class Delete extends JFrame { private JLabel rotulo1,rotulo2; public static JTextField nome; public static JButton botao1, botao2;

public Delete(){ // determinado o texto da barra azul o nome que vai dar a aplicao que vai aparecer na tela super("JAVA MVC DELETE"); Container c = getContentPane(); c.setBackground(Color.red);

setLayout(null);

//Instanciando o rotulo1 rotulo1 = new JLabel ("EXCLUIR CADASTRO"); rotulo2 = new JLabel (" Nome: "); nome = new JTextField(100); botao1 = new JButton("Buscar"); botao2 = new JButton("Sair"); rotulo1.setBounds(75,05,200,20); rotulo2.setBounds(10,30,80,20); nome.setBounds(70,30,200,20); botao1.setBounds(90,60,80,20); botao2.setBounds(190,60,80,20); rotulo1.setForeground(Color.white); rotulo1.setFont(new Font("Arial",Font.BOLD,18));

c.add(rotulo1); c.add(rotulo2); c.add(nome); c.add(botao1); c.add(botao2);

botao1.setToolTipText("Boto que procura registro"); botao2.setToolTipText("Boto que finaliza a janela");

botao2.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e) { int opcao; opcao=JOptionPane.showConfirmDialog(null, "Deseja mesmo fechar a janela?","Fechar",JOptionPane.YES_NO_OPTION);

if (opcao==JOptionPane.YES_OPTION)

System.exit(0); }});

ButtonHandler handler = new ButtonHandler(); botao1.addActionListener(handler);

setVisible(true); setLocationRelativeTo(null); //determinando o tamanho da tela setSize(350,150); //exibindo a tela show();

} public static void main(String[] args) {

Delete app = new Delete();

//Para a aplicao quando fechamos o formulrio app.addWindowListener( new WindowAdapter(){

public void windowClosing(WindowEvent e){ System.exit(0); } } ); }

/*---------------------CONTROL------------------*/ private class ButtonHandler implements ActionListener{ public void actionPerformed(ActionEvent e){

Busca busca = new Busca();

if (nome.getText().length() != 0){ busca.setNome(nome.getText()); } else{ JOptionPane.showMessageDialog(null, "Digite o nome!"); return; } JOptionPane.showMessageDialog(null,busca.gravar()); nome.setText(null); nome.requestFocus(); } } }

/*---------------------MODEL------------------*/ import java.sql.*; import javax.swing.*; import java.awt.*; import java.awt.event.*;

// Classe de logica para as Insere

public class Busca { String nome;

public Busca(){ System.out.println("Instancia da midia criada"); }

public void setNome(String vnome){ nome = vnome; }

public String gravar(){ String mensagem = "";

try { //Instanciando o objeto de conexao Connection conn = DriverManager.getConnection("jdbc:odbc:aluno", "", ""); //Instanciando o objeto comando SQL Statement s = conn.createStatement();

ResultSet rs = s.executeQuery("SELECT * FROM aluno WHERE nome LIKE'"+nome+"'"); int cont=0;

while (rs.next()){

cont++; int opcao;

opcao = JOptionPane.showConfirmDialog(null,"Deseja excluir este registro?"+"\nNome: "+rs.getString("nome")+" "+"\nCdigo: "+rs.getString("codigo")+" "+"\nRA: " +rs.getString("ra")+" "+"\nTelefone: " +rs.getString("tel")+" "+"\nE-mail: "+rs.getString("mail")+" "+"\nSenha: "+rs.getString("senha")+" ");

if(opcao ==JOptionPane.YES_OPTION){ s.executeUpdate("DELETE FROM aluno WHERE nome = '"+nome+"'");

return mensagem = "Registro deletado com sucesso!"; } } if(cont==0){ mensagem = "Registro no encontrado!!"; } } catch(Exception e){ mensagem = "Erro ao deletar. Envie esta mensagem ao suporte: "; } return mensagem;

} }

5.

Java Desktop MVC Restaurar(select)

5.1

Visual

Fig.19 Tela de Validao de Registro

Fig.20 Dados inseridos para Validao

Fig.21 Mensagem de Confirmao de Restaurao de Dados

5.2

Cdigo /*-----------------------------VIEW----------------------------------*/

/** * @(#)Login.java * * Login application * * @author * @version 1.00 2010/8/12 */ import java.sql.*; import javax.swing.*; import java.awt.*; import java.awt.event.*;

//JFrame = moldura da tela

public class Login extends JFrame {

private JLabel rotulo1,rotulo2,rotulo3; public static JTextField nome; public static JPasswordField senha; public static JButton botao1, botao2;

public Login(){ // determinado o texto da barra azul o nome que vai dar a aplicao que vai aparecer na tela super("JAVA MVC SELECT");

//Container atribui o objeto container a c(vai a nossa tela) Container c = getContentPane(); c.setBackground(Color.green); setLayout(null);

//Instanciando o rotulo1 rotulo1 = new JLabel (" Nome: "); rotulo2 = new JLabel (" Senha: "); rotulo3 = new JLabel ("VALIDAO DE USURIO"); nome = new JTextField(100); senha = new JPasswordField(100); botao1 = new JButton("Entrar"); botao2 = new JButton("Sair");

rotulo1.setBounds(10,30,80,20); rotulo2.setBounds(10,60,80,20);

rotulo3.setBounds(30,05,230,20); rotulo3.setForeground(Color.white); rotulo3.setFont(new Font("Arial",Font.BOLD,18)); nome.setBounds(70,30,200,20); senha.setBounds(70,60,200,20); botao1.setBounds(100,90,80,20); botao2.setBounds(190,90,80,20);

c.add(rotulo1); c.add(rotulo2); c.add(rotulo3); c.add(nome); c.add(senha); c.add(botao1);

botao2.setToolTipText("Boto que finaliza a janela"); c.add(botao2); botao2.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { int opcao; opcao=JOptionPane.showConfirmDialog(null,"Deseja mesmo fechar a janela?","Fechar",JOptionPane.YES_NO_OPTION);

if (opcao==JOptionPane.YES_OPTION)

System.exit(0); }});

ButtonHandler handler = new ButtonHandler(); botao1.addActionListener(handler);

setVisible(true); setLocationRelativeTo(null); //determinando o tamanho da tela setSize(330,180); //exibindo a tela show();

public static void main(String[] args){

Login app = new Login();

app.addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); }}); }

/*----------------------------CONTROL-------------------------------------*/ private class ButtonHandler implements ActionListener{ public void actionPerformed(ActionEvent e){

Acesso acesso = new Acesso();

if (nome.getText().length() != 0){ acesso.setNome(nome.getText()); } else{ JOptionPane.showMessageDialog(null, "Digite o nome!"); return; } if (senha.getText().length() != 0){ acesso.setSenha(senha.getText()); } else{ JOptionPane.showMessageDialog(null, "Digite Senha!"); return; } JOptionPane.showMessageDialog(null, acesso.validar()); nome.setText(null); senha.setText(null); nome.requestFocus(); } } }

/*----------------------MODEL------------------*/ private String nome; private String senha;

private int num; public Acesso(){ System.out.println("Instancia da midia criada"); }

public void setNome(String vnome){ nome = vnome; }

public void setSenha(String vsenha){ senha = vsenha; }

public String validar(){ String mensagem ="";

try{

Connection con = DriverManager.getConnection("jdbc:odbc:aluno","",""); Statement s = con.createStatement(); ResultSet rs = s.executeQuery("SELECT * FROM aluno WHERE nome ='"+nome+"'AND senha = '"+senha+"'"); int cont = 0; while (rs.next()){

mensagem = "SEJA BEM-VINDO "+rs.getString("nome")+"\n cont++; }

Voc est logado ";

if(cont==0){ return mensagem = "Usurio e Senha Invlidos"; } } catch(Exception e) { mensagem ="Erro ao conectar. Envie esta mensagem ao suporte: "+e.toString(); } return mensagem; } }

6.

Concluso

Com o aumento da complexidade das aplicaes desenvolvidas, torna-se relevante a separao entre os dados e a apresentao das aplicaes. Desta forma, alteraes feitas no layout no afetam a manipulao de dados, e estes podero ser reorganizados sem alterar o layout. A concluso do grupo, determinada focando nas vantagens de apresentao e manutenes facilitadas de um projeto, por meio da Metodologia MVC, que nos direcionou na codificao e lgica do programa, refletindo em um projeto claro para a finalidade definida.

Você também pode gostar