Você está na página 1de 75

Professor Hildeberto Melo - 2011

Confeco de Um Sistema de Vendas em Java com


Swing

Professor Hildeberto Melo - 2011




Professor Hildeberto Melo - 2011
ndice
Sobre o autor .................................................................................................................................8
Introduo .....................................................................................................................................9
Configuraes ................................................................................................................................9
Tela principal do NetBeans..........................................................................................................10
Criando um novo projeto ............................................................................................................11
Definio do cenrio....................................................................................................................14
Codificando as Classes Bsicas ....................................................................................................16
Codificando a Classe Cliente....................................................................................................17
Codificando a Classe Produto..................................................................................................20
Codificando a Classe Item de Venda .......................................................................................22
Codificando a Classe Venda.....................................................................................................23
Classe RepositorioCliente ........................................................................................................27
Implementao do Construtor, mtodos obterIntancia e listarTodos................................27
Implementao do Mtodo verificaExistencia....................................................................28
Implementao do Mtodo Inserir Cliente .........................................................................28
Implementao do Mtodo Remover Cliente.....................................................................29
Implementao do Mtodo Atualizar Cliente .....................................................................29
Classe RepositorioProduto ......................................................................................................31
Implementao do Construtor e dos Mtodos Listar Todos e obterInstancia....................31
Implementao do Mtodo Inserir Produto .......................................................................32
Implementao do Mtodo Remover Produto ...................................................................32
Implementao do Mtodo Atualizar Produto ...................................................................33
Implementao do Mtodo Verifica Existncia...................................................................33
Classe RepositorioVenda .........................................................................................................35
Implementao do Construtor e dos Mtodos listarTodos e obterIntancia.......................35
Implementao do Mtodo Inserir Venda ..........................................................................36
Professor Hildeberto Melo - 2011
Implementao do Mtodo Remover Venda......................................................................36
Implementao do Mtodo Atualizar Venda ......................................................................37
Implementao Mtodo verificaExistncia.........................................................................37
Trabalhando com componentes Swing .......................................................................................39
Configurando a Classe Principal do Projeto.................................................................................41
Manipulando Componentes Swing (bsico)................................................................................44
JTextField.................................................................................................................................44
JComboBox ..............................................................................................................................45
JTable.......................................................................................................................................47
Codificando a Parte Visual do Sistema de Vendas ......................................................................50
Tela Principal do Sistema.........................................................................................................50
Telas de Consultas ...................................................................................................................51
Tela de Consulta de Clientes................................................................................................51
Tela de Consulta de Produtos..............................................................................................51
Tela de Consulta de Vendas.................................................................................................52
Telas de Cadastro e Alterao .................................................................................................53
Tela de Cadastro e Alterao de Cliente..............................................................................53
Tela de Cadastro e Alterao de Produto............................................................................54
Tela de Cadastro de Venda..................................................................................................55
Cdigo fonte das telas .................................................................................................................57
Mtodos auxiliares ..................................................................................................................57
Centralizar frame.................................................................................................................57
Tela principal ...........................................................................................................................57
Telas do Cliente .......................................................................................................................58
Consulta de Clientes ............................................................................................................58
Cadastro de Clientes............................................................................................................58
Alterao de Cliente ............................................................................................................59
Professor Hildeberto Melo - 2011
Telas do Produto......................................................................................................................59
Consulta de produtos ..........................................................................................................59
Cadastro de produtos ..........................................................................................................60
Alterao de produto...........................................................................................................60
Telas do Venda ........................................................................................................................62
Consulta de vendas..............................................................................................................62
Cadastro de Venda...............................................................................................................62
Trabalhando com Banco de Dados..............................................................................................64
Estrutura do Banco De Dados..................................................................................................65
Configurando uma Conexo....................................................................................................66
Criando as Classes para Trabalhar com a Conexo Criada......................................................68
Classe de Conexo ...............................................................................................................68
Classe de Repositrio...............................................................................................................69
Estrutura da Classe RepositorioClienteOdbc.......................................................................70
Mtodo remover .................................................................................................................71
Mtodo inserir .....................................................................................................................72
Mtodo atualizar .................................................................................................................73
Mtodo listar todos .............................................................................................................74
Modificando as Telas para Trabalhar Com Banco de Dados ...................................................75
Consideraes Finais............................................................................................................75

Professor Hildeberto Melo - 2011
Figuras
Figura 1 - Tela principal do NetBeans..........................................................................................10
Figura 2 - Criando novo projeto parte 1 ...................................................................................11
Figura 3 - Criando novo projeto parte 2 ...................................................................................12
Figura 4 - Criando novo projeto parte 3 ...................................................................................12
Figura 5 - Estrutura de pastas do projeto....................................................................................13
Figura 6 - Diagrama de Classes de Domnio.................................................................................14
Figura 7 - Diagrama com as classes referentes manipulao dos dados do sistema ...............14
Figura 8 - Criando uma classe no NetBeans parte 1....................................................................16
Figura 9 - Criando uma classe no NetBeans parte 2....................................................................17
Figura 10 - Configurando a classe Cliente parte 1.......................................................................18
Figura 11 - Configurando a classe Cliente parte 2.......................................................................18
Figura 12 - Configurando a classe Cliente parte 3.......................................................................19
Figura 13 - Configurando a classe Cliente parte 4.......................................................................19
Figura 14 - Configurando a classe Cliente parte 5.......................................................................20
Figura 15 - Configurando a classe Cliente parte 6.......................................................................20
Figura 16 - Configurando a classe Produto parte 1 .....................................................................21
Figura 17 - Configurando a classe Produto parte 2 .....................................................................21
Figura 18 - Configurando a classe ItemVenda parte 1.................................................................22
Figura 19 - Configurando a classe ItemVenda parte 2.................................................................23
Figura 20 - Configurando a classe Venda parte 1........................................................................24
Figura 21 - Configurando a classe Venda parte 2........................................................................24
Figura 22 - Mtodo para calcular o total da venda .....................................................................25
Figura 23 Classe RepositorioCliente .........................................................................................27
Figura 24 - Mtodos listarTodos, obterIntancia e construtor do RepositrioCliente .................28
Figura 25 - Mtodo verificaExistencia Cliente.............................................................................28
Figura 26 - Mtodo inserir Cliente...............................................................................................29
Professor Hildeberto Melo - 2011
Figura 27 - Mtodo remover Cliente...........................................................................................29
Figura 28 - Mtodo atualizar Cliente...........................................................................................30
Figura 29 - Estrutura da classe RepositrioProduto....................................................................31
Figura 30 - Mtodos listarTodos, obterInstancia e construtor do RepositrioProduto..............32
Figura 31 - Mtodo inserir produto.............................................................................................32
Figura 32 - Mtodo remover produto .........................................................................................33
Figura 33 - Mtodo atualizar produto.........................................................................................33
Figura 34 - Mtodo verifica existncia produto ..........................................................................34
Figura 35 - Estrutura da classe RepositrioVenda.......................................................................35
Figura 36 - Construtor e mtodos listar todos e obterIntancia...................................................36
Figura 37 - Mtodo inserir venda ................................................................................................36
Figura 38 - Mtodo remover venda.............................................................................................37
Figura 39 - Mtodo atualizar venda ............................................................................................37
Figura 40 - Mtodo verifica existncia venda..............................................................................38
Figura 41 - Tela principal do Sistema de Vendas.........................................................................50
Figura 42 - Tela de Consulta de Clientes......................................................................................51
Figura 43 - Tela de Consulta de Produtos....................................................................................52
Figura 44 - Tela de Consulta de Vendas.......................................................................................53
Figura 45 - Tela de Cadastro de Cliente.......................................................................................54
Figura 46 - Tela de Alterao de Cliente......................................................................................54
Figura 47 - Tela de Cadastro de Produto.....................................................................................55
Figura 48 - Tela de Alterao de Produto....................................................................................55
Figura 49 - Tela de Cadastro de Venda........................................................................................56
Figura 50 - Mtodo centralizar frame..........................................................................................57
Figura 51 - Cdigo Fonte tela principal........................................................................................57
Figura 52 - Cdigo fonte tela consulta de clientes ......................................................................58
Figura 53 - Cdigo fonte tela novo cliente ..................................................................................59
Professor Hildeberto Melo - 2011
Figura 54 - Cdigo fonte tela alterar cliente................................................................................59
Figura 55 - Cdigo fonte tela consulta de produtos....................................................................60
Figura 56 - Cdigo fonte tela novo produto................................................................................60
Figura 57 - Cdigo fonte tela alterar produto .............................................................................61
Figura 58 - Cdigo fonte tela consulta de vendas 1....................................................................62
Figura 59 - Cdigo fonte tela consulta de vendas 2 ....................................................................62
Figura 60 - Cdigo fonte tela cadastro de vendas 1....................................................................63
Figura 61 - Cdigo fonte tela cadastro de vendas 2....................................................................63
Figura 62 - Cdigo fonte tela cadastro de vendas 3....................................................................63
Figura 63 - Cdigo fonte tela cadastro de vendas 4....................................................................64
Figura 64 - Configurando a conexo com o banco de dados - 1..................................................66
Figura 65 - Configurando a conexo com o banco de dados - 2.................................................67
Figura 66 - Configurando a conexo com o banco de dados - 3..................................................67
Figura 67 - Configurando a conexo com o banco de dados - 4..................................................68
Figura 68 - Classe de Conexo com o banco de dados................................................................69
Figura 69 - Estrutura da classe RepositorioClienteOdbc .............................................................70
Figura 70 - Mtodo remover do RepositorioClienteOdbc...........................................................71
Figura 71 - Mtodo inserir do RepositorioClienteOdbc ..............................................................72
Figura 72 - Mtodo atualizar do RepositorioClienteOdbc...........................................................73
Figura 73 - Mtodo listarTodos do RepositorioClienteOdbc.......................................................74
Figura 74 - Mudana na GUI para utilizar banco de dados..........................................................75

Professor Hildeberto Melo - 2011
Sobre o autor

O professor Hildeberto Melo atua nas reas acadmica, desenvolvimento e consultorias
em sistemas de informao, desenvolvimento e consultorias em banco de dados.
Formao acadmica:
Tcnico em Desenvolvimento de Sistemas Ibratec Instituto Brasileiro de
Tecnologia;
Bacharel em Sistemas de Informao FIR Faculdade Integrada do Recife;
Especialista em Docncia no Ensino Superior FMN Faculdade Maurcio de
Nassau;
Mestre em Cincia da Computao UFPE Universidade Federal de
Pernambuco.

Disciplinas Ministradas:
Banco de Dados,
Projeto de Banco de Dados,
Desenvolvimento WEB,
Estrutura de Dados,
Programao Orientada a Objetos,
Desenvolvimento de Aplicaes Desktop,
Programao Cliente Servidor,
Sistemas Distribudos,
Sistemas Operacionais,
Anlise de Projetos de Sistemas Orientado a Objetos,
Linguagens: Java, C#, C, Pascal, Delphi, PHP, ASP.
Lgica Matemtica
Lgica de Programao
Informtica Bsica
Tecnologia da Informao e Sociedade
Professor Hildeberto Melo - 2011
Introduo

Neste documento veremos o passo a passo para o desenvolvimento de um sistema
bsico de gerenciamento de vendas. Foram aplicadas apenas as validaes necessrias
para confeccionar este sistema.


Configuraes

Para a confeco deste aplicativo utilizaremos a IDE NetBeans.

Vamos comear com a instalao do JDK (Java Development Kit), necessrio
ter instalado o JDK no computador para podermos comear a trabalhar com
desenvolvimento em Java.
Baixar o JDK
Instalar o JDK no computador
Baixar o NetBeans do site www.netbeans.org. Aps baixar o NetBeans, efetue
sua instalao.



Professor Hildeberto Melo - 2011
Tela principal do NetBeans

Ao ser iniciado o NetBeans apresenta sua interface de desenvolvimento,
mostrado na Figura 1. Na parte superior apresentada barra de menus. No canto
esquerdo temos a guia dos projetos e seus respectivos arquivos (Project Explore). Na
parte central sero mostrados os arquivo em utilizao pelo programador. Na parte
inferior, informaes sobre servidores, propriedades, console, etc. Na parte esquerda as
propriedades dos arquivos do projeto. Conforme mostra Figura 1.


Figura 1 - Tela principal do NetBeans
Professor Hildeberto Melo - 2011
Criando um novo projeto

Para criarmos uma aplicao Swing, simples, basta acessar o menu: arquivo-
>novo projeto, conforme mostra a Figura 2.


Figura 2 - Criando novo projeto parte 1

Aparecer tela de Escolha do tipo de projeto, iremos escolher a categoria
Java e o projeto Aplicativo Java. Aps selecionar as opes ditas anteriormente clique
no boto Prximo. Conforme mostra a Figura 3.

Professor Hildeberto Melo - 2011

Figura 3 - Criando novo projeto parte 2

Aparecer a tela de configurao do Projeto, onde constam as seguintes
informaes do Nome do projeto e Localizao do projeto. Aps colocar as informaes
solicitadas clicar no boto Finalizar. Conforme mostra Figura 4.


Figura 4 - Criando novo projeto parte 3
Professor Hildeberto Melo - 2011


Aparecer na aba de projetos o projeto recm criado, contendo 5 (cinco) pastas:
Pacotes de cdigo-fonte, pacote de testes, Load Generator Scripts, Bibliotecas e
Bibliotecas de testes.
Na pasta de Pacote de cdigo-fonte sero colocados os arquivos. Java que faro
parte do projeto, dentro desta pasta foi criado automaticamente um pacote com o nome
correspondente ao nome do projeto. Conforme mostra Figura 5


Figura 5 - Estrutura de pastas do projeto

Professor Hildeberto Melo - 2011
Definio do cenrio

O sistema de vendas a ser desenvolvido possui as seguintes entidades: clientes, produtos
e as vendas com seus respectivos itens. Tomaremos por base o diagrama abaixo, no qual
representar o nosso sistema.

Figura 6 - Diagrama de Classes de Domnio

Para manipularmos as informaes do sistema de vendas necessrio incluirmos
algumas entidades ao diagrama inicial. Estas entidades tm como objetivo principal
implementar as rotinas necessrias para a manipulao das informaes do sistema.


Figura 7 - Diagrama com as classes referentes manipulao dos dados do sistema
Professor Hildeberto Melo - 2011
Como podemos observar na Figura acima as classes de repositrios tm os seguintes
mtodos:
Inserir utilizado para inserir um determinado objeto no dispositivo de
armazenamento.
remover utilizado para remover um determinado objeto, no qual este objeto
deve estar previamente cadastrado no dispositivo de armazenamento.
atualizar utilizado para atualizar os valores contidos em um objeto
previamente cadastrado no dispositivo de armazenamento.
verifica existncia utilizado para verificar se as informaes de um
determinado objeto esto presentes no conjunto de objetos cadastrados no
dispositivo de armazenamento. Este mtodo ser utilizado para:
o Na incluso: evitar o cadastro de dois objetos com as mesmas
informaes;
o Na excluso: Verificar se um determinado objeto est devidamente
cadastrado, para posteriormente remov-lo.
o Na alterao: Verificar se um determinado objeto est devidamente
cadastrado, para posteriormente alter-lo.
Listar utilizado para retornar todos os objetos que foram cadastrados no
dispositivo de armazenamento. Obs.: as informaes contidas em cada objeto
devero ser exibidas conforme o desenvolvedor da aplicao preferir, ex:
apresentar as informaes em um JComboBox, em uma jTable, etc.
Professor Hildeberto Melo - 2011
Codificando as Classes Bsicas

As classes bsicas so Cliente, Produto, ItemVenda e Venda, estas classes
representam o domnio da aplicao. Cada classe dever ser um arquivo . Java onde
cada arquivo dever possuir todos os atributos e mtodos correspondentes.

Para adicionar uma nova Classe ao projeto, deveremos seguir os seguintes passos: clicar
com boto direito do mouse no pacote chamado projetovendasjavaswing, em
seguida escolher a opo novo e depois a opo Class Java.


Figura 8 - Criando uma classe no NetBeans parte 1
Em seguida aparecer tela para configurao da Classe, neste caso informaremos o
nome da Classe no qual codificaremos. Esta seqncia de passos dever ser seguida
para todas as classes que faro parte do sistema.
Professor Hildeberto Melo - 2011

Figura 9 - Criando uma classe no NetBeans parte 2
Codificando a Classe Cliente

Para adicionarmos a Classe Cliente ao sistema, necessrio seguir os passos descritos
acima, aparecer uma tela de configurao inicial da Classe, nesta tela basta informar o
nome da Classe, que neste caso, dever se chamar Cliente, e clicar no boto
Finalizar.
Professor Hildeberto Melo - 2011

Figura 10 - Configurando a classe Cliente parte 1
Aparecer a estrutura bsica de uma classe em Java, que ter apenas o qualificador de
acesso public, a palavra reservada class que define o tipo de arquivo e nome da
classe Cliente.

Figura 11 - Configurando a classe Cliente parte 2
Codificaremos os atributos da classe Cliente, estes atributos foram definidos no
diagrama de classe, neste caso os atributos nome e cpf, ambos do tipo String.
Professor Hildeberto Melo - 2011

Figura 12 - Configurando a classe Cliente parte 3
Para encapsular automaticamente os atributos da classe Cliente, seguiremos os seguintes
passos: Clicar com o boto direito do mouse em cima de qualquer atributo, depois
escolher a opo refatorar, em seguida encapsular campos, conforme ilustra
figura abaixo.


Figura 13 - Configurando a classe Cliente parte 4
Professor Hildeberto Melo - 2011
Aparecer a tela de configurao dos gets e sets correspondentes ao referidos
atributos da classe. Clicar no boto Selecionar tudo, em seguida clicar no boto
Refatorar

Figura 14 - Configurando a classe Cliente parte 5
Seguindo as etapas citadas acima, foi gerado automaticamente os gets e sets
conforme ilustra a figura abaixo.

Figura 15 - Configurando a classe Cliente parte 6
Codificando a Classe Produto

Professor Hildeberto Melo - 2011
Para adicionarmos a Classe Produto ao sistema, basta seguir os passos descritos para a
classe Cliente. Vale salientar que deveremos efetuar as configuraes referentes ao
Produto.


Figura 16 - Configurando a classe Produto parte 1
Depois de codificar os atributos referentes ao Produto e gerar os gets e sets, a classe
Produto ficar assim.

Figura 17 - Configurando a classe Produto parte 2
Professor Hildeberto Melo - 2011
Codificando a Classe Item de Venda

Para adicionarmos a Classe ItemVenda ao sistema, basta seguir os passos descritos
para a classe Cliente. Vale salientar que deveremos efetuar as configuraes referentes
ao ItemVenda.

Figura 18 - Configurando a classe ItemVenda parte 1
Alm dos atributos quantidade e preo, pode-se observar que a classe ItemVenda tem
um relacionamento de agregao com a classe Produto. No diagrama de classes a
relao est definida da seguinte forma: Um item de venda possui um Produto. Neste
caso o ItemVenda ter um atributo do tipo Produto.
Professor Hildeberto Melo - 2011

Figura 19 - Configurando a classe ItemVenda parte 2
Foi necessrio codificar um construtor para a classe ItemVenda, no construtor ser
instanciado automaticamente o atributo Produto, isto se faz necessrio para evitar
possveis erros no manuseio do ItemVenda.
Codificando a Classe Venda

Para adicionarmos a Classe Venda ao sistema, basta seguir os passos descritos para a
classe Cliente. Vale salientar que deveremos efetuar as configuraes referentes
Venda.

Professor Hildeberto Melo - 2011

Figura 20 - Configurando a classe Venda parte 1
Alm dos atributos nmero e data, pode-se observar que a classe Venda tem um
relacionamento de agregao com a classe ItemVenda e a classe Cliente. No diagrama
de classes a relao est definida da seguinte forma: Uma Venda possui um conjunto de
ItemVenda. Neste caso a Venda ter um atributo do ArrayList<ItemVenda>. E para o
relacionamento de agregao com o Cliente a Venda ter um atributo do tipo Cliente,
seguindo a mesma situao do relacionamento entre o ItemVenda e Produto.

Figura 21 - Configurando a classe Venda parte 2
Professor Hildeberto Melo - 2011
Foi necessrio codificar um construtor para a classe Venda, no construtor ser
instanciado automaticamente o atributo itensDaVenda (do tipo ArrayList<ItemVenda>)
e atributo cliente, isto se faz necessrio para evitar possveis erros no manuseio da
Venda.
A classe Venda possui um mtodo responsvel por calcular o total geral da Venda. A
lgica utilizada foi percorrer todos os itens pertencentes Venda e acumular o clculo
da (quantidade * preo) de cada item.

Figura 22 - Mtodo para calcular o total da venda
Professor Hildeberto Melo - 2011
Codificando as Classes de Repositrios

Sero codificadas trs classes de repositrios, RepositorioCliente, RepositorioProduto e
RepositorioVenda. Cada classe corresponder aos clientes, produtos e vendas com seus
respectivos itens.
Utilizaremos trs ArrayList para armazenar as informaes referentes aos clientes,
produtos e venda. Em cada mtodo ser implementada as validaes bsicas referentes a
cada rotina.
Antes de iniciar a codificao destas classes, vamos revisar algumas coisas sobre o
ArrayList. O ArrayList pertence ao pacote java.util.ArrayList e consiste numa classe
capaz de armazenar uma coleo de objetos. A manipulao dos objetos contidos no
mesmo dinmica e pode ser uma lista de quaisquer objetos, ou uma lista de objetos
especficos. Alguns mtodos:
Add(Object): adiciona um objeto ao ArrayList
Clear(): remove todos os objetos do ArrayList
Get(int): retorna o objeto do index informado
isEmpty(): retorna se o ArrayList est vazio
Remove(int): remove o objeto do index informado
Size(): retorna a quantidade de objetos contidos no ArrayList
Relembrando os Mtodos a serem implementados em cada repositrio:
Inserir utilizado para inserir um determinado objeto no dispositivo de
armazenamento.
remover utilizado para remover um determinado objeto, no qual este objeto
deve estar previamente cadastrado no dispositivo de armazenamento.
atualizar utilizado para atualizar os valores contidos em um objeto
previamente cadastrado no dispositivo de armazenamento.
verifica existncia utilizado para verificar se as informaes de um
determinado objeto esto presentes no conjunto de objetos cadastrados no
dispositivo de armazenamento. Este mtodo ser utilizado para:
o Na incluso: evitar o cadastro de dois objetos com as mesmas
informaes;
o Na excluso: Verificar se um determinado objeto est devidamente
cadastrado, para posteriormente remov-lo.
o Na alterao: Verificar se um determinado objeto est devidamente
cadastrado, para posteriormente alter-lo.
Professor Hildeberto Melo - 2011
Listar utilizado para retornar todos os objetos que foram cadastrados no
dispositivo de armazenamento. Obs.: as informaes contidas em cada objeto
devero ser exibidas conforme o desenvolvedor da aplicao preferir, ex:
apresentar as informaes em um JComboBox, em uma jTable, etc.

Classe RepositorioCliente

A figura abaixo ilustra a classe RepositorioClliente, podemos observar que foi
declarado um atributo do tipo ArrayList<Cliente>, este atributo tem por finalidade
armazenar todos os clientes cadastrado pelo sistema. Tambm foi declarado um atributo
do tipo RepositorioCliente, este atributo tem por finalidade implementar este repositrio
com o padro singleton.
Tambm podemos observar a assinatura dos mtodos definidos no diagrama de classes.

Figura 23 Classe RepositorioCliente
Implementao do Construtor, mtodos obterIntancia e listarTodos


Professor Hildeberto Melo - 2011

Figura 24 - Mtodos listarTodos, obterIntancia e construtor do RepositrioCliente
Implementao do Mtodo verificaExistencia

Este mtodo tem como objetivo pesquisar um objeto pelo seu CPF e retornar o ndice
deste objeto, caso no seja encontrado nenhum objeto no qual corresponda ao critrio de
pesquisa, o mtodo retornar -1.

Figura 25 - Mtodo verificaExistencia Cliente
Implementao do Mtodo Inserir Cliente

Professor Hildeberto Melo - 2011

Figura 26 - Mtodo inserir Cliente
Implementao do Mtodo Remover Cliente


Figura 27 - Mtodo remover Cliente

Implementao do Mtodo Atualizar Cliente

Professor Hildeberto Melo - 2011

Figura 28 - Mtodo atualizar Cliente

Professor Hildeberto Melo - 2011
Classe RepositorioProduto

A figura abaixo ilustra a classe RepositorioProduto, podemos observar que foi
declarado um atributo do tipo ArrayList<Produto>, este atributo tem por finalidade
armazenar todos os produtos cadastrado pelo sistema. Tambm foi declarado um
atributo do tipo RepositorioProduto, este atributo tem por finalidade implementar este
repositrio com o padro singleton.
Tambm podemos observar a assinatura dos mtodos definidos no diagrama de classes.



Figura 29 - Estrutura da classe RepositrioProduto

Implementao do Construtor e dos Mtodos Listar Todos e obterInstancia

Professor Hildeberto Melo - 2011

Figura 30 - Mtodos listarTodos, obterInstancia e construtor do RepositrioProduto
Implementao do Mtodo Inserir Produto


Figura 31 - Mtodo inserir produto
Implementao do Mtodo Remover Produto

Professor Hildeberto Melo - 2011

Figura 32 - Mtodo remover produto
Implementao do Mtodo Atualizar Produto


Figura 33 - Mtodo atualizar produto
Implementao do Mtodo Verifica Existncia

Este mtodo tem como objetivo pesquisar um objeto pelo seu cdigo de barras e
retornar o ndice deste objeto, caso no seja encontrado nenhum objeto no qual
corresponda ao critrio de pesquisa, o mtodo retornar -1.
Professor Hildeberto Melo - 2011



Figura 34 - Mtodo verifica existncia produto
Professor Hildeberto Melo - 2011
Classe RepositorioVenda


A figura abaixo ilustra a classe RepositorioVenda, podemos observar que foi declarado
um atributo do tipo ArrayList<Venda>, este atributo tem por finalidade armazenar todos
os produtos cadastrado pelo sistema. Tambm foi declarado um atributo do tipo
RepositorioVenda, este atributo tem por finalidade implementar este repositrio com o
padro singleton.
Tambm podemos observar a assinatura dos mtodos definidos no diagrama de classes.


Figura 35 - Estrutura da classe RepositrioVenda
Implementao do Construtor e dos Mtodos listarTodos e obterIntancia

Professor Hildeberto Melo - 2011

Figura 36 - Construtor e mtodos listar todos e obterIntancia
Implementao do Mtodo Inserir Venda


Figura 37 - Mtodo inserir venda
Implementao do Mtodo Remover Venda

Professor Hildeberto Melo - 2011

Figura 38 - Mtodo remover venda
Implementao do Mtodo Atualizar Venda


Figura 39 - Mtodo atualizar venda
Implementao Mtodo verificaExistncia
Este mtodo tem como objetivo pesquisar um objeto pelo seu nmero e retornar o
ndice deste objeto, caso no seja encontrado nenhum objeto no qual corresponda ao
critrio de pesquisa, o mtodo retornar -1.

Professor Hildeberto Melo - 2011


Figura 40 - Mtodo verifica existncia venda
Professor Hildeberto Melo - 2011
Trabalhando com componentes Swing

Vamos colocar um formulrio JFrame, para esta tarefa basta clicar com o boto
direito do mouse em cima do pacote meuprimeiroprojeto e escolher as opes novo-
>Formulrio JFrame. Conforme mostra Figura 41.

Figura 41 - Incluindo um JFrame ao projeto - parte 1

Aparecer uma tela para configurao do JFrame, com as informaes do nome
da classe, localizao e pacote. Figura 42.

Professor Hildeberto Melo - 2011

Figura 42 - Incluindo um JFrame ao projeto - parte 2

Aps a configurao inicial do JFrame, aparecer um formulrio (meio da tela)
e a paleta de componentes (lado direito superior da tela), a paleta de componentes
contem os principais componentes Swing, para colocar no formulrio basta clicar no
componente e arrastar para o formulrio. Figura 43.


Professor Hildeberto Melo - 2011

Figura 43 - Incluindo um JFrame ao projeto - parte 3

Configurando a Classe Principal do Projeto

Por padro quando criamos um projeto aplicao Java no NetBeans, ele cria
uma Classe Main.java automaticamente e a coloca como classe principal do sistema.
No projeto que foi criado MeuPrimeiroProjeto, existem duas classes a
Main.java e FormMain.java. Para configurar a Classe principal do projeto
necessrio ir ao menu Arquivo->Projeto Properties. Figura 44.

Professor Hildeberto Melo - 2011

Figura 44 - Configurando a classe principal - parte 1

Aparecer a tela de propriedades do projeto, onde poderemos personalizar nossa
aplicao. Figura 45.


Professor Hildeberto Melo - 2011
Figura 45 - Configurando a classe principal - parte 2

Para escolher a Classe principal do projeto iremos escolher a opo Executar
(lado esquerdo da tela), Ao clicar na opo Executar aparecer a opes de escolha da
Classe principal (centro da tela). Clicar no boto Procurar. Figura 46.


Figura 46 - Configurando a classe principal - parte 3

Aps clicar no boto procurar (Figura 46), aparecero as Classes do projeto que
contem o mtodo public static void main(String args[]){}. Escolher uma das Classes
listadas e clicar no boto Selecionar classe principal. Figura 47.
Professor Hildeberto Melo - 2011

Figura 47 - Configurando a classe principal - parte 4

Manipulando Componentes Swing (bsico)

Antes de comearmos a implementar a parte visual(telas) de nosso projeto necessrio
estudarmos alguns componentes Swing, ento veremos os componentes JTextField,
JComboBox, JButton e JTable.

JTextField
O componente JTextField serve para receber entradas de texto em um
formulrio.
O mtodo getText() serve para obter o contedo informado no JTextField, ex:
JOptionPane.showMessageDialog(null, jTextField1.getText()); //aparecer uma
mensagem com o contedo do JTextField.
O mtodo setText(String texto) serve para colocar um valor String no
JTextField, ex: jTextField1.setText(Eu amo o professor Melo);//escrever a String
passada no mtodo para o componente JTextField.
Professor Hildeberto Melo - 2011
Foi colocado no formulrio dois JTextField e dois JButtons, onde o clique do
primeiro boto exibir uma mensagem com o contedo do JTextField do nome, e o
segundo boto colocar o texto do JTextField do nome 2 para o JTextField do nome.
Figura 48.

Figura 48 - Manipulando JTextField - parte 1

Colocar no evento do Clique dos botes os cdigos que aparecem na Figura 49.
Para isso basta dar dois cliques no boto e colocar o cdigo-fonte correspondente.

Figura 49 - Manipulando JTextField - parte 2



JComboBox

Vamos adicionar um JComboBox e trs botes ao formulrio. O primeiro boto
servir para mostrar o ndice do item escolhido do JComboBox, o segundo boto
servir para mostrar o contedo do item escolhido no JComboBox e o terceiro boto
servir para carregar dinamicamente informaes no JComboBox. Figura 50.

Professor Hildeberto Melo - 2011

Figura 50 - Manipulando JComboBox - parte 1

O mtodo getSelectedIndex() retorna o ndice (valor inteiro) do item escolhido
do JComboBox, O mtodo getSelecedItem() retorna um Objeto que representa o item
do JComboBox escolhido. A Figura 51 mostra o cdigo-fonte correspondente ao clique
de cada boto para manipular o JComboBox.

Figura 51 - Manipulando JComboBox - parte 2

A Figura 52 ilustra a execuo dos cliques dos JButtons definidos
anteriormente. Na Figura 52 rea 1 temos a tela com a configurao padro do
JComboBox, com apenas quatro itens. A Figura 52 rea 2 temos a execuo dos
cliques dos botes e suas aes correspondentes, e na Figura 52 rea 3 temos o
Professor Hildeberto Melo - 2011
JComboBox com os itens carregados no clique do JButton Carregar
dinamincamente.


Figura 52 - Manipulando JComboBox - parte 3


JTable

Vamos adicionar um JTable e um JButton ao formulrio. Figura 53.

1
2
3
Professor Hildeberto Melo - 2011

Figura 53 - Manipulando JTable - parte 1


A Figura 54 mostra o cdigo-fonte para carregar informaes dinamicamente no
JTable, onde sero colocadas duas colunas: uma para o nome e outra para o sobre
nome, e sero colocados 10 linhas na JTable.

Figura 54 - Manipulando JTable - parte 2

Professor Hildeberto Melo - 2011
A Figura 55 ilustra a execuo do clique do JButton definido anteriormente.
Onde na tela da esquerda aparece o JTable com a configurao padro e na tela da
direita aparece o JTable preenchido com duas colunas e dez linhas.


Figura 55 - Manipulando JTable - parte 3
Professor Hildeberto Melo - 2011
Codificando a Parte Visual do Sistema de Vendas

Nosso sistema ter as seguintes telas:
Tela principal, a partir desta tela sero chamadas s telas de:
o Tela de consulta de cliente, a partir desta tela sero chamadas s telas de:
Tela de cadastro de cliente
Tela de alterao de cliente
o Tela de consulta de produto, a partir desta tela sero chamadas s telas
de:
Tela de cadastro de produto
Tela de alterao de produto
o Tela de consulta de venda, a partir desta tela sero chamadas s telas de:
Tela de cadastro de venda
Tela de alterao de venda

Tela Principal do Sistema
Na tela principal teremos trs botes, o primeiro para chamar a tela de consulta de
clientes, o segundo para chamar a tela de consulta de produtos e o terceiro boto para
chamar a tela de consulta de vendas.


Figura 41 - Tela principal do Sistema de Vendas
Professor Hildeberto Melo - 2011
Para as telas de consultas, cadastro e alterao, configurar a propriedade
defaultCloseOperation de todas as telas para DISPOSE, com esta configurao quando
for clicado o cone de fechar (x) destas telas, no ir fechar o formulrio principal.

Telas de Consultas
Tela de Consulta de Clientes

A tela de consulta de clientes possui uma tabela onde sero exibidos os clientes
cadastrados. Tambm possuir quatro botes:
Listar no evento do seu click todos os clientes cadastrados no sistema;
Novo no evento do seu click ser aberta uma tela para ser cadastrado um novo
cliente;
Alterar no evento do seu click ser aberta uma tela para ser alterada as
informaes de um cliente previamente cadastrado;
Remover no evento do seu click ser removido um cliente previamente
cadastrado.

Figura 42 - Tela de Consulta de Clientes
Tela de Consulta de Produtos

Professor Hildeberto Melo - 2011
Seguindo o padro da tela de consulta de clientes, a tela de consulta de produtos possui
uma tabela onde sero exibidos os produtos cadastrados. Tambm possuir quatro
botes:
Listar no evento do seu click todos os produtos cadastrados no sistema;
Novo no evento do seu click ser aberta uma tela para ser cadastrado um novo
produto;
Alterar no evento do seu click ser aberta uma tela para ser alterada as
informaes de um produto previamente cadastrado;
Remover no evento do seu click ser removido um produto previamente
cadastrado.

Figura 43 - Tela de Consulta de Produtos
Tela de Consulta de Vendas

Seguindo o padro da tela de consulta de clientes e produtos, a tela de consulta de
vendas possui duas tabelas, na primeira tabela sero exibidas as vendas cadastradas, e
na segunda tabela os itens correspondentes venda selecionada da primeira tabela.
Tambm possuir quatro botes:
Listar no evento do seu click todos os produtos cadastrados no sistema;
Novo no evento do seu click ser aberta uma tela para ser cadastrado um novo
produto;
Professor Hildeberto Melo - 2011
Remover no evento do seu click ser removido um produto previamente
cadastrado.


Figura 44 - Tela de Consulta de Vendas
Telas de Cadastro e Alterao

Tela de Cadastro e Alterao de Cliente

A tela de cadastro de cliente possuir dois campos de texto, que serviro para informar o
cpf e nome do cliente. E dois botes um para salvar as informaes do cliente e outro
para cancelar o cadastro do cliente.
Professor Hildeberto Melo - 2011

Figura 45 - Tela de Cadastro de Cliente
A tela de alterao de cliente possuir dois campos de texto, que serviro para atualizar
o cpf e nome do cliente. E dois botes um para salvar as informaes do cliente e outro
para cancelar a operao de alterao do cliente. Quando a tela for aberta, aparecer
automaticamente as informaes do cliente a ser alterado.

Figura 46 - Tela de Alterao de Cliente

Tela de Cadastro e Alterao de Produto

A tela de cadastro de produto possuir trs campos de texto, que serviro para informar
o cdigo de barras, descrio e preo do produto. E dois botes um para salvar as
informaes do produto e outro para cancelar o cadastro do produto.
Professor Hildeberto Melo - 2011

Figura 47 - Tela de Cadastro de Produto
A tela de alterao de produto possuir trs campos de texto, que serviro para atualizar
o cdigo de barras, descrio e preo do produto. E dois botes um para salvar as
informaes do produto e outro para cancelar a operao de alterao do produto.
Quando a tela for aberta, aparecer automaticamente as informaes do produto a ser
alterado.

Figura 48 - Tela de Alterao de Produto
Tela de Cadastro de Venda

A tela de cadastro de venda est dividida em duas partes. Na primeira parte ela possui
dois campos de texto, que serviro para informar o nmero e a data da venda. E um
combobox que mostrar todos os clientes cadastrados e servir para escolher o cliente
da venda.
Na segunda parte foi colocado uma tabela que mostrar os itens da venda, dois campos
texto, um para a quantidade e outro para o preo, mais um combobox que listar todos
Professor Hildeberto Melo - 2011
os produtos cadastrados. Teremos tambm dois botes uma para adicionar um item na
venda e o outro para remover um item da venda.
E dois botes um para salvar as informaes do produto e outro para cancelar o cadastro
do produto.


Figura 49 - Tela de Cadastro de Venda


Professor Hildeberto Melo - 2011
Cdigo fonte das telas

Mtodos auxiliares
Centralizar frame
Este mtodo tem por finalidade centralizar a tela no desktop

Figura 50 - Mtodo centralizar frame
Tela principal
A figura abaixo apresenta o cdigo fonte do clique dos trs botes, onde cada boto
chamar a tela de consulta correspondente, por exemplo, o boto clientes chamar a tela
de consulta de clientes.

Figura 51 - Cdigo Fonte tela principal

Professor Hildeberto Melo - 2011
Telas do Cliente
Consulta de Clientes
A figura abaixo apresenta o cdigo fonte do clique dos quatro botes, no caso dos
botes de novo e alterar chamar a tela correspondente, tambm podemos observar os
comandos para os botes listar e remover.

Figura 52 - Cdigo fonte tela consulta de clientes

Cadastro de Clientes
Cdigo dos botes Cancelar e Salvar

Professor Hildeberto Melo - 2011
Figura 53 - Cdigo fonte tela novo cliente
Alterao de Cliente
Para realizarmos a alterao de um cliente necessrio receber as informaes do
cliente a ser alterado. Para esta tarefa, redefinimos o construtor do formulrio para que
recebesse um atributo do tipo Cliente.

Figura 54 - Cdigo fonte tela alterar cliente
Podemos observar que no construtor do formulrio recebemos o cliente passado como
parmetro e em seguida colocamos as informaes do cliente nos jtextfield
correspondentes. Tambm podemos observar os comandos correspondentes aos cliques
dos botes cancela e salvar.

Telas do Produto
Consulta de produtos
A figura abaixo apresenta o cdigo fonte do clique dos quatro botes, no caso dos
botes de novo e alterar chamar a tela correspondente, tambm podemos observar os
comandos para os botes listar e remover.
Professor Hildeberto Melo - 2011

Figura 55 - Cdigo fonte tela consulta de produtos

Cadastro de produtos
Cdigo dos botes Cancelar e Salvar

Figura 56 - Cdigo fonte tela novo produto
Alterao de produto
Para realizarmos a alterao de um produto necessrio receber as informaes do
produto a ser alterado. Para esta tarefa, redefinimos o construtor do formulrio para que
recebesse um atributo do tipo produto.
Professor Hildeberto Melo - 2011

Figura 57 - Cdigo fonte tela alterar produto
Podemos observar que no construtor do formulrio recebemos o produto passado como
parmetro e em seguida colocamos as informaes do produto nos jtextfield
correspondentes. Tambm podemos observar os comandos correspondentes aos cliques
dos botes cancela e salvar.

Professor Hildeberto Melo - 2011
Telas do Venda
Consulta de vendas
A figura abaixo apresenta o cdigo fonte do clique dos trs botes, no caso dos botes
de novo chamar a tela correspondente. Tambm podemos observar os comandos para
os botes listar e remover.

Figura 58 - Cdigo fonte tela consulta de vendas 1
A figura abaixo apresenta o cdigo fonte correspondente apresentao dos itens de um
determinada venda. Neste caso quando selecionarmos a venda com o clique do mouse
ser executado este cdigo.

Figura 59 - Cdigo fonte tela consulta de vendas 2

Cadastro de Venda
A tela de cadastro de venda possui trs atributos, sendo dois deles utilizados para listar
os clientes e produtos cadastrados pelo sistema. E um atributo do tipo Venda, ser neste
atributo que colocaremos as informaes manipuladas nesta tela.
Professor Hildeberto Melo - 2011

Figura 60 - Cdigo fonte tela cadastro de vendas 1
O mtodo carregarCombos() servir para listar os produtos e clientes cadastrados em
seus respectivos combobox. O mtodo listarItens() serve para apresentar os itens desta
venda na jTable dos itens desta venda.

Figura 61 - Cdigo fonte tela cadastro de vendas 2
A figura abaixo apresenta as aes para a escolha do produto no combobox dos
produtos, e as aes para os botes remover item e novo item.

Figura 62 - Cdigo fonte tela cadastro de vendas 3
A figura abaixo apresenta o cdigo fonte para as aes para os botes de salvar e
cancelar.
Professor Hildeberto Melo - 2011

Figura 63 - Cdigo fonte tela cadastro de vendas 4

Trabalhando com Banco de Dados

Anteriormente vimos como armazenar as informaes do sistema em um ArrayList. A
desvantagem do ArrayList o inconveniente de toda vez que fecharmos e abrirmos a
aplicao novamente, teremos que refazer todos os cadastros.
Utilizando um banco de dados teremos a possibilidade de trabalhar com informaes
persistentes, em outras palavras, quando fecharmos a aplicao as informaes estaro
salvas e podero ser reutilizadas pela aplicao novamente.
Vamos programar com acesso a bando de dados da seguinte forma, a conexo entre o
bando de dados e o sistema ser feita atravs do Jdbc do java.
Professor Hildeberto Melo - 2011
Estrutura do Banco De Dados
Antes de comear a configurar uma conexo, ser necessrio criar o banco de dados
para armazenar as informaes do sistema de vendas. Utilizaremos a seguinte estrutura:
Tabela Estrutura
Cliente create table cliente(
cpf varchar(20) primary key,
Nome varchar(100)
);
Produto create table produto(
codigoBarras varchar(20) primary key,
descricao varchar(100),
preco numeric(18,2)
);
Venda create table venda(
numero int primary key,
data varchar(10),
cpf_cliente varchar(20) references cliente(cpf)
);
Itens da venda create table itensVenda(
preco numeric(18,2),
quantidade numeric(18,2),
codigoBarras_produto varchar(20) references produto(codigoBarras),
numero_venda int references venda(numero)
);


Professor Hildeberto Melo - 2011
Configurando uma Conexo
Veremos como criar a conexo com o banco de dados.
Windows 7:
o V na pasta c:\windows\sysWon64
o Execute o aplicativo odbcad32.exe
Windows Vista e nas verses anteriores:
o Iniciar do Windows
o Configuraes
o Painel de Controle
o Ferramentas Administrativas
o Fontes de Dados ODBC
Seguindo os passos descritos acima aparecer esta tela, Para adicionar uma nova fonte
clique no boto Adcionar

Figura 64 - Configurando a conexo com o banco de dados - 1
Aparecer esta tela com os drivers disponveis para conexo, vamos escolher o
Driver do Microsoft Access (*.mdb) e clicar em concluir.
Professor Hildeberto Melo - 2011

Figura 65 - Configurando a conexo com o banco de dados - 2
Informar o nome da fonte de dados, ex: dbSistemaVendas.

Figura 66 - Configurando a conexo com o banco de dados - 3
Selecionar o Banco de Dados, clicando no boto selecionar.
Professor Hildeberto Melo - 2011

Figura 67 - Configurando a conexo com o banco de dados - 4

Depois de configurado, basta ir clicando nos botes OK para confirmar as
operaes.

Criando as Classes para Trabalhar com a Conexo Criada

No basta apenas criar uma conexo com o banco de dados, teremos que criar os
arquivos necessrios para podermos trabalhar com esta conexo criada.
Classe de Conexo
Nesta classe temos dois mtodos, o primeiro tem a finalidade de abrir uma conexo com
o bando de dados, e a segunda em fechar esta conexo aberta.
Quando trabalhamos com banco de dados, o ideal abrirmos uma conexo, executar o
que se deseja e depois fecharmos esta conexo. Ex.: Abrir a conexo com o banco de
dados, em seguida cadastrar um novo cliente, depois fechar a conexo.
Professor Hildeberto Melo - 2011

Figura 68 - Classe de Conexo com o banco de dados

Classe de Repositrio

A classe de repositrio com os comandos para manipulao do banco de dados, seguir
a mesma lgica da classe de repositrio com ArrayList. Lembrando que para cada tipo
de classe(ArrayList e Banco de dados) teremos que utilizar os respectivos comandos
para seu devido manuseio.
Para cada mtodo implementado foi seguida a seguinte lgica, primeiramente
realizada as validao necessrias para garantir a integridade e consistncia das
informaes no banco de dados, depois aberta a conexo com o banco de dados, em
seguida realizada a devida operao com o banco de dados, e por ltimo fechada
conexo com o banco de dados.
Professor Hildeberto Melo - 2011
Estrutura da Classe RepositorioClienteOdbc
A figura abaixo ilustra a classe repositorioClienteOdbc, nela esto os mtodos referentes
remoo, insero, atualizao e seleo dos clientes, bem como o construtor e o
mtodo obterIntancia. Esta classe tambm segue o padro singleton.


Figura 69 - Estrutura da classe RepositorioClienteOdbc

Professor Hildeberto Melo - 2011
Mtodo remover
A figura abaixo ilustra a implementao do mtodo remover, este mtodo tem por
finalidade excluir um determinado cliente.

Figura 70 - Mtodo remover do RepositorioClienteOdbc


Professor Hildeberto Melo - 2011
Mtodo inserir
A figura abaixo ilustra a implementao do mtodo inserir, este mtodo tem por
finalidade cadastrar um novo cliente.

Figura 71 - Mtodo inserir do RepositorioClienteOdbc
Professor Hildeberto Melo - 2011
Mtodo atualizar
A figura abaixo ilustra a implementao do mtodo atualizar, este mtodo tem por
finalidade cadastrar um novo cliente.

Figura 72 - Mtodo atualizar do RepositorioClienteOdbc

Professor Hildeberto Melo - 2011
Mtodo listar todos
A figura abaixo ilustra a implementao do mtodo listarTodos, este mtodo tem por
finalidade retornar todos os clientes cadastrados.

Figura 73 - Mtodo listarTodos do RepositorioClienteOdbc


Professor Hildeberto Melo - 2011
Modificando as Telas para Trabalhar Com Banco de Dados
As mudanas so poucas e muito simples de fazer, basta chamar o mtodo
correspondente operao desejada da Classe RepositorioClienteOdbc. A figura
abaixo ilustra a mudana necessria, foi comentada a linha de comando que utilizava a
Classe RepositorioCliente e foi adicionada uma linha e comando que utiliza a Classe
RepositorioClienteOdbc.

Figura 74 - Mudana na GUI para utilizar banco de dados

Consideraes Finais

Foram utilizadas apenas as rotinas bsicas e necessrias para a confeco deste sistema,
bem como as validaes utilizadas para o manuseio do sistema. Vale salientar que cada
sistema de venda possui suas regras de negcio especficas, portanto para adaptar este
sistemas as necessidades de uma empresa, ser necessrio adaptar as validaes para
que o mesmo mantenha a integridade e consistncia das informaes.
Foi codificado apenas a classe correspondente manipulao das informaes do
cliente com banco de dados, para as demais classes (produtos e venda) basta seguir o
exemplo da Classe RepositorioClienteOdbc.

Você também pode gostar