Você está na página 1de 75

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.

3 1

Figura 52 - Manipulando JComboBox - parte 3

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

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 Cliente Estrutura 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.

Professor Hildeberto Melo - 2011