Vous êtes sur la page 1sur 154

Grupo iPED - Curso de Java

iPED Instituto Politcnico de Ensino Distncia.


Todos os Direitos Reservados.
iPED marca registrada pela Empresa Brasileira de Comunicao LTDA.

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


Sumrio

Introduo ao Java ...............................................................................................Pg. 7


Classe em Java ....................................................................................................Pg. 9
Herana em Java .................................................................................................Pg. 11
Exemplo de Polimorfismo .....................................................................................Pg. 13
Arquitetura de aplicativos Java.............................................................................Pg. 16
Instalando a J2SE ................................................................................................Pg. 18
Java como Linguagem de Programao ..............................................................Pg. 20
Java Development Kit JDK ................................................................................Pg. 22
Plataforma J2EE...................................................................................................Pg. 25
Conceitos de memria..........................................................................................Pg. 35
Estrutura de Repetio WHILE.............................................................................Pg. 40
Visualizando uma classe em Java........................................................................Pg. 42
Componentes do Swing .......................................................................................Pg. 65
JCheckBox e JRadioButton ..................................................................................Pg. 78
SQL e Java...........................................................................................................Pg. 111
Configurando a fonte de dados no Windows ........................................................Pg. 121
Interagindo com banco de dados .........................................................................Pg. 122

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


Institucional
O iPED, Instituto Politcnico de Ensino a Distncia, um centro de educao on-line que
oferece informao, conhecimento e treinamento para profissionais, educadores e
qualquer um que queira evoluir profissionalmente e culturalmente.
Nosso objetivo torn-lo uma base forte de conhecimento e expandir cada vez mais o
seu nvel intelectual e cultural.
Oferecemos uma quantidade enorme de informao, alm de diversos cursos on-line,
onde voc se mantm atualizado em qualquer lugar e a qualquer hora.
Educao Distncia
Aulas online ou a prtica de aprendizagem distncia, atravs de ambientes virtuais e
redes de computadores interligadas para fins educacionais e culturais, nada mais do
que o meio mais prtico e inteligente de proliferao de conhecimento.
Atravs de ambientes virtuais e sistemas inteligentes, possvel adquirir conhecimento de
forma total ou gradativa.
Esse nosso conceito de educao, em tempo real, total ou gradativo, quando quiser e
onde quiser e acima de tudo, da forma que quiser!
Nossa Misso
O Grupo iPED foi lanado com o intuito de aprimorar e disseminar o conceito de ensino a
distncia.
Com a implantao do ensino a distncia, pesquisas recentes registram que as pessoas
alavancam os resultados dos mdulos de treinamento em at 70%, eliminando as
distncias geogrficas e proporcionando a melhoria da gesto do conhecimento e dos
recursos humanos por competncias.
Pensando nisso o iPED presta esse servio a todos, para que a excluso digital seja cada
vez menor e com o passar do tempo ela desaparea completamente.
Esse nosso objetivo, essa nossa misso, e esteja certo que vamos conseguir!
Fabio Neves de Sousa
Diretor Geral - Grupo iPED

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


Certificao
O conceito de reconhecimento virtual concedido atravs de avaliao feita pelo sistema
inteligente, que do inicio at o fim do curso est avaliando cada aluno em suas atitudes
individuais e em comparao as atitudes do coletivo. Ao termino do contedo avaliado o
aluno submetido a uma avaliao final que nada mais serve do que comprovar a
avaliao do desempenho dele ao longo de toda a trajetria do curso.

Nosso sistema garante 100% de segurana.


Empresas podero confirmar a autenticidade do certificado, pois temos o que
existe de melhor em tecnologia disponvel no mercado.
Confira o grande diferencial de nosso certificado:
Certificado Especial
- Tramas em linhas personalizadas
- Tarja de Segurana
- Tinta Luminescente
- Selo de Segurana
- Numerao Intransfervel

Detalhes sobre o selo

Ao trmino do curso solicite o seu!

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


Bem Vindo ao Curso de Java.
Vivendo uma Revoluo na Indstria de Software

Complexidade
Confiabilidade
Capacidade de Projeto
Flexibilidade
Velocidade de desenvolvimento
Facilidade de manuteno

Orientao a Objetos

Evoluo tecnolgica
Distribuio de processamento
Tecnologia cliente- servidor
Internet
Java/ Applet
Aplicaes Web
Unificao das metodologias OO
Linguagens de Programao - Simula, Smalltalk, C, C++
Inteligncia Artificial
Banco de Dados - pesquisa em modelos de dados semnticos

O termo orientao a objetos significa organizar o mundo real como uma coleo
de objetos. Dos objetos nos interessa a sua estrutura de dados e um conjunto de
operaes que manipulam estes dados. Os objetos, a sua estrutura de dados e o
conjunto de operaes so selecionados de acordo com objetivos bem estabelecidos.

Aumenta(raio)
Raio
X
Y

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

Move(x,y)

mostra()

CalculaArea()
x,y: coordenadas do centro
do circulo
um circulo-objeto
Objeto - Estado e Comportamento

A estrutura de dados armazena o estado de um objeto (valores dos atributos)

As operaes definem o comportamento do objeto, que a forma como um objeto age e


reage em termos de mudanas de estado e respostas s operaes que sabe executar.
Objetos interagem e se comunicam atravs de mensagens, as mensagens
identificam os mtodos a serem executado no objeto receptor.
Mensagens e Mtodos

Mensagens
Objetos interagem e comunicam-se atravs de
mensagens
Mtodos
As mensagens identificam os mtodos a serem
executados no objeto receptor.
Para invocar um mtodo de um objeto, deve- se enviar uma mensagem para este
objeto. Para enviar uma mensagem deve- se:
identificar o objeto que receber a mensagem
identificar o mtodo que o objeto deve executar
passar os argumentos requeridos pelo mtodo
circulo.aumenta(r)
8

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


A linguagem Java permite especificar quatro nveis de acesso para um mtodo. Esses
nveis so os seguintes:

public qualquer objeto pode chamar este mtodo

protected o acesso permitido para qualquer instncia da classe, qualquer


descendentes e qualquer outra classe nesse pacote

private o acesso permitido apenas pelas instncias da classe

default se nenhum especificador de acesso for usado, qualquer objeto no pacote


poder acessar o mtodo.
Encapsulamento
Encapsulamento definido como uma tcnica para minimizar interdependncias entre
mdulos atravs da definio de interfaces externas. fenmeno da caixa preta.
Todo o acesso aos dados do objeto feito atravs da chamada a uma operao da sua
interface. Mudanas na implementao de um objeto, que preservem a sua interface
externa, no afetam o resto do sistema. A interface de um objeto declara todas as
operaes permitidas.

Abstrao
Focalizar o essencial, ignorar
propriedades acidentais.
A abstrao deve ser sempre feita
com algum objetivo, porque este
determina o que e o que no
importante.

Classes
Uma classe descreve um conjunto de objetos com:
propriedades semelhantes
comportamentos semelhantes
relacionamentos comuns com outros objetos
Uma classe uma fabrica de objetos
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


Classe Circulo
Atributos Mtodos
Raio

Move(x,y)

Mostra()

Aumenta(r)

Definio de classe em Java


public class Circulo {
public float raio, x, y; // atributos da classe
public Circulo (float pr, float px, float py)
{raio = pr; x = px; y = py; }
public void move ( float dx, float dy)
{x+ = dx; y+ = dy; }
public void mostra ()
{System. out. println((+ x+,+ y+,+ raio+));}
}

Instanciando objetos em Java

class Principal {
public static void main (String args []){
Circulo umcirc;
umcirc = new Circulo (12,0,0); // instanciao de Circulo
umcirc. mostra();
umcirc. move( 2,3);
umcirc. mostra();
}
}

Herana
10

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

Uma classe derivada herda a estrutura de dados e mtodos de sua classe base, mas
pode seletivamente:

adicionar novos mtodos


estender a estrutura de dados
redefinir a implementao de mtodos j existentes

Uma classe base proporciona a funcionalidade que comum a todas as suas classes
derivadas, enquanto que uma classe derivada proporciona a funcionalidade adicional que
especializa seu comportamento.
Circulo
CirculoColorido
Raio
Cor
X
Mostra()
Y
Mudacor(c)
Mostra()

Herana - Exemplo
A classe CirculoColorido herda de Circulo os atributos raio, x e y, define um novo atributo
cor, redefine o mtodo mostra() e implementa o mtodo mudaCor( c).
Herana em Java
public class Circulo {.....}
public class CirculoColorido extends Circulo {
public string cor;
public void mostra() {.....}
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

11

Grupo iPED - Curso de Java


public void mudaCor( novacor) { cor = novacor; }
}
Resumindo...

Tudo um objeto
A computao executada por objetos que se comunicam
Todo objeto uma instncia de uma classe
A classe o repositrio do comportamento associado com um objeto
Classes so organizadas em uma estrutura de rvore com uma nica raiz

Benefcios do uso de Herana

Reutilizao de Software
Maior confiabilidade
Compartilhamento de cdigo
Consistncia de interface
Componentes de software

Mais Exemplos de Herana

Polimorfismo
12

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

Uma operao que pode


assumir mltiplas
formas, de acordo com a
implementao.

Redefinio da operao de
desenhar;
Mesmo nome (desenhar) para 3
funes.
For x in X do x desenhar();

Java e a sua histria

Muitas pessoas acreditam que a prxima rea importante em que os microprocessadores


tero um impacto profundo sero os dispositivos eletrnicos inteligentes destinados ao
consumidor final. Reconhecendo isso, a Sun financiou uma pesquisa corporativa interna
em 1991. O projeto resultou no desenvolvimento de uma linguagem baseada em C e C++
que seu criador, James Gosling, chamou de Oak (carvalho) em homenagem a uma rvore
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

13

Grupo iPED - Curso de Java


que podia ser vista de sua janela do seu escritrio. Mais tarde foi sugerido o nome Java,
foi sugerido e pegou. O projeto passou por dificuldades, pois na poca os dispositivos
eletrnicos no estavam to desenvolvidos.
Quando a Internet explodiu em 1993 as pessoas da Sun perceberam o imediato potencial
de utilizar Java para criar pginas da Web com o chamado contedo dinmico. Isso deu
nova vida ao projeto.
Em maio de 1995, a Sun anunciou Java formalmente em uma conferncia importante.
Java gerou interesse imediato na comunidade comercial por causa do fenomenal
interesse pela WWW.
Java agora utilizada para criar pginas da Web com contedo interativo e dinmico,
para desenvolver aplicativos corporativos de larga escala, para aprimorar a funcionalidade
de servidores da WWW, fornecer aplicativos para dispositivos destinados ao consumidor
final (como telefones celulares, pagers, PDAs).

Java uma Linguagem de Programao e uma Plataforma de Desenvolvimento de


Aplicaes

Sistema de Arquitetura

Um aplicativo de software bem projetado dividido em partes lgicas separadas,


chamadas camadas. Cada camada tem uma responsabilidade diferente na arquitetura
geral. Essas camadas so simplesmente abstraes e no correspondem distribuio
fsica.
Camadas tpicas em um software de sistema:

Camada de apresentao: Nessa camada esto as partes que gerenciam a


interface e a interao de usurio.

Camada de lgica comercial: Essa camada contm componentes que gerenciam


a lgica de programao do aplicativo.

Camada de dados: Essa camada usada pela camada comercial lgica para
manter dados permanentemente. Normalmente, essa camada consiste em um ou mais
banco de dados, onde os dados so armazenados.

14

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


Plataforma Java

A plataforma Java contempla trs claras divises:

Java 2 Standard Edition (J2SE) Visa computao desktop. Concentra o


ncleo de funcionalidade bsica do Java, com esta edio possvel desenvolver
aplicativos locais para rodar no desktop, compilado ou interpretado.

Java 2 Enterprise Edition (J2EE) Projetado para o ambiente corporativo. Possui


mdulos do J2SE e adiciona diversas APIs para a computao do lado servidor.

Java 2 Micro Edition (J2ME) Destinado a dispositivos limitados, como celulares,


pagers, PDAs, dispositivos eletrnicos moveis.

1Java esta em todos os lugares:

Projeto do instituto do corao para integrar dispositivos moveis a servidores com


informaes sobre os pacientes

Projeto da Nasa que esta colando Java nos pequenos robs enviados para marte.

Todos os grandes banco de dados DB2, Oracle, e Sybase possuem suporte para
acesso direto aos bancos de dados usando a tecnologia Java.

Diversos aparelhos celulares possuem suporte a Java. No s celulares, mas


televisores e terminais de ponto-de-venda.

A droga Raia usava sistemas em Cobol em um servidor RISC/UNIX que era


acessado por emuladores de terminais nos PDVs das lojas que rodava em ambiente
DOS. Migrou sua aplicao para ambiente Java, usando aplicaes grficas.

A Motorola lanou uma serie comemorativa do centenrio da Harley-Davidson de


celulares, baseada no modelo v60i com o suporte a J2ME que, claro, no podia faltar.

Um dos pases mais avanados do mundo em tecnologia celular, a Coria do sul,


adotou oficialmente como padro tecnologia WIPI (Wireless Internet Platform for
Interoperability) como plataforma wireless para acesso a internet. Desenvolvido por uma
equipe coreana. A definio foi parte de um acordo entre a Sun e o consorcio Korean
Wireless Internet Standardization. O mais interessante; o acordo inclui a padronizao de
J2ME como especificao Java Oficial.

Java na eleio. Se voc acompanhou de perto as ltimas eleies, pode j ter


utilizado mesmo sem saber o Java, pois o aplicativo Divnet2002 escrito nesta
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

15

Grupo iPED - Curso de Java


linguagem. O Divnet2002 foi criado pelo TSE para a divulgao dos resultados oficiais da
apurao.

O padro GSM de telefonia celular usada pela TIM usa um pequeno carto com o
nome de SIM card. Apesar de seu tamanho diminuto sua versatilidade no tem fim.
possvel configurar o menu do aparelho e incluir pequenos programas baseados em Java
para serem acoplados ao telefone.

O telefone Nokia 3650 possui capacidade para executar programas Java para
gerenciamento de contatos, compromissos e calculadora e bloco de notas.

O Gartner, consultoria especializada em apontar tendncias em tecnologia da


informao, aposta que em dois anos o mundo do desenvolvimento estar dividido - com
45% do mercado cada - entre a cartilha Java e a bblia de Bill Gates.

A principal diferena entre Java e .NET que o J2EE controlado pela indstria e
no por um fornecedor, como o .NET. Eles trabalham apenas no mundo Windows,
enquanto o J2EE facilita a integrao e mantm a integridade do que a companhia possui.
Alem disso, Java completa o modelo web de aplicaes e abre o leque para uso em
outros dispositivos.

Mais de 50% dos desenvolvedores norte-americanos j utilizam a tecnologia.

A procura por cursos Java cresceu 674% no Brasil

A tecnologia Java est em 100% das empresas Fortune 500.

78% dos executivos vem Java como a melhor plataforma para web services.

Java est instalado e rodando em quase 500 milhes de computadores desktop

Mais de 300 milhes de smart cards seguros baseados em Java j foram


distribudos.

Quase 74% de desenvolvedores profissionais usam Java como sua principal


linguagem de desenvolvimento, ultrapassando os 51% que usam Viisual Basic.

Arquitetura de aplicativos Java

16

Aplicativos Locais: Programas para desktops interpretados pela JVM (Maquina


Virtual Java) que rodam diretamente no desktop.

Applets: pequenos programas poderosos, com eles pode-se criar animaes,


comunicar-se com o servidor, escrever um simples editor de textos, exibir
manchetes de noticias. So comparados aos componentes ActiveX da Microsoft.

Servlet: classe Java que pode ser automaticamente carregada em e executada por
um servidor especial. Esse servidor web cliente de servlet chamado de um
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


contentor servlet. Servlets interagem com clientes por meio de um modelo
solicitao-resposta baseado em http.

JavaServerPages (JSP): Tecnologia Java para desenvolver aplicativos WEB. JSP


uma extenso da tecnologia de servlet criada para suportar autoria de paginas
HTML.. JSP resolve desvantagens da tecnologia servlet, permitindo ao
programador, interseccionar cdigo com contedo esttico.

EJB Enterprise JavaBean: um componente do lado servidor, que encapsula a


lgica comercial. So mais complexos e muito mais difceis de montar e
administrar. Depende de outras tecnologias Java para funcionar. Usa o Java
Remote Method Invocation (RMI) como o protocolo de comunicao entre dois
EJB.

A tecnologia Servlet
A histria da programao em Java do lado servidor comeou com servlet. A sun
introduziu os servlets em 1996 como pequenos aplicativos baseados em Java, para
acrescentar contedo dinmico aos aplicativos web.
A tecnologia Servlet base do desenvolvimento de aplicativo web usando a linguagem
de programao Java. Ela uma das tecnologias Java mais importantes, e a tecnologia
subjacente para uma outra tecnologia Java popular para desenvolvimento de aplicativo:
JavaServer Pages (JSP).
Servlets interagem com clientes por meio de um modelo solicitao-resposta
baseado em HTTP. Porque a tecnologia servlet trabalha sobre HTTP, um contentor
servlet precisa suportar HTTP como o protocolo para solicitaes de cliente e respostas
de servidor. Entretanto, um contentor servlet pode suportar protocolos semelhantes, tal
como HTTPS (HTTP sobre SSL) para transaes seguras.
Em um aplicativo JSP, o contentor servlet substitudo por um contentor JSP.
Ambos os contentores, servlet e JSP, com freqncia so referenciados como contentor
web.

A tecnologia JSP
JavaServer Pages (JSP) uma outra tecnologia Java para desenvolver
aplicativos web. JSP foi lanada quando a tecnologia de servlet tinha atingindo
popularidade. JSP no se destina a substituir servlet. Na verdade, JSP uma extenso
da tecnologia de servlet, e prtica comum usar ambas, servlet e pginas JSP nos
mesmos aplicativos web. JSP usa as mesmas tcnicas que aquelas encontradas em
programao servlet.
Em algumas aplicaes programar usando servlets torna-se um incmodo,
especialmente quando voc precisa enviar uma longa pgina HTML que inclui pouco
cdigo, cada tag HTML precisa ser embutida em uma string e enviada usando o mtodo
17
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


println.
Uma outra desvantagem de usar servlet que, cada alterao individual exigir a
interveno do programador de servlet. Mesmo uma ligeira modificao grfica, tal como
mudar o valor do atributo BGCOLOR.
JSP resolve desvantagens na tecnologia servlet, permitindo ao programador, por
exemplo, interseccionar cdigo com contedo esttico. Se o programador tiver que
trabalhar com gabarito de pgina HTML, escrito por um web designer, o programador
pode simplesmente, acrescentar um cdigo na pgina HTML e salva-lo como um arquivo
.jsp.

Instalando a J2SE
Necessitamos obrigatoriamente ter a J2SE, que o ambiente Java propriamente
dito, pois ela que ir compilar nosso cdigo fonte. Depois de conseguir o ambiente
Java localize o arquivo j2sdk-1_4_0-win e siga as janelas de instalao. Siga a instalao
padro.
Outra opo adquirir uma cpia do Software Development Kit (SDK) da Sun. O
SDK grtis e executa na maioria das plataformas mais comuns. Para baixar o SDK o
endereo : http://java.sun.com.
A Sun desenvolveu Java para executar em qualquer mquina com os seguintes
sistemas operacionais: Windows 9X, Windows 2000, Windows NT, Solaris, Unix, A IBM
tem uma verso para AIX (verso UNIX para IBM), OS/400 e o OS/390 que um sistema
operacional para mainframes.
Voc vai precisar de aproximadamente 20MB, para copiar o SDK. O instalador
expandir-se- em um jogo de arquivos. Assim voc deve reservar 60MB de espao em
disco. Se resolver instalar a documentao mais 30MB ser necessrio.
A ferramenta mais importante no JDK o javac, o compilador Java que copiado
na pasta bin, javac traduz o cdigo-fonte com as instrues para Java Virtual Machine
(JVM).
Uma vez que voc tenha usado o compilador para fazer um arquivo.class, voc
processar seu programa no JVM. Para a maior parte do seu trabalho com o JDK, voc
ir executar aplicaes usando o iniciador de aplicaes Java, chamado java. Quando
voc digitar java minhaclasse o iniciador examina a classe chamada minhaclasse e
executa o cdigo.
Java x Javascript:
JavaScript uma linguagem de script para a web que foi criada pela Netscape, e Java
uma linguagem de programao que foi criada pela Sun. O nome JavaSript foi adotado
para aproveitar o marketing da Sun. O original era o LiveScript.
Alm da diferena dos criadores, Java e Javascript so linguagens diferentes, tanto
18
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


na programao quanto na aplicao. Enquanto que Javasript includo
diretamente no cdigo HTML, Java serve para criar programas independentes.
A linguagem Java foi projetada para uso de programadores profissionais. Distinto
de Javascript, Java foi projetado para desenvolvimentos robustos em ambiente
corporativo. O Javascript foi projetado para melhorar a apresentao de pginas na
internet, providenciando recursos que o HTML no possui.
Conceitos Bsicos de Java
O que devemos saber que a linguagem Java tem as seguintes caractersticas:
Totalmente baseada na orientao a objetos;
uma linguagem interpretada, que necessita da Java Run-Time para rodar;
Extremamente porttil, pode ser usada em agendas, celulares, micros,
mainframes, workstations e PDAs;
Aprendizado razoavelmente simples desde que entenda o conceito da
orientao a objetos;
Lembre-se que:
Java totalmente CASE-SENSITIVE, ou seja, distingue as maisculas das
minsculas, sendo que o atributo meuNome totalmente diferente do atributo
MeuNome;
Todas as instrues devero ser finalizadas com um ponto e vrgula ( ; );
Blocos de instrues so inseridos entre chave ( { } ) que no so finalizados
com ( ; );
Por padronizao, nomes de classes comeam com a primeira letra em
maisculo, enquanto que nomes de atributos, mtodos, objetos e pacotes
comeam com a primeira letra em minsculo.
Java trabalha com os seguintes tipos primitivos para a criao de seus atributos:
Inteiro: int
Real: float e double
Caracter: char
Lgico: boolean
Para se definir um atributo, basta colocarmos o modificador do atributo, o tipo deste e seu
nome, pode-se opcionalmente instanci-lo com um valor inicial. Public int c;
Modificador
Public

Tipo
Int

Nome
C

Na Orientao a Objetos, existe o conceito de Encapsulamento ou seja, parte do


cdigo fica totalmente protegida, parte serve apenas a uma famlia (tambm tratada por
pacote) de classes, e uma ltima parte tem seu acesso totalmente irrestrito por qualquer
classe. Em Java, isso tratado com as seguintes palavras-chave:
Public: Qualquer classe de qualquer pacote tem acesso a este atributo;
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

19

Grupo iPED - Curso de Java


Protected: Apenas as classes do mesmo pacote possuem acesso a este
atributo;
Private: Apenas a prpria classe pode acessar a este atributo.
Ento, poderemos definir os seguintes atributos para uma determinada classe A:
// atributo pblico de nome c do tipo inteiro
public int c;
// atributo protegido de nome b do tipo double
protected double b;
// atributo particular de nome a do tipo boolean com valor true
private boolean a = true;
Esquematizando as outras classes, teramos a seguinte estrutura:

Acontecer que a classe B, por pertencer ao mesmo pacote, ter acesso aos
atributos c e b, enquanto que a classe C ter acesso apenas ao atributo c por pertencer a
um pacote diferente. Para o atributo a, seu acesso restrito apenas classe A.
Utilizei-me propositalmente de mesmos nomes de classes e atributos para que
voc v logo se acostumando que Java totalmente CASE-SENSITIVE.
Java como Linguagem de Programao
A linguagem de programao Java de alto nvel com as seguintes caractersticas:
Simples
Compilada
Robusta
Multithread

Orientada a Objetos
Interpretada
Portvel
Alto desempenho

Distribuda
Segura
Arquitetura Neutra
Dinmica

Java possui a singular caracterstica de ser compilada e interpretada obtendo o


melhor desses dois mecanismos de traduo/execuo de programas. Primeiro o
compilador Java transforma um programa fonte em bytecodes e posteriormente, na
execuo, os bytecodes so interpretados pela mquina virtual Java (JVM).

20

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

Com isso um programa Java um conjunto de instrues para a JVM, dessa forma o
mesmo independente de plataforma, pois basta que haja uma implementao de
mquina virtual para a plataforma a ser utilizada.

Java como Plataforma de Desenvolvimento de Aplicaes


O termo plataforma normalmente definido como a combinao de sistema
operacional mais hardware, sendo que a plataforma Java definida apenas em software,
por isso o conceito de mquina virtual.
A plataforma Java possui dois componentes:
1.

Mquina Virtual Java (JVM)

2.

Interface para Desenvolvimento de Aplicaes (API Java)

A Mquina Virtual Java


A Especificao da Mquina Virtual Java define a JVM (Mquina Virtual Java)
como: Uma mquina imaginria que implementada atravs da emulao em um
software executado em uma mquina real.
A Especificao da Mquina Virtual Java fornece as especificaes da plataforma
de hardware para a qual todo o cdigo Java est compilado. Essa especificao permite
que os programas Java sejam independentes de plataforma j que a compilao feita
para uma mquina imaginria. Cabe ao Interpretador Java de cada plataforma de
hardware assegurar a execuo do cdigo compilado para a JVM.

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

21

Grupo iPED - Curso de Java

A especificao da JVM fornece definies concretas para a implementao dos


seguintes itens:

Conjunto de Instrues (equivalente ao conjunto de instrues de uma CPU)


Conjunto de registradores
Formato do arquivo de classe
rea da memria

Coleta de lixo (Garbage Collector)

Vrias linguagens de programao permitem a alocao dinmica da memria no tempo


de execuo. O processo de alocao de memria varia baseado na sintaxe da
linguagem, mas sempre envolve o retorno de um ponteiro ao endereo inicial do bloco de
memria.
Quando a memria alocada no mais necessria, aconselhvel que o ambiente do
programa ou do tempo de execuo desaloque a memria para evitar que o programa
seja executado com falta de memria.
No C e C++ (e outras linguagens), o desenvolvedor do programa responsvel pela
desalocao da memria. Esse procedimento algumas vezes pode ser trabalhoso,
principalmente porque nem sempre possvel saber antecipadamente quando a memria
deve ser liberada. Os programas que no so desalocados da memria podem,
conseqentemente, sofrer algum tipo de falha caso no haja memria suficiente a ser
alocada pelo sistema. Esses programas tm, portanto, vazamentos de memria.
A linguagem Java realiza a liberao da memria, que antes era responsabilidade do
programador, fornecendo um thread em segundo plano, em nvel de sistema, que registra
cada alocao de memria e mantm uma contagem do nmero de referncias feitas a
cada ponteiro de memria. Durante os ciclos ociosos, no tempo de execuo da Mquina
Virtual Java, o thread da coleta de lixo verifica se existe algum ponteiro de memria em
que o nmero de referncias tenha baixado para 0. Se houver, a memria marcada pelo
thread da coleta de lixo ser varrida (desalocada).
A coleta de lixo ocorre automaticamente durante o tempo de vida de um programa Java e
dispensa a desalocao de memria, alm de eliminar os vazamentos de memria.
Java Development Kit - JDK
Conjunto de ferramentas para o desenvolvimento em JAVA fornecidas pela Sun,
sendo os principais:
22

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


Ferramenta
Javac
Java
Javadoc
Appletviewer
Jdb

Descrio
Compilador
Executor de Programas
Gerador de documentao da API
Visualizador de applet
Debuger

Para escrever em Java voc precisa do editor, do compilador Java e do Java


Runtime Environment. Pode ser usado qualquer editor de textos para editar o cdigo fonte
Java. Voc tambm pode usar um ambiente integrado de desenvolvimento, mais ser
necessrio que voc aprenda a usar a ferramenta escolhida.
Ambiente Integrado de Desenvolvimento - IDE
Ambiente com interface grfica que interage com o JDK para oferecer um ambiente
de desenvolvimento mais produtivo.
Exemplos:
Inprise Jbuilder
Tek-Tols Kawa

Microsoft Visual J++


Sun Forte CE

Symantec Visual Caf

Jbuilder
O Jbuilder - ambiente da Borland para o aprendizado de programao Java e
desenvolvimento visual de aplicaes Java para uso no comercial em plataformas
Windows, Linux, Solaris e Mac OS - facilita o aprendizado de programao Java com
funes integradas de editor, depurador, compiladores, projetistas visuais, wizards,
aplicaes modelo, tutoriais e suporte aos padres Java. Ele tambm inclui uma licena
para desenvolvimento no comercial e proporciona migrao direta ao Jbuilder
Professional ou ao Jbuilder Enterprise para desenvolvimento e distribuio de aplicaes
comerciais (http://www.borland.com/jbuilder/personal/) 53Mb
Estrutura de um Programa Java
Todo programa Java uma classe e mesmo possuindo trs possveis modalidades
para programas Java (Applications, Applets e Servlets) a estrutura bsica sempre a
mesma: "uma classe".
Um Programa Java organizado em arquivos texto com a extenso .java e cada
arquivo contem apenas uma classe pblica. O nome do arquivo da classe Java deve
possuir exatamente o mesmo nome da classe pblica, pois a mquina virtual procura o
arquivo da classe atravs do nome da classe.
Objetos Distribudos em Java
O sistema RMI (Remote Method Invocation) permite que um objeto rodando em
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

23

Grupo iPED - Curso de Java


uma mquina virtual Java (JVM) chame mtodos de um objeto que esteja rodando em
outra JVM. RMI permite a comunicao remota entre programas escritos em Java. RMI
prov um mecanismo atravs do qual o servidor e o cliente se comunicam e passam
informaes. Estas aplicaes so chamadas de aplicaes de objetos distribudos.
A Plataforma Java 2 Enterprise Edition
Atualmente, as empresas necessitam expandir seus mercados, reduzir custos e
diminuir o seu tempo de resposta, fornecendo facilidade de acesso aos seus servios a
clientes, parceiros, funcionrios e fornecedores.
Com esta frase a Sun Microsystem inicia a definio da Plataforma Java 2
Enterprise Edition. Deixando claro que o objetivo da mesma atender aos requisitos do
ambiente corporativo, entendendo como ambiente corporativo aquele onde os seguintes
requisitos so fundamentais:
Integrao com Sistemas Legados;
Robustez
Alta Disponibilidade
Segurana
Confiabilidade
Escalabilidade.
A Plataforma Java 2EE define um padro para o desenvolvimento de aplicaes,
simplificando o desenvolvimento dessas aplicaes atravs de uma padronizao
baseada em componentes, fornecendo um conjunto completo de servios para esses
componentes, e da manipulao automtica de vrios detalhes inerentes ao ambiente
corporativo, tais como:
Controle Transacional;
Ajuste de Performance;
Persistncia;
Segurana;
Escalabilidade;
Gerncia de Recursos (Processos, Threads, Memria, Conexes com Banco de
Dados e Sesses com Usurios).
A Plataforma J2EE foi projetada para suportar os rgidos requisitos dos ambientes
corporativos atuais, atravs de uma arquitetura de aplicao multicamada, com enfoque
no lado servidor e baseado em componentes. Na arquitetura multicamadas o software
construdo atravs de componentes distribudos em vrias camadas, normalmente
incluindo uma Camada Cliente, uma ou mais Camadas Intermedirias e uma Camada de
Dados.
A Camada Cliente, tambm chamada de Camada de interface, responsvel pela
interao com o usurio, sendo composta por componentes que interagem com as regras
de negcio do ambiente corporativo. Os componentes dessa camada normalmente so
responsveis pela criao da interface com o usurio e normalmente so implementados
como aplicaes ou pginas html geradas dinamicamente.
24

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


A Camada Intermediria, tambm chamada de Camada de Regra de Negcio,
responsvel por encapsular a complexidade do ambiente corporativo, fornecendo de
forma simples recursos para a construo da camada cliente e integrao com Sistemas
Legados. Os componentes dessa camada so hospedados no lado servidor,
necessitando de um servidor de aplicaes para a execuo dos mesmos.
A Camada de Dados responsvel pela persistncia e gerncia dos dados,
normalmente implementada por um Sistema Gerenciador de Banco de Dados Relacional.
Tecnologias da Plataforma J2EE
A Plataforma Java 2EE foi construda sobre e, portanto herda uma srie de vantagens
j disponibilizadas por esta, tais como: independncia de plataforma, atravs da Mquina
Virtual Java; independncia de servidor de banco de dados, atravs da API JDBC e
tecnologia CORBA para a interao com sistemas legados. Em adio s tecnologias da
Plataforma Standard Edition foram criadas uma srie de novas tecnologias para servir de
suporte Plataforma J2EE:
CORBA (Common Object Request Broker Architecture) - um padro aberto para
sistemas heterogneos, fornecendo um Framework para utilizao de objetos
distribudos, permitindo interoperabilidade com outras linguagens de programao e
tecnologias.
Enterprise Javabeans (EJB) - Representa um modelo de componentes/objetos
distribudos permitindo a criao de componentes do lado servidor, simplificando a
implementao das camadas intermedirias fornecendo automaticamente controle
transacional, escalabilidade, conexo com banco de dados, segurana e portabilidade,
servios esses fundamentais para a implementao das camadas intermedirias.
Java Server Pages (JSP) - Mecanismos para gerao de contedo Web, baseado
na tecnologia Servlet, trazendo maiores facilidades na construo de interface Web,
pois associa contedo HTML com cdigo Java, atravs de rtulos pr-definidos.
Assim, o JSP j possui o contedo HTML a ser retornado ao cliente, permitindo a
execuo de cdigo Java para composio dinmica do contedo web. Todo JSP
convertido em um Servlet para ento ser executado.
Servlet - API representando a extenso para servidores Web e permitindo a
gerao dinmica de pginas Web atravs de programas Java. Permite interao com
o usurio via protocolo HTTP. um programa Java o qual estende a API servlet e
executado no lado servidor e permitindo acesso a toda tecnologia e API Java. O
resultado da sua execuo uma pgina web a ser enviada ao cliente. uma
alternativa Java a soluo CGI (Commom Gateway Interface).
JDBC (Data Access API) - API que fornece tecnologia Java independncia de
Sistema Gerenciador de Banco de Dados. Representada pela padronizao do acesso
a Banco de Dados pela linguagem Java, assim, qualquer fabricante de SGBD que
implementar um driver JDBC permitir que programas Java acessem o seu servidor de
forma independente. Foi uma iniciativa fundamental para a conquista do ambiente
corporativo pela tecnologia Java, pois agregou independncia de plataforma, a
independncia de SGBD.

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

25

Grupo iPED - Curso de Java

Boas regras de programao


Um fator determinante na qualidade de um programa como o mesmo est escrito,
dessa forma, veremos algumas regras que devem ser seguidas para padronizar a escrita
de programas em Java a fim de evitar dificuldades na leitura do mesmo, regras estas
extradas de publicao da prpria Sun como proposta para a padronizao da escrita de
programas em Java.
Regras de Padronizao na Escrita de Programas Java
O contedo de arquivos fontes JAVA segue a seguinte ordem:
1. Comentrios iniciais
2. Parmetros de Pacotes (package) e importao (import)
3. Declarao de Classes (class) ou Interfaces (interface)
Todo programa JAVA deve comear com um comentrio contendo: identificao do
programador, data de atualizao, informao de direitos autorais e uma breve descrio
do objetivo do programa.
A tabela a seguir descreve os componentes da declarao de uma classe ou interface e
indica em qual ordem os mesmos devem aparecer.
1
Comentrio de documentao da Classe
2
Parmetro class
3
Comentrio de implementao da classe
4
Variveis de classe (static) na ordem: public, protected e private.
5
Variveis de instncia, na ordem: public, protected e private.
6
Construtores
7
Mtodos. Os quais devem ser agrupados por funcionalidade
Quatro espaos devem ser usados como unidade de endentao (Tab Space = 4)
Uma linha no deve possuir mais de 80 caracteres
Quando uma expresso no couber inteiramente em uma linha, a mesma deve ser
quebrada seguindo os seguintes princpios:
Quebrar aps uma vrgula
Quebrar aps um operador
Quebrar preferencialmente em parnteses de nvel mais alto
Alinhar a nova linha de acordo com a expresso na linha anterior
Linhas em branco facilitam a leitura de programas, pois delimitam sees de cdigo
relacionadas logicamente.
Cada palavra dos identificadores de classes deve comear com letras maisculas
Identificadores de pacotes, mtodos e variveis/objetos devem comear com letras
minsculas, sendo que, quando possuir outras palavras, s mesmas devem comear com
letra maiscula.
Identificadores de constantes devem ser escritos em letras maisculas e as palavras
separadas por "_"
"A melhor linguagem de programao no existe". Todas as linguagens tm qualidades e
defeitos. Tudo depende de hora e lugar. Afinal, o que ponto positivo, aqui e agora, pode
no ser mais, depois, em outro lugar, em outra situao, outra necessidade. Em certos
casos, no preciso sequer ter uma linguagem formal, com compilador: scripts de macro
26

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


resolvem, com folga, boa parte dos problemas mais comuns do dia-a-dia.
As linguagens, pela sua prpria natureza, no se enquadram na viso estreita e exclusiva
do isso ou aquilo. Na prtica, o profissional maduro aquele que, conforme o problema,
sabe decidir que o melhor usar esta ou aquela ferramenta - ou mesmo esta combinada
com aquela. Na maioria dos casos, os sectrios que erguem altares para uma (e somente
uma) linguagem do com a cara na parede quando se defrontam com a realidade do
mercado. Cada vez mais se impem as solues multilngues, e h lugar para muitas
ferramentas de programao.
Muitos jovens programadores assumem suas ferramentas de trabalho com o
mpeto feroz das torcidas organizadas de futebol. Eles esto completamente por
fora da realidade do mercado
A coisa mais comum encontrar, entre jovens programadores, grupos que se tornam
cegamente apaixonados por uma linguagem. Como religiosos fanticos, eles s
enxergam valor em sua linguagem preferida. Todo o resto simplesmente lixo. E, com
essas idias distorcidas na cabea, saem desferindo socos e pontaps verbais para todos
os lados. A vtima desse mpeto pode ser qualquer pessoa que ouse discordar, mesmo
ligeiramente, de suas preferncias.
E a coisa se torna uma autntica parania. s vezes, mesmo quem fala a favor tambm
entra na linha de fogo. Afinal, quem esse infiel que ousa proferir em vo o santo nome
d'A Linguagem? So seitas fundamentalistas girando a 300 Mhz em torno de um
software. Tratam a tecnologia como se fosse um assunto de torcedor fantico. Levam a
discusso para um ambiente em cuja porta parece estar escrito "Proibido usar lgica" por mais estranho que isso possa parecer quando se trata de programao.
A Melhor linguagem de programao aquela que permite atender ao nosso cliente
de maneira eficiente e eficaz fornecendo o que o mesmo precisa para prosperar em
seu negcio, melhor linguagem no aquela que voc conhece ou sabe.

Instrues para digitar e executar o programa


1. Digitar o programa usando um editor de textos sem formatao
a. Selecionar: Iniciar/Programas/Prompt do MS-DOS
b. Quando aparecer a janela C:\WINDOWS, digite:
c. CD\pasta da linguagem Java\BIN (nesta pasta esto todos os arquivos
importantes para voc compilar e executar aplicativos Java usando o
comando DIR possvel ver estes arquivos).
d. No prompt do DOS digite: path c:\pasta do Java\bin;c:\windows\command
e. Chamar o editor de textos de sua preferncia para editar o cdigo-fonte (um
editor muito prtico de usar o EDIT, caso no use este programa voc
deve voltar ao Windows para carregar seu editor preferido)
f. Codifique o programa observando corretamente sua sintaxe
g. Aps a digitao SALVAR no seu disquete, pois no disco rgido seu
programa pode ser apagado por outro usurio.
h. Digite o nome do programa (A:nome do programa.java) lembre-se que o
27
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


nome do programa deve ser o mesmo da classe.
2. Compilar o programa usando o compilador Java
a. Digite A: para acessar o disquete
b. javac nome do programa.Java
c. Se no houver erros aps a compilao aparecer o prompt novamente.
Caso haja erros edite o arquivo novamente corrija e recompile.
d. Se voc usar o comando dir a:*.java poder verificar que existe um arquivo
com o nome programa.class que o arquivo compilado em bytecodes.
3. Executar o programa para verificar se funciona corretamente
a. java Programa
Regras de Padronizao na Escrita de Programas Java
O contedo de arquivos fontes JAVA segue a seguinte ordem:
1. Comentrios iniciais
2. Parmetros de Pacotes (package) e importao (import)
3. Declarao de Classes (class) ou Interfaces (interface)
Todo programa JAVA deve comear com um comentrio contendo: identificao do
programador, data de atualizao, informao de direitos autorais e uma breve descrio
do objetivo do programa.
A tabela a seguir descreve os componentes da declarao de uma classe ou interface e
indica em qual ordem os mesmos devem aparecer.
1
Comentrio de documentao da Classe
2
Parmetro class
3
Comentrio de implementao da classe
4
Variveis de classe (static) na ordem: public, protected e private.
5
Variveis de instncia, na ordem: public, protected e private.
6
Construtores
7
Mtodos. Os quais devem ser agrupados por funcionalidade
Quatro espaos devem ser usados como unidade de endentao (Tab Space = 4)
Uma linha no deve possuir mais de 80 caracteres
Quando uma expresso no couber inteiramente em uma linha, a mesma deve ser
quebrada seguindo os seguintes princpios:
Quebrar aps uma vrgula
Quebrar aps um operador
Quebrar preferencialmente em parnteses de nvel mais alto
Alinhar a nova linha de acordo com a expresso na linha anterior
Linhas em branco facilitam a leitura de programas, pois delimitam sees de cdigo
relacionadas logicamente.
Cada palavra dos identificadores de classes deve comear com letras maisculas
Identificadores de pacotes, mtodos e variveis/objetos devem comear com letras
minsculas, sendo que, quando possuir outras palavras, s mesmas devem comear com
letra maiscula.
Identificadores de constantes devem ser escritos em letras maisculas e as palavras
separadas por "_"

28

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


Iniciando com um programa bsico
Nos programas que explicaremos vamos usar uma numerao esquerda, de cada linha
de instruo, esta numerao dever ser ignorada na hora da digitao, apenas para
efeito didtico, para facilitar a localizao do comando no momento da explicao.
As caixas de dilogo so janelas que em geral so utilizadas para exibir
mensagens importantes para o usurio de um aplicativo. O Java j inclui a classe
JOptionPane que permite que voc exiba facilmente uma caixa de dialogo contendo
informaes.
Um dos pontos fortes do Java seu rico conjunto de classes predefinidas. Muitas
classes so agrupadas em categorias de classes relacionadas chamadas pacotes. Os
pacotes so referidos coletivamente como bibliotecas de classes Java.
01 - // Programa..: Mensagem.Java
02 - // Autor.........: Edison Pires
03 - // Descrio.: Imprime uma mensagem em uma caixa de dialogo
grfica
04 - // Data.......: xx/xx/xxxx
05 - import javax.swing.JOptionPane;
06
07
08
09

- public class Mensagem {


public static void main( String args[] )
{
JOptionPane.showMessageDialog(
null,"Bem Vindo Ao Java!");
10 System.exit(0);
11 }
12 - }

EXPLICAO DO CDIGO
01 - // Programa..: Mensagem.Java
02 - // Autor.........: Grupo iPED
03 - // Descrio.: Imprime uma mensagem em uma caixa de dialogo grfica
04 - // Data.......: xx/xx/xxxx
Indica que o restante da linha um comentrio. Os programadores inserem
comentrios para documentar os programas e melhorar a legibilidade do programa.
Os comentrios tambm ajudam outras pessoas a entenderem seu programa. Um
comentrio ignorado pelo compilador.
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

29

Grupo iPED - Curso de Java


05 - import javax.swing.JOptionPane;
O compilador utiliza instrues import para identificar e carregar classes
requeridas para compilar um programa. Java possui uma rica coleo de classes.
As bibliotecas de classes so tambm conhecidas como Java APIs (Applications
Programming Interfaces interfaces de programas aplicativos).
As instrues import ajudam o compilador a localizar as classes que voc
pretende utilizar.
Cada pedao do nome do pacote um diretrio (ou pasta) em disco.
Esta linha diz ao compilador para carregar a classe JOptionPane que est no
pacote javax.swing. Este pacote contm classes e interfaces para componentes
de interface grfica. Este pacote esta no arquivo rt.jar na pasta jdkjrelib. Se for
utilizada a instruo import javax.swing.*; estaremos importando todo o pacote.
06 - public class Mensagem
Inicia uma definio de classe para a classe Mensagem. Cada programa Java
consiste de pelo menos uma definio de classe.
O nome da classe chamado de identificador, Java faz distino entre letras
maisculas e minsculas.
A palavra-chave public um modificador de acesso a membros de uma classe,
variveis de instncia
Variveis de instncia ou mtodos declarados com a palavra reservada public so
acessveis onde quer que o programa faa uma referencia a um objeto.
07 -

public static void main( String args[] )


Os aplicativos Java automaticamente comeam executando em main. Os
parnteses depois de main indicam que um bloco de construo de programa
chamado mtodo.
Se no colocarmos o main o interpretador Java no executar o aplicativo.
Os mtodos realizam tarefas e retornam informaes, a palavra void indica
que esse mtodo realizar uma tarefa (exibindo uma linha de texto neste
programa), mas no retornar nenhuma informao quando completar sua tarefa.
Quando escrevemos uma aplicao Java, podemos passar argumentos. O
ambiente Java coloca cada argumento em uma string e ento passa o vetor de
strings para o mtodo main(). Usamos para passar argumentos o vetor args[], em
nosso programa no passaremos nenhum argumento, portanto args um vetor
vazio.
Uma varivel de classe static define que todos os objetos da classe
compartilham a mesma parte dos dados, desta forma possvel se economizar
memria.

09 -

JOptionPane.showMessageDialog(
null,"Bem Vindo Ao Java!");
A classe JOptionPane permite que voc exiba facilmente uma caixa de dilogo
contendo informaes.
Esta linha do programa Indica uma chamada para o mtodo
showMessageDialog da classe JOptionPane. As informaes entre parnteses
so os argumentos passados para o mtodo.
O propsito do primeiro argumento especificar a janela-pai para a caixa de
dialogo, a janela pai ajuda a determinar onde a caixa de dialogo ser exibida, se a
janela-pai for especificada como null ser exibida no centro da tela. Quando um
aplicativo no possui janela-pai o argumento dever ser sempre null, ou ser

30

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


ocasionado um erro.
O segundo argumento a string a exibir dentro da janela grfica, normalmente
uma instruo ou informao para o usurio do programa.
10

System.exit(0);
Essa linha exigida em aplicativos com interface grfica para terminar o aplicativo.
Chamamos a classe system que executa o mtodo exit. O argumento zero indica
que o aplicativo terminou com sucesso. A classe system parte do pacote
Java.lang, que importado automaticamente, por isto no referenciado no inicio
do programa.

Nosso prximo aplicativo l dois inteiros digitados por um usurio no teclado, computa a
soma desses valores e exibe o resultado. Quando o usurio digita cada inteiro e
pressiona a tecla enter ou o boto OK, o inteiro lido no programa e adicionado ao total.
Esse programa utiliza outra caixa de dilogo predefinida da classe JOptionPane,
chamada de dilogo de entrada, que permite ao usurio inserir um valor para utilizao no
programa. O programa tambm utiliza um dilogo de mensagem para exibir os resultados
da adio.
Algoritmo do programa

Importar as classes necessrias para o aplicativo.


Declarar como pblica a classe com o seu respectivo nome.
Declarar o mtodo principal main().

Declare primNumero, secNumero Caractere


Declare numero1, numero2, soma Numrico Inteiro

Leia primNumero
Leia secNumero

numero1 <- primNumero


numero2 <- secNumero
soma <- numero1 + numero2

Escreva O numero e, soma


// Programa..: Adicao.Java
// Autor.........: Edison Pires
// Descrio.: O objetivo deste programa a entrada de dois
nmeros
//
inteiros, que sero somados, o resultado
ser exibido
//
em uma janela com JOptionPane
// Data.......: 29/01/2003
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

31

Grupo iPED - Curso de Java


1-

import javax.swing.JOptionPane;

23456789-

public class Adicao {


public static void main( String args[] )
{
String primNumero,
secNumero;
int numero1,
numero2,
soma;

10primNumero=JOptionPane.showInputDialog( "Entre com o


primeiro numero inteiro" );
11secNumero =JOptionPane.showInputDialog( "Entre com o
segundo numero inteiro" );
1213-

numero1 = Integer.parseInt( primNumero );


numero2 = Integer.parseInt( secNumero );

14-

soma = numero1 + numero2;

151617-

JOptionPane.showMessageDialog(
null, "O numero e: " + soma, "Resultado",
JOptionPane.PLAIN_MESSAGE );

18System.exit( 0 );
19}
20- }
No pode ser alterado neste objeto

32

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

EXPLICAO DO CDIGO
// Programa..: Adicao.Java
// Autor.........: Edison Pires
// Descrio.: O objetivo deste programa a entrada de dois nmeros
//
inteiros, que sero somados, o resultado ser exibido
//
em uma janela com JOptionPane
// Data.......: 29/01/2003
As linhas acima so comentrios e so ignoradas pelo interpretador, serve apenas
para documentar o programa.
1- import javax.swing.JOptionPane;
Especifica para o compilador onde encontrar a classe JoptionPane para utilizar
neste programa.
As instrues import ajudam o compilador a localizar as classes que voc
pretende utilizar.
Esta linha diz ao compilador para carregar a classe JOptionPane que esta no
pacote javax.swing.
2- public class Adicao {
Inicia as definies da classe Adio. O nome de arquivo para esta classe deve ser
Adio.java, todas as definies de classe iniciam com uma chave esquerda de
abertura e terminam com uma chave de fechamento (linha 20)
3- public static void main( String args[] )
Os aplicativos Java automaticamente comeam executando em main. Os
parnteses depois de main indicam que um bloco de construo de programa
chamado mtodo.
Se no colocarmos o main o interpretador Java no executar o aplicativo.
Os mtodos realizam tarefas e retornam informaes, a palavra void indica
que esse mtodo realizar uma tarefa (exibindo uma linha de texto neste
programa), mas no retornar nenhuma informao quando completar sua tarefa.
Quando escrevemos uma aplicao Java, podemos passar argumentos. O
ambiente Java coloca cada argumento em uma string e ento passa o vetor de
strings para o mtodo main(). Usamos para passar argumentos o vetor args[], em
nosso programa no passaremos nenhum argumento, portanto args um vetor
vazio.
Uma varivel de classe static define que todos os objetos da classe compartilham
a mesma parte dos dados, desta forma possvel se economizar memria.
56789-

String primNumero,
secNumero;
int numero1,
numero2,
soma;
Declarao das variveis.
As variveis devem ser declaradas com seu nome e seu tipo antes de serem
usadas.
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

33

Grupo iPED - Curso de Java

Escolher nomes significativos para variveis ajuda a documentar o programa.


Na linha cinco e 6 estamos declarando varivel do tipo caractere, String significa
cadeia de caracteres, nestas variveis s poderemos armazenar caracteres tipo (az, !, & etc.)
Na linha 7,8,9 estamos declarando variveis numricas do tipo inteiro, vo
armazenar somente nmeros inteiros, a tentativa de armazenar um nmero
fracionrio resultar em erro.
Por conveno os identificadores de nome de varivel comeam na primeira
palavra com uma primeira letra minscula e na segunda palavra com letra
maiscula.
Varivel tipo int e String so normalmente chamados de tipos de dados primitivos.
Variveis podem ser declaradas na mesma linha separas por virgulas.

10-

primNumero=JOptionPane.showInputDialog( "Entre com o primeiro numero


inteiro" );
11secNumero =JOptionPane.showInputDialog( "Entre com o segundo numero
inteiro" );
L uma string fornecida pelo usurio
O mtodo JOptionPane.showInputDialog exibe a seguinte caixa de dialogo:

O texto digitado atribudo a varivel primNumero, com o operador de atribuio


(=), esta instruo lida: primNumero recebe o valor de JOptionPane, a instruo
inteira chamada como uma instruo de atribuio.
O argumento para o mtodo showInputDialog indica ao usurio o que fazer no
campo texto, toda entrada em uma janela JOptionPane tratada como string.

1213-

numero1 = Integer.parseInt( primNumero );


numero2 = Integer.parseInt( secNumero );
Converte a string em valores int, o mtodo Integer.parseInt converte seu
argumento string em um inteiro.
O inteiro retornado por Integer.parseInt atribudo a varivel numero1
Esta converso necessria porque toda entrada em uma janela JOptionPane
tratada como string, e no possvel fazer operaes aritmticas com strings.

14-

soma = numero1 + numero2;


Calcula a soma das variveis numero1 e numero2 e atribu o resultado a
soma.
instruo lida soma recebe o resultado de numero1+numero2.

151617-

JOptionPane.showMessageDialog(
null, "O numero e: " + soma, "Resultado",
JOptionPane.PLAIN_MESSAGE );
Utiliza o mtodo showMessageDialog do objeto JoptionPane para exibir o
resultado da adio.

34

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


A expresso O numero e: " + soma, utiliza o operador + para concatenar
strings para exibir a frase e o contedo da varivel
O resultado desta operao uma nova string. Java converte a varivel soma
automaticamente para uma string porque identifica o operador + que concatena a
frase "O numero e: ", que uma string
O terceiro argumento de JOptionPane.showMessageDialog utilizado para
exibir uma string na barra de titulo do dilogo
O quarto argumento JOptionPane.PLAIN_MESSAGE indica que no ser
exibido nenhum cone.

OBSERVAO: Tecnicamente, o usurio pode digitar qualquer coisa no campo de


texto da entrada. Para esse programa se o usurio digitar um valor diferente de um inteiro
ou clicar no boto Cancel, ocorrer um erro de lgica durante a execuo, depois iremos
aprender como tratar estes erros.
Conceitos de memria
Os nomes de varivel, tais como numero1, numero2, soma, na verdade
correspondem a posies na memria do computador. Cada varivel tem um nome, um
tipo, um tamanho e um valor. O contedo digitado colocado em uma posio na
memria qual um nome atribudo pelo compilador.
Sempre que um valor colocado em uma posio da memria, esse valor substitui
o valor que havia antes nessa posio. O valor anterior destrudo.
Temos outros tipos de dados primitivos que podemos usar, estes tipos de dados
primitivos so:
double: para especificar nmeros reais, com preciso dupla, isto , nmeros
com ponto decimal com at 18 casas aps a virgula.
float....: para especificar nmeros reais, com preciso simples, isto , nmeros
com ponto decimal com at nove casas aps a virgula.
char...: para especificar apenas um caracter de armazenamento.
Boolean..: para especificar verdadeiro ou falso
A maioria dos programas realiza clculos aritmticos. Os operadores aritmticos
so operadores binrios porque cada um deles opera sobre dois operandos. Por exemplo,
a expresso numero1 + numero2 contm o operador binrio + e os dois operandos
35
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


numero1 e numero2. No h operador aritmtico para exponenciao em Java. Depois
veremos como realizar esta operao.
Operao de Java
algbrica
Adio
f+7
Subtrao
c
Multiplicao
bm
Diviso
y

Operador aritmtico
Expresso Java
+
f+7
p-c
*
b*m
/
x/y

Expresso

p-

x/

Em nossos programas tambm ser necessrio utilizarmos os operadores de


igualdade e relacionais que so os que seguem:
Operador algbrico
de igualdade padro
ou operador
relacional
=
#
>
<

Operador de
igualdade ou
relacional em Java

Exemplo de
condio em Java

Significado da
condio em Java

==
= (exclamao e
igual)
>
<
>=

X == Y
X = Y

X igual a Y
X no igual a Y

X>Y
X<Y
X >= Y

<=

X <= Y

X maior que Y
X menor que Y
X maior que ou igual
aY
X menor que ou
igual a Y

Dando entrada a nmeros decimais


Ateno na linguagem Java para entrar nmeros com casas decimais voc
deve usar o ponto como separador e no a virgula.
Algoritmo do Programa Media.java

36

Importar as classes necessrias para o aplicativo.


Declarar como pblica a classe com o seu respectivo nome.
Declarar o mtodo principal main().

Declare primNumero, secNumero, terNumero Caractere


Declare numero1, numero2, numero2, resultado Numrico Real

Leia primNumero
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

Leia secNumero
Leia terNumero

numero1 <- primNumero


numero2 <- secNumero
numero3 <- terNumero
resultado <- (numero1 + numero2 + numero3)/3
Escreva O numero e, resultado

// Programa..: Media.Java
// Autor.........: Edison Pires
// Descrio.: O objetivo deste programa entrada de trs
nmeros
//
decimais, para ser calculada a mdia dos
mesmos
// Data.......: 29/01/2003
1-

import javax.swing.JOptionPane;

2- public class Media {


3public static void main( String args[] )
4{
5String primNumero,
6secNumero,
7terNumero;
89double numero1,
10numero2,
11numero3,
12resultado;
1314primNumero=JOptionPane.showInputDialog( "Entre com o
primeiro numero: " );
15secNumero =JOptionPane.showInputDialog( "Entre com o
segundo numero: " );
16terNumero
=JOptionPane.showInputDialog( "Entre com o
Terceiro numero: " );
1718numero1 = Double.parseDouble( primNumero );
19numero2 = Double.parseDouble( secNumero );
20numero3 = Double.parseDouble( terNumero );
2122resultado = (numero1 + numero2 + numero3)/3;
2324JOptionPane.showMessageDialog(
null, "O numero e: " + resultado, "Resultado",
JOptionPane.PLAIN_MESSAGE );

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

37

Grupo iPED - Curso de Java


25System.exit( 0 );
26}
27- }

EXPLICAO DO CDIGO
9-

double numero1,
Neste programa possvel digitar um nmero real, ou seja, com casas decimais,
tambm chamados de nmero de ponto flutuante.
Para armazenar nmeros de ponto flutuante na memria usamos o tipo de dados
primitivo double (double utiliza 15 dgitos significativos)

ATENO O SEPARADOR DECIMAL DO JAVA O PONTO, SE FOR USADA A


VIRGULA OCORRER UM ERRO.
181920-

numero1 = Double.parseDouble( primNumero );


numero2 = Double.parseDouble( secNumero );
numero3 = Double.parseDouble( terNumero );
Convertem os strings digitados pelo usurio em valores double que podem ser
utilizados em calculo.
O mtodo Double.parseDouble converte seu argumento string em um valor de
ponto flutuante.

A estrutura de Seleo IF
A estrutura IF chamada de estrutura de seleo nica, uma vez que seleciona
ou ignora uma nica ao.
utilizada para escolher entre cursos de ao alternativos em um programa.
Se a condio satisfeita tudo o que esta dentro do IF executado, em seguida o
programa segue o fluxo de execuo, se a condio no for satisfeita toda a condio IF
ignorada e programa segue aps a instruo.
Recue as instrues de corpo de uma estrutura if/else.
38

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


If ( condio ) {
Comandos;
Comandos;
Comandos;
}
Comandos;
Comandos;

A condio verdadeira? Executa os


comandos internos ao IF.
A condio falsa? Salta os comandos
internos ao IF e executa as instrues aps
o IF

A estrutura de Seleo IF/ELSE


A estrutura de seleo IF/ELSE permite ao programador especificar que uma ao
diferente ser realizada quando a condio for verdadeira ou falsa.
if ( condio ) {

Se a condio verdadeira o bloco de


comandos dentro do IF executado.

Comandos;
Comandos;
Comandos;

SENO
Sendo a condio falsa o bloco de
comandos dentro do else que ser
executado.

}
else {

Comandos;
Comandos;
Comandos;
}
A estrutura de Seleo IF/ELSE
A estrutura de seleo IF/ELSE permite ao programador especificar que uma ao
diferente ser realizada quando a condio for verdadeira ou falsa.
if ( condio ) {
Comandos;
Comandos;
Comandos;
}
else {

Se a condio verdadeira o bloco de


comandos dentro do IF executado.
SENO
Sendo a condio falsa o bloco de
comandos dentro do else que ser
executado.

Comandos;
Comandos;
Comandos;
}
Nas estruturas IF/ELSE podemos usar para testar as expresses, operadores relacionais
ou de igualdades:
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

39

Grupo iPED - Curso de Java

==
Igual

!=
Diferente

>
Maior

<
Menor

>=
Maior e Igual

<=
Menor e
Igual

Tambm podemos usar para testar as expresses os operadores Lgicos. Java


fornece operadores lgicos que podem ser utilizados para formar condies mais
complexas combinando condies simples. Os operadores lgicos so:
&& (AND) = E
|| (OR) = OU
!= (NOT) = NO
Estas estruturas podem ser aninhadas, ou seja, posso ter instrues IF e IF/ELSE
dentro de estruturas IF/ELSE.
Estruturas aninhadas testam mltiplos casos.
If ( idade > 10 ){
Comandos;
}
else{
Comandos;
If ( idade == 0 || idade < 0 ) {
Comandos;
}
Comandos;
}

If ( idade >= 10 && sexo == M ){


Comandos;
}
else{
Comandos;
If ( idade != 30 ) {
Comandos;
}
Comandos;
}

A estrutura de Repetio WHILE


Uma estrutura de repetio permite ao programador especificar que uma ao
ser repetida enquanto alguma condio permanecer verdadeira.
Valor = 1
While ( valor <= 30 ) {
Comandos;
Comandos;
If ( idade != 5 ) {
Comandos;
Comandos;
}
else{
Comandos;
}
Comandos;
Comandos;
}
Use sempre as chaves nas estruturas

40

O exemplo seguinte utiliza instruo WHILE, e o objetivo deste programa


calcular a mdia de notas de uma classe, para fazer um levantamento, se a sala esta
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


indo bem ou no. O aplicativo vai solicitar do usurio qual a quantidade de alunos na
classe.

Ao informar a quantidade de alunos o aplicativo entra em um lao WHILE para repetir a


execuo do aplicativo de acordo com a quantidade de alunos escolhidos.
while ( notasLidas <= alunos ) {
Em

seguida

usurio

solicitado

entrar

com

notas.

Aps a digitao de todas as notas pelos usurios, o aplicativo efetua o calculo e mostra o
resultado.

muito importante que em nossos aplicativos, possamos oferecer para o usurio a


possibilidade de continuar executando o aplicativo ou encerrar o mesmo, para realizar
esta tarefa inclumos um While no inicio do nosso cdigo e no final do cdigo uma caixa
de dialogo perguntando se o usurio deseja ou no realizar a mdia para outra sala.
while ( escolha != 0 ) {

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

41

Grupo iPED - Curso de Java

Vamos agora ao cdigo da classe e sua posterior explicao:


Classe mediaClasse.java
01 - /*
02 - PROGRAMA: mediaClasse.java
03 - AUTOR........: Edison Pires
04 - OBS............: Este programa determina a media de notas de
uma classe
05 - */
06 - import javax.swing.JOptionPane;
07 - import java.text.DecimalFormat;
08 - public class mediaClasse {
09 public static void main( String args[] )
10 {
11 int escolha;
12 double notasLidas, media, total, alunos,
valorNota;
13 String quantidade, nota, continua, exibir;
14 -

escolha = 1;

15 -

while ( escolha !=

16 17 -

) {

total = 0;
notasLidas = 1;

18 quantidade = JOptionPane.showInputDialog("Qual a
nmero de alunos? <entre
um nmero inteiro>:
);
20
21
um
22
23
24
25

19 alunos = Double.parseDouble(quantidade);

while ( notasLidas <= alunos ) {


nota = JOptionPane.showInputDialog("Entre
numero para nota: " );
valorNota = Double.parseDouble( nota );
total = total + valorNota;
notasLidas = notasLidas + 1;
} //Final do while notasLidas

26 -

media = total / alunos;

27 "0.00" );

DecimalFormat mostraDecimal = new DecimalFormat(

28 42

exibir = "A Mdia da Classe :


Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


"+mostraDecimal.format( media );
29 -

JOptionPane.showMessageDialog(null,exibir,
"Mdia da
Classe",JOptionPane.INFORMATION_MESSAGE );
30 OUTRO CALCULO?

continua = JOptionPane.showInputDialog("EFETUA

<0=sair / 1=Continuar>);
escolha = Integer.parseInt( continua );
//Final do while escolha

31 32 -

33 -

System.exit( 0 );

34 -

} //Final do metodo main()

35 - } //Final da Declarao de Classes


Explicao da Classe mediaClasse.java
01 - 02 - 03 - 04 - 05
Linha de comentrio, recordando que em Java podemos usar // ou /* */
06 - import javax.swing.JOptionPane;
Esta linha diz ao compilador para carregar a classe JOptionPane que esta no
pacote javax.swing. Este pacote contm classes e interfaces para componentes
de interface grfica. Este pacote esta no arquivo rt.jar na pasta \jdk\jre\lib.
07 - import java.text.DecimalFormat;
Esta linha diz ao compilador para carregar a classe DecimalFormat que esta no
pacote java.text. Este pacote contm classes para definir a apresentao de dados
na interface grfica, a classe DecimalFormat usada para definir como os
nmeros sero exibidos na interface.
08 - public class mediaClasse {

Inicia uma definio de classe para a classe mediaClasse.


A palavra-chave public um modificador de acesso a membros de uma classe. A
palavra reservada public indica que as classes so acessveis onde quer que o
programa faa uma referencia a um objeto.

09 - public static void main( String args[] )


Os aplicativos Java automaticamente comeam executando em main. Os
parnteses depois de main indicam que um bloco de construo de programa
chamado mtodo.
Os mtodos realizam tarefas e retornam informaes, a palavra void indica que
esse mtodo realizar uma tarefa, mas no retornar nenhuma informao quando
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

43

Grupo iPED - Curso de Java


completar sua tarefa.
Quando escrevemos uma aplicao Java, podemos passar argumentos. O
ambiente Java coloca cada argumento em uma string e ento passa o vetor de
strings para o mtodo main(). Usamos para passar argumentos o vetor args[], em
nosso programa no passaremos nenhum argumento, portanto args um vetor de
strings vazio.
Uma varivel de classe static define que todos os objetos da classe
compartilham a mesma parte dos dados, desta forma possvel se economizar
memria.
11 - int escolha;
12 - double notasLidas, media, total, alunos, valorNota;
13 - String quantidade, nota, continua, exibir;
Declarao das variveis a serem usadas na classe mediaClasse
14 - escolha = 1;
Inicia a varivel escolha atribuindo o valor um, isto garante que o aplicativo execute
o lao While a partir da linha 15.
15 - while ( escolha != 0 ) {
Executa o lao While enquanto a condio for verdadeira.
Este lao se encerra na linha 32
Poderamos ler esta instruo como: Execute enquanto escolha for diferente de
zero.
Quando o usurio digita o nmero zero na caixa de dialogo (linha 32) o lao
encerrado e o programa continua a execuo a partir da linha 33.
16 - total = 0;
17 - notasLidas = 1;
Inicia as variveis total e notasLidas.
aconselhvel que se inicie variveis caso estas sejam utilizadas para clculos.
18 - quantidade = JOptionPane.showInputDialog("Qual a nmero de alunos? <entre
um nmero inteiro>: " );

Exibe uma mensagem na caixa de dialogo JoptionPane, usando o mtodo


showInputDialog. A string lida atribuda a varivel quantidade.

19 - alunos = Double.parseDouble(quantidade);
A classe Double com o mtodo parseDouble converte seu argumento string
em um nmero REAL, ou seja, um nmero com casas decimais.
O nmero REAL retornado por Double.parseDouble atribudo a varivel
quantidade.
Esta converso necessria porque toda entrada em uma janela JOptionPane
44

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


tratada como string, e no possvel fazer operaes aritmticas com strings.
20 - while ( notasLidas <= alunos ) {
Executa o lao While enquanto a condio for verdadeira.
Este lao se encerra na linha 25.
Poderamos ler esta instruo como: Execute enquanto notasLidas for diferente de
alunos.
Quando o usurio digita o nmero de alunos, o valor armazenado na varivel
alunos. O lao encerrado quando o contedo da varivel notasLidas for maior
que o contedo da varivel alunos.
21 - nota = JOptionPane.showInputDialog("Entre um numero para nota: " );
Exibe uma mensagem na caixa de dialogo JoptionPane, usando o mtodo
showInputDialog.
A
string
lida

atribuda
a
varivel
nota.

22 - valorNota = Double.parseDouble( nota );


O nmero REAL retornado por Double.parseDouble atribudo a varivel
valorNota.
23 - total = total + valorNota;
Atribu a varivel total o resultado da soma
24 - notasLidas = notasLidas + 1;
Atribu a varivel notasLidas o resultado da soma.
Esta linha usada para controlar a execuo do lao While.
A cada execuo do lao eu incremento o contador notasLidas.
26 - media = total / alunos;
Atribu a varivel media o resultado da diviso de total por aluno
Esta a linha responsvel por calcular a mdia das notas da classe.
27 - DecimalFormat mostraDecimal = new DecimalFormat( "0.00" );
Declara mostraDecimal como uma referncia para um objeto da classe
DecimalFormat.
A classe DecimalFormat utilizada para formatar nmeros.
Neste exemplo, queremos dar sada aos valores com dois dgitos direita do ponto
decimal.
O objeto DecimalFormat inicializado com o String "0.00". Cada 0 um flag de
formato que especfica uma posio.
O operador new cria um objeto enquanto executa o programa.
O processo de criar objetos conhecido como criar uma instncia ou instanciar
um objeto.
28 - exibir = "A Mdia da Classe : "+mostraDecimal.format( media );
Atribu a varivel exibir a string A Mdia da Classe :.
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

45

Grupo iPED - Curso de Java

Exibe o contedo da varivel media formatada para exibir nmeros com duas
casas aps a virgula.

29 - JOptionPane.showMessageDialog(null,exibir,
"Mdia da Classe",JOptionPane.INFORMATION_MESSAGE );
Exibe uma mensagem na caixa de dialogo JoptionPane, usando o mtodo
showMessageDialog.

30 - continua = JOptionPane.showInputDialog("EFETUA OUTRO CALCULO?


<0=sair / 1=Continuar>" );

Exibe uma mensagem na caixa de dialogo JoptionPane, usando o mtodo


showInputDialog. A string lida atribuda a varivel continua.

Para este programa vamos criar um atalho na rea de trabalho do Windows, pois o
usurio no tendo conhecimento do Java no vai saber como executar o programa, siga
os seguintes passos:
Vamos criar um arquivo de lote para chamar e executor Java e interpretar a
classe. Para criar este arquivo podemos usar qualquer editor de texto.
MediaClasse.bat
Cls
java mediaClasse
exit
Em seguida vamos incluir o atalho na rea de trabalho:
Clique no boto direito do mouse e escolha criar / novo atalho.
Na caixa Criar Atalho procure o arquivo com o nome: mediaClasse.bat
Clique no boto Avanar.
Digite um Nome para o atalho.
Escolha um cone para o atalho.
46

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


Clique em concluir.
Programa para calculo de salrio com estrutura de seleo if
Codificar um programa que permita a entrada de um valor do salrio recebido por
hora, e o valor de quantidades de horas trabalhadas.
A partir destas entradas calcular o salrio bruto a receber.
Se o salrio bruto for menor do que 500.00 o valor do desconto de INSS ser de 8%.
Se o salrio bruto for maior ou igual a 500.00 e menor ou igual a 1000.00, o valor do
desconto de INSS ser de 9%.
Se o salrio bruto for maior do que 1000.00, o valor do desconto de INSS ser de 10%.
Exibir o resultado:
Valor do Salrio Bruto
Valor referente ao desconto de INSS
- Valor do salrio liquido.

Classe salarioDecisao.java
01 - /* PROGRAMA.: salarioDecisao.java
02 AUTOR.........: Edison Pires
03 DESCRIO.: Efetua o calculo do salrio a receber tomando
uma deciso a partir do 04 - indice de INSS
05 - */
06 - import javax.swing.JOptionPane;
07 - import java.text.DecimalFormat;
08 - public class salarioDecisao {
09 public static void main( String args[] )
10 {
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

47

Grupo iPED - Curso de Java


11 double shora,htrab,sbruto,inss,sliq;
12 String resposta, input_shora,
input_htrab,output;
13 int resp;
14 15 -

do
{

16 17 -

inss=0;
sliq=0;

18 -

input_shora = JOptionPane.showInputDialog(
"Quanto o funcionario ganha por

hora?");
19 -

input_htrab = JOptionPane.showInputDialog(
"Quantas horas o funcionario

trabalhou no mes?");
20 21 22 -

shora=Double.parseDouble( input_shora );
htrab=Double.parseDouble( input_htrab );
sbruto=shora*htrab;

23 24 25 -

if ( sbruto < 500 ) {


inss=(sbruto*8)/100;
}

26 27 28 -

if ( sbruto >= 500 && sbruto <= 1000 ) {


inss=(sbruto*9)/100;
}

29
30
31
32

if ( sbruto > 1000 ) {


inss=(sbruto*10)/100;
}
sliq=sbruto-inss;

33 DecimalFormat twoDigits = new


DecimalFormat( "0.00" );
34 output="Salario Bruto........:
"+twoDigits.format( sbruto )
35 +"nDesconto do INSS:
"+twoDigits.format( inss )
36 +"nSalario Liquido......:
"+twoDigits.format( sliq );
37 -

JOptionPane.showMessageDialog(null,output,
"Resultado dos
calculos",JOptionPane.INFORMATION_MESSAGE );
38 resposta =
JOptionPane.showInputDialog("EFETUA OUTRO CALCULO S/N?
48
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

<1=S> ");
resp = Integer.parseInt( resposta );

39 40 );

}while( resp == 1

41 42 43 - }

System.exit( 0 );
}

Estrutura de controle lao FOR


A estrutura FOR pode ser tratada como uma repetio controlada por contador. A
estrutura de repetio FOR cuida de todos os detalhes da repetio controlada por
contador.
O incremento de uma estrutura FOR pode ser negativo, caso em que ele
decrementado e o lao na realidade conta para baixo: Exemplo de lao for:
for(int i = 1 ; i <= 100;
I++)
for( int i = 100; i >= 1;
i-)
for( int i = 7; i >= 77; I
+= 7)
for( int i = 20; i >= 2; I = 2)

Varivel de controle variando de 1 a 100 com


incremento de 1
Varivel de controle decrementando de 100 a 1 com
decremento de 1
Varivel de controle variando de 7 a 77 em
incrementos de 7
Varivel de controle variando de 20 a 2 em
incrementos de 2

Abaixo um programa usando um lao for


Uma pessoa investe um determinado valor em conta poupana, que rende juros de
x% ao ano. Assumindo que todo o juros e deixado em deposito, calcule e imprima a
quantidade de dinheiro na conta no fim de cada ano por 10 anos.
A formula para calcular este investimento a seguinte:
vrInvestido(1+taxaJuros) elevado ao numerodeAnos.

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

valorTotal =

49

Grupo iPED - Curso de Java

1- // Programa...:Investe.java
2- // Autor.........: Edison Pires
3- // Data.......: 30/01/2003
4- // Descrio..:Programa que calculo o rendimento de um valor
investido por dez anos
567-

import java.text.DecimalFormat;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;

8- public class Investe {


9public static void main( String args[] )
10{
11double valorTotal,vrInvestido,taxaJuros,
rendimento;
12int numeroAnos,ano;
13String
input_vrInvestido,input_taxaJuros,input_numeroAnos;
14");

input_vrInvestido = JOptionPane.showInputDialog(
"Entre com o valor a investir:

15-

input_taxaJuros = JOptionPane.showInputDialog(
"Entre com a taxa de juros
anual (no formato 0.00): ");
16-

input_numeroAnos = JOptionPane.showInputDialog(
"Investimento por quantos anos?

: ");
17vrInvestido = Double.parseDouble(
input_vrInvestido );
18taxaJuros = Double.parseDouble( input_taxaJuros
);
19numeroAnos = Integer.parseInt( input_numeroAnos);
2050

DecimalFormat precisionTwo = new DecimalFormat(


Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


"0.00" );
21-

JTextArea outputTextArea = new JTextArea();

22outputTextArea.append( "Ano \t Valor Total


Depositado \n\n" );
23for ( ano = 1; ano <= numeroAnos; ano++ ) {
24valorTotal = vrInvestido * Math.pow(1+
taxaJuros, ano );
25outputTextArea.append( ano +
"\t"+precisionTwo.format( valorTotal )+"\n" );
26}
27-

JOptionPane.showMessageDialog(
null,
outputTextArea, "Resultado da Aplicacao",
JOptionPane.INFORMATION_MESSAGE );
282930- }

System.exit( 0 );
}

21- JTextArea outputTextArea = new JTextArea( );


Declara a referncia JTextArea em outputTextArea e a inicializa com um novo
objeto da classe JTextArea.
Um JTextArea um componente GUI que capaz de exibir muitas linhas de
texto.
Este componente GUI permitir rolar pelas linhas de texto usado quando as
sadas de texto contero linhas demais para exibio em janelas comum.
Linhas 22 e 25
Exibe uma informao na janela de textos
\t um caractere de tabulao
Espao de tabulao ajusta-se a quantidade de colunas a apresentar
APPEND um mtodo para colocar texto em uma janela JTextArea.
EXPLICAO DO CDIGO
7- import javax.swing.JTextArea;
Classe utilizada par definir uma rea de texto
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

51

Grupo iPED - Curso de Java

20- DecimalFormat precisionTwo = new DecimalFormat( "0.00" );


Formata a apresentao com um digito a esquerda e dois a direita, com uma
preciso de duas casas decimais
23- for ( ano = 1; ano <= numeroAnos; ano++ ) {
A estrutura for executa seu corpo atribuindo o valor da varivel numeroAnos em
incrementos de 1
24- valorTotal = vrInvestido * Math.pow(1+ taxaJuros, ano );
Java no inclui operador de exponenciao. Em vs disso, utilizamos o mtodo
pow da classe Math para este propsito.
Math.pow(x,y) Calcula o valor de x elevado a potencia y.
Estrutura de seleo mltipla SWITCH
Ocasionalmente em nossos programas podemos ter a necessidade de escolher
uma entre varias decises a serem seguidas, quando temos que tomar uma deciso
podemos usar o IF, para caso de uma escolha entre duas opes usamos o IF/ELSE,
para o caso de uma seleo mltipla podemos usar o SWITCH/CASE.
No exemplo a seguir temos um programa onde o usurio escolhe o tipo de
investimento que quer fazer, e o SWITCH/CASE define qual ser o rendimento da
aplicao.
Codificar um programa para calculo de aplicaes financeiras usando o comando
case onde o usurio deve entrar o valor a ser aplicado, e escolher entre os seguintes
investimentos:
1 Aes com rendimento de 13%,
2- Dlar com rendimento de 10%,
3- Renda Fixa com rendimento de 7%,
4- Poupana com rendimento de 3%,
5- Ttulos pblicos com rendimento de 5%,
O programa deve testar se a escolha for igual a zero ou maior que 5 e exibir uma
mensagem de alerta, o valor a ser investido no pode ser inferior a R$ 500.00, caso o
usurio digite um valor menor exibir uma mensagem e encerrar o programa.

52

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

1- // Programa: Aplica.Java
2- // Autor.......: Edison Pires
3- //Descrio: Programa para calcular aplicaes financeira
usando SWITCH/CASE
45-

import javax.swing.JOptionPane;
import java.text.DecimalFormat;

6- public class Aplica {


7public static void main ( String args[] )
8{
9String input_valor, input_tipo;
10double valor, rendimento;
11int escolha;
12-

rendimento = 0;

13input_valor = JOptionPane.showInputDialog("Valor
a ser investido:");
14valor = Double.parseDouble( input_valor );
15input_tipo
de Investimento"+" \n\n"+

= JOptionPane.showInputDialog("Tipo

Aes"+"\n\n"+

"1-

"2- Dolar"+"\n\n"+
"3- Renda Fixa"+"\n\n"+
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

53

Grupo iPED - Curso de Java


"4- Poupana"+"\n\n"+
"5- Titulos Pblicos"+"\n\n");
16-

escolha = Integer.parseInt( input_tipo );

17switch( escolha ) {
18case 1:
19rendimento=(valor*13)/100;
20break;
21case 2:
22rendimento=(valor*10)/100;
23break;
24case 3:
25rendimento=(valor*7)/100;
26break;
27case 4:
28rendimento=(valor*3)/100;
29break;
30case 5:
31rendimento=(valor*5)/100;
32break;
33default:
34JOptionPane.showMessageDialog(null,
"Valor escolhido invalido!!");
35System.exit( 0 );
36}
37if( valor < 500)
38{
39JOptionPane.showMessageDialog(null, "No
possvel investir menos que R$ 500,00",
"ERRO",
JOptionPane.INFORMATION_MESSAGE );
40System.exit( 0 );
41}
42);
43-

DecimalFormat precisaoDupla = new DecimalFormat( "0.00"


precisaoDupla.format( rendimento );

44JOptionPane.showMessageDialog(null, "Seu rendimento


ser de: " + rendimento,
"RENDIMENTO",
JOptionPane.INFORMATION_MESSAGE );
45System.exit( 0 );
46}
47- }
54

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


A experincia mostrou que a melhor maneira de desenvolver e manter um programa
grande constru-lo a partir de pedaos pequenos e simples ou mdulos. Os mdulos em
Java so chamados de mtodos e classes.

Os mtodos permitem ao programador modularizar um programa.

Todas as variveis declaradas em definies de mtodo so variveis locais


so conhecidas somente no mtodo em que so definidas.

A maioria dos mtodos tem uma lista de parmetros que fornecem o meio de
passar informaes entre mtodos via chamada de mtodos. Os parmetros de um
mtodo tambm so variveis locais.

H vrias motivaes para modularizar um programa com mtodos. A


abordagem de dividir e conquistar torna o desenvolvimento de programa mais
gerencivel. Outra capacidade a reutilizao de software.

Com boas convenes de nomeao e definio de mtodos, pode-se criar


programas a partir de mtodos padronizados em vez de constru-los utilizando
cdigo personalizado.

Por exemplo, no precisamos definir como converter Strings em inteiros e em


nmeros de ponto flutuante esses mtodos j esto definidos para ns na classe
Interger(parseInt) e na classe Double(parseDouble).

A Java API fornece uma rica coleo de classes e mtodos para realizar
clculos matemticos comuns, manipulao de strings, manipulaes de
caracteres, entrada/sada, verificao de erros e muitas outras operaes teis.

O programador pode escrever mtodos para definir tarefas especficas que


podem ser utilizadas em muitos pontos do programa.

A sintaxe dos mtodos a seguinte:

especificadorAcesso tipoRetorno nomeMetodo (lista de parmetros) {

corpo do mtodo
}

Vamos propor um exemplo para uma fcil compreenso:

Imaginemos uma lmpada. Podemos assumir que uma lmpada pode estar acesa
ou apagada, o que caracteriza um estado lgico, denominado acesa, no qual: acesa =
55
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


true equivale a est acesa e acesa = false equivale a no est acesa. No mundo real,
ns no fazemos uma lmpada acender ou desligar diretamente, mas acionamos algo
(um interruptor) que faz com que ela funcione como o desejado, o que pode ser
interpretado como o envio de uma mensagem do tipo ligar e desligar para a lmpada.
Uma classe que modela uma lmpada com o comportamento descrito poderia ser escrita
como:
// Classe Lmpada
1- public class Lmpada {
2// atributos
3boolean acesa;
4567-

// mtodos
public void ligar() {
acesa = true;
}

891011- }

public void desligar() {


acesa = false;
}

A classe Lmpada modelada tem um atributo lgico acesa, que identifica o estado
atual da lmpada. Alm desse atributo, podemos identificar dois mtodos ligar() e
desligar(), que fazem com que o estado da lmpada seja adequadamente modificado para
verdadeiro e falso, conforme a mensagem enviada ao objeto lmpada.

O mtodo declarado como pblico, pois desejamos que seja utilizado


externamente classe Lmpada por outras classes que criem instncias do objeto
Lmpada.

A palavra reservada void indica que no existe um valor de retorno, isto o


mtodo no devolve uma mensagem informando o resultado da operao.

Este mtodo tambm no possui uma lista de parmetros, indicado pelos


parnteses vazios, no recebendo valores.

Para utilizarmos um mtodo de uma classe usamos a seguinte sintaxe:

nomeObjeto.nomeDoMetodo( argumentos);
56

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

A seguir, um programa de exemplo, no qual criamos um arquivo separado


(LamTeste.Java) com outra classe (LampTest), em que instanciamos um objeto Lmpada
e utilizamos seus mtodos.
1-

// LampTeste.Java

2- public class LampTeste {


3public static void main(String args[]) {
4Lampada lamp = new Lampada(); //instanciao do objeto
(cdigo acima).
5Lamp.ligar();
6System.out.println(Lampada
Acesa=+lamp.acesa;
7Lamp.desligar();
8System.out.println(Lampada
Acesa=+lamp.acesa;
9}
10- }

Ligada.

Desligada.

Na classe Lmpada, nenhum dos mtodos recebe parmetros, ou seja, eles


sempre realizam suas aes com base nas mesmas informaes, o que leva a um
comportamento idntico.
Na declarao de mtodos, pode ser especificada uma lista de tipos e nomes das
variveis, tal lista denominada lista de parmetros, se o mtodo receber parmetros
este devem ser colocados no interior dos parnteses se houver mais que um, devem ser
separados por uma virgula.
Em vez de definirmos dois mtodos para controlar o estado de acender a lmpada
na classe Lmpada, poderamos ter escrito um nico mtodo, capaz de receber qual
estado assumir, como abaixo:
// classe Lampada2
public class Lampada2 {
//Atributos
boolean acesa;
//Metodo
public void estaAcesa (boolean estado) {
acesa = estado;
}
}
O mtodo estaAcesa() capaz de receber um nico valor booleano como parmetro,
definindo o valor do campo acesa com tal valor. Se o valor recebido for true, a lmpada
ter seu estado acessa ajustado para esse valor, acontecendo o mesmo quando o valor
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

57

Grupo iPED - Curso de Java


recebido for false.
====================================================================
==============

Um mtodo em Java similar a funo em C/C++ ou qualquer outra linguagem


Um mtodo declarado dentro de uma classe e pertence a mesma classe.
Um mtodo pode ser chamado da seguinte forma
objeto.metodo()

Os programas Java so escritos combinando novos mtodos e classes que o


programador escreve com mtodos pr-empacotados e classes disponveis na Java API
(tambm referida como biblioteca de classes Java)
Exemplos de mtodos de classes Java:
Pacote

Classe/Objeto

Mtodo

javax.swing

JoptionPane

ShowInputDialog()

Java.lang
(importado
automaticamente
pelo compilador)
javax.swing
javax.swing
Java.lang
(importado
automaticamente
pelo compilador)

Integer

parseInt()

JoptionPane

showMessageDialog()

JTextComponent

JTextArea()

Math

Pow()

Parmetro
Mensagem de
entrada para o
usurio
String a ser
convertida
Mensagem de
sada para o
usurio

Valor, expoente

EXEMPLOS:
Exemplo 1
public class metodoExemplo1 {
public void testaMetodo1()
{
System.out.println ("Metodo Um");
}

58

public void testaMetodo2 (String nome)


{
System.out.println (nome);
}
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

public void testaMetodo3 (int a, String nome)


{
System.out.println ("Meu nome: "+ nome +"
e minha idade: " + a);
}
public static void main (String args[]) {
metodoExemplo1 TC = new metodoExemplo1 (
);

TC.testaMetodo1( );
TC.testaMetodo2("Programando Metodos com

Java");
}

TC.testaMetodo3 (42, "Edgar");

}
TELA DE SADA

Exemplo 2
Este exemplo j foi feito sem uso de mtodos
import javax.swing.JOptionPane;
public class metodoExemplo2 {
public void soma()
{
String primNumero,secNumero;
int numero1,numero2,soma;
primNumero=JOptionPane.showInputDialog(
"Entre com o primeiro numero inteiro" );
secNumero =JOptionPane.showInputDialog(
"Entre com o segundo numero inteiro" );
numero1 = Integer.parseInt( primNumero );
numero2 = Integer.parseInt( secNumero );
soma = numero1 + numero2;
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

59

Grupo iPED - Curso de Java


JOptionPane.showMessageDialog(null, "O
numero e: "+soma,
"Resultado",JOptionPane.PLAIN_MESSAGE );
System.exit(0);
}

);

public static void main (String args[]) {


metodoExemplo2 TC = new metodoExemplo2 (
TC.soma( );

}
}

Exemplo 3
public class metodoExemplo3 {
public static void main (String args[]) {
metodoExemplo3x TC = new metodoExemplo3x(
);
TC.soma();
}
}
import javax.swing.*;
public class metodoExemplo3x {
String primNumero,secNumero;
int numero1,numero2,soma;
public void soma(){
primNumero=JOptionPane.showInputDialog(
"Entre com o primeiro numero inteiro" );
secNumero =JOptionPane.showInputDialog(
60

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


"Entre com o segundo numero inteiro" );
numero1 = Integer.parseInt( primNumero );
numero2 = Integer.parseInt( secNumero );
soma = numero1 + numero2;
JOptionPane.showMessageDialog(null, "O
numero e: "+soma,
"Resultado",JOptionPane.PLAIN_MESSAGE );
System.exit(0);
}
}

Exemplo 4
/* Programa.......: Quadrado.Java
Modificado Por.: Edison Pires
Obs............: Demostra o uso de metodos
*/
import javax.swing.*;
public class Quadrado {
public static void main( String args[] )
{
int resultado;
JTextArea saida = new JTextArea();
for ( int x = 1; x <= 10; x++ ) {
resultado = quad( x );
saida.append("O Quadrado de " + x + " = " + resultado
+ "\n");
}
JOptionPane.showMessageDialog(null,saida,
"Quadrado dos
Nmeros",JOptionPane.INFORMATION_MESSAGE);
}
// Mtodo chamado para calcular o quadrado de numero
public static int quad( int y )
{
return y * y;
}
}

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

61

Grupo iPED - Curso de Java

SOBRECARGA DE MTODOS
Java permite que vrios mtodos com o mesmo nome sejam definidos, contando
que estes mtodos tenham diferentes conjuntos de parmetros. Isto chamado de
sobrecarga de mtodos.
Quando um mtodo sobrecarregado chamado, o compilador seleciona o mtodo
adequado.

examinando o nmero;
os tipos;
ordem dos argumentos na chamada.

Estas informaes so usadas para realizar a mesma tarefa em tipos de dados


diferentes.
Abaixo segue um exemplo programa com mtodo sobrecarregado
/* Programa....: Quadrado2.java
Alterado por: Edison Pires
Obs.........: Demostra o uso de metodos sobrecarregados
*/
import javax.swing.*;
public class Quadrado2 {
public static void main( String args[] )
{
int resultado;
JTextArea saida = new JTextArea();
saida.append(
"O quadro inteiro de 1 = "+quad( 1 ) +
"O quadrado real de 1.5 = "+quad( 1.5) +
"O quadro inteiro de 2 = "+quad( 2 ) +
"O quadrado real de 2.5 = "+quad( 2.5) +
"O quadro inteiro de 3 = "+quad( 3 ) +
62
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

"\n"
"\n"
"\n"
"\n"
"\n"

+
+
+
+
+

Grupo iPED - Curso de Java


"O quadrado real de 3.5 = "+quad( 3.5));
JOptionPane.showMessageDialog(null,saida,"Quadrado dos
Nmeros",JOptionPane.INFORMATION_MESSAGE);
}
// Mtodo chamado para calcular o quadrado de numero inteiro
public static int quad( int a )
{
return a * a;
}

// Mtodo chamado para calcular o quadrado de numero inteiro


public static double quad( double b )
{
return b * b;
}

Agora, investigamos a orientao a objetos em Java em maior profundidade. Por que


adiamos isso at o momento? Os objetos que construiremos sero compostos, em parte,
com fragmentos de programao estruturada, portanto precisamos estabelecer uma base
em programao estruturada com estruturas de controle.

Em C e em outras linguagens de programao procedurais, a programao tende a ser


orientada a ao. Em Java, programao orientada a objetos.

Em C, a unidade de programao a funo, que em Java chamada de Mtodos, em


Java a unidade de programao a classe a partir da qual os objetos so instanciados.

Aplicaes grficas so aquelas destinadas execuo dentro dos ambientes grficos


oferecidos por vrios sistemas operacionais.

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

63

Grupo iPED - Curso de Java

Uma GUI (Graphical User Interface) um ambiente que oferece uma interface
padronizada mais simples e intuitiva para os usurios.
A linguagem Java oferece capacidades nicas no desenvolvimento de aplicaes
grficas que, sem modificao ou sem precisar realizar uma nova compilao, podem ser
executadas em diferentes ambientes grficos.
Os componentes da Interface Grfica com o usurio, so os elementos
construtivos das interfaces grficas, isto , botes, caixas de entrada de texto, caixas de
lista, caixas de seleo, etc.
O Java oferece uma ampla biblioteca de componentes de interfaces grficas e de
capacidades grficas, na forma de classes pertencentes ao seu pacote Java.awt.
A AWT uma biblioteca que implementa um mecanismo peer-to-peer, isto , cada
classe correspondente a um componente AWT uma casca para acesso aos
componentes nativamente implementados em cada sistema operacional.
As classes da interface de usurio Java fazem seu trabalho atravs dos objetos,
chamados de componentes leves que no se ligam aos objetos iguais do sistema
operacional nativo. Ao contrrio, eles suportam a aparncia de conexo.
Cada JVM implementa as chamadas adequadas para que a funcionalidade
desejada de cada componente seja obtida; sendo assim, a AWT uma interface
padronizada para acesso s diferentes bibliotecas de componentes das diversas
interfaces grficas aceitas pelo Java.
Uma classe chamada Toolkit permite obter informaes sobre o sistema grfico
em uso pela JVM.
A classe AWT do pacote java implementa componentes e facilidades que podem
ser reproduzidos de forma equivalente entre diversas plataformas, garantindo o Maximo
de portabilidade.
ALGUNS COMPONENTES DA AWT
Java.awt.Button
Java.awt.Label

Java.awt.Checkbox
Java.awt.ScrollBar

Java.awt.Container
Java.awt.Text

Quando construmos um boto, por exemplo, construmos aplicaes que faro o


mesmo uso desse componente, independente de estarmos executando a aplicao no
Microsoft Windows, Unix X Windows ou Apple, ou em qualquer outra plataforma
compatvel.

Mesmo que a aparncia dos componentes seja diferente, o comportamento e a


64

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


funcionalidade durante a operao sero os mesmos.
Na verso 2 do Java foi introduzido um novo pacote denominado javax.swing,
que melhorou a funcionalidade e a apresentao de interfaces grficas. Foram
introduzidos muitos recursos que antes necessitavam ser definidos por meio de
codificao de mtodos ou classes.
so completamente escritos em Java e portanto mais leves. No dependendo do
sistema de janela da plataforma local para determinar sua funcionalidade e aparncia e
comportamento.
O componente Swing que derivam da subclasse Jcomponent tem muitos
recursos:

Teclas de atalho;
Capacidades comuns de tratamento de eventos para casos onde vrios
componentes GUI iniciam as mesmas aes em um programa;
Breve descrio do propsito de um componente, exibido quando o cursor de
mouse posicionado sobre o componente;
E outras diversas;

ALGUNS COMPONENTES DO SWING


javax.swing.JButton
javax.swing.JCheckbox
javax.swing.JLabel
javax.swing.JTextField
javax.swing.JFrame
javax.swing.JRadioButton
Superclasses comuns de muitos dos componentes Swing

JFrame
Um JFrame uma janela com uma barra de ttulo e uma borda. A classe JFrame
uma subclasse do java.awt (que uma subclasse de java.awt.Windows). Como tal, um
dos poucos componentes GUI do Swing que no considerado um componente de peso
leve.
O lugar para desenhar chamado de container e derivado da classe
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

65

Grupo iPED - Curso de Java


java.awt.Container. Classes derivadas de Container tambm so containeres, isto ,
tambm podem conter outros componentes.
O componente JFrame uma subclasse de Container, que uma espcie de
compartimento em que outros componentes podem ser adicionados e posicionados.
A classe Container define o conjunto de mtodos que podem ser aplicados a um
objeto de qualquer subclasse de Container. Um mtodo muito usado para adicionar
componentes a classe Container o mtodo add. Outro mtodo que origina na classe
Container setLayout, que utilizado para especificar o gerenciador de layout que
ajudam um Container a posicionar e dimensionar seus componentes.
Um componente JFrame sendo uma janela, gera eventos do tipo WindowsEvent,
relacionados :

Abertura;
Fechamento;
Apresentao de cones;
Ativao;
Desativao

// df.Java
// Demonstra como utilizar o componente Frame
0- import javax.swing.*;
1- import java.awt.*;
2- public class df extends JFrame
3- {
4public df()
5{
6setTitle("Demonstrao de uma janela JFrame");
7setLocation(50,50); //coordenadas x e y em pixels
8setSize(320,160);
//coordenadas x e y em pixels
9}
101166

public static void main(String args[])


{
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


12131415- }

df janela = new df();


janela.show();
}

Explicao do cdigo
// df.Java
// Demonstra como utilizar o componente Frame
0- import javax.swing.*;
Importa o pacote javax.swing para utilizao da classe JFrame
1- import java.awt.*;
importa o pacote java.awt para implementar a classe Window e Container
2- public class df extends Jframe
Em Java, a indicao da construo de uma classe pela herana feita juntamente
com sua declarao por meio da palavra reservada extends, seguida do nome da
classe que ser usada como base.
A herana o compartilhamento de atributos e operaes entre classes, com base
num relacionamento hierrquico do tipo pai e filho, ou seja a classe pai tomada
como referncia, contendo definies que podero ser utilizadas nas classes
definidas como filhas.
A classe pai denominada de SUPERCLASSE
A classe filha denominada de SUBCLASSES

3- {
4

public df()
Esta instruo identificada como mtodo construtor.
Mtodos construtores so mtodos especiais, acionados pelo sistema no momento
da criao de um objeto.
O construtor responsvel pela alocao de memria e pelo preparo do
funcionamento do novo objeto.
O mtodo construtor pode definir a interface com o usurio, abrir arquivos, iniciar
comunicao, preparar dispositivos, carregar drives, etc.
Um construtor um mtodo com o mesmo nome da classe.
O construtor invocado automaticamente toda vez que o objeto dessa classe
instanciado.
67
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

56-

setTitle("Demonstrao de uma janela JFrame");


Exibe o titulo na barra de ttulos da janela

setLocation(50,50); //coordenadas x e y em pixels


Posiciona a interface na tela atravs das coordenadas x e y

setSize(320,160); //coordenadas x e y em pixels


Determina o tamanho que a janela deve ter

789-

10-

public static void main(String args[])


O mtodo main(), responsvel pela instanciao e exibio do JFrame

1112-

13

1415- }

df janela = new df();


Instanciao da classe df, criando um novo objeto, que referenciado por janela
janela.show();
Mtodo responsvel pela exibio do objeto.
}

Nenhum componente exibido, porque criamos uma janela sem contedo. Toda a
funcionalidade de uma janela esta disponvel, herdado da classe Window, que faz parte
do pacote Java.awt.
JLabel
A classe JLabel, conhecido tambm como rtulo de texto ou apenas rtulo,
destinado exibio de texto dentro de um componente do tipo container. JLabel uma
subclasse de JComponent que pertence ao pacote javax.swing.

Os rtulos exibem uma linha de texto que no podem ser editadas pelo usurio.
Exemplo de exibio de rtulos:

68

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

Cdigo para exibio da Interface acima


1- //rotulo.Java
2 -//Exibe um rtulo
3- import java.awt.*;
4- import javax.swing.*;
5- public class rotulo extends JFrame
6- {
7private JLabel label1,label2,label3;
8910-

public rotulo()
{
setTitle("Usando Rtulos na GUI");

1112-

Container app = getContentPane();


app.setLayout(null);

13label1 = new JLabel("Nome");


14label1.setBounds(15,10,70,20);
largura, altura
15app.add(label1);
16171819202122232425- }

//coluna, linha,

label2 = new JLabel("Sobrenome");


label2.setBounds(15,30,70,20);
app.add(label2);
}

setSize(250,150); //largura, altura

public static void main(String args[])


{
new rotulo().show();
}

Explicao do Cdigo
3- import java.awt.*;
importa o pacote java.awt para implementar a classe Window e Container
4- import javax.swing.*;
Importa o pacote javax.swing para utilizao da classe JFrame
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

69

Grupo iPED - Curso de Java

5- public class rotulo extends JFrame


Jframe a superclasse e rotulo a subclasse
A classe rotulo herda todo o comportamento da classe JFrame
7-

private JLabel label1,label2,label3;


Declarao de referncias aos objetos
O tipo de acesso privado, somente ser utilizado dentro do mtodo

8-

public rotulo()
Mtodo construtor chamado de rotulo, mesmo nome da classe que vai
implementar a interface com o usurio.

10-

setTitle("Usando Rtulos na GUI");


Exibe o titulo "Usando Rtulos na GUI" na barra de menus da janela

11

Container app = getContentPane();


Declara uma referencia a Container atribuindo o nome app
getContentPane(), retorna uma referncia para o Container utilizado para anexar
componentes

12-

app.setLayout(null);

Java possui gerenciadores de layout que implementam interfaces


especficas, as quais determinam como os componentes de um determinado
container sero arranjados. A dimenso dos componentes e a posio so
administradas pelo gerenciador de layout.

Podemos ter vrios gerenciadores de layout.

FlowLayout, GridLayout, BorderLayout, CardLayout e GridBagLayout.

setLayout(null), especfica que nenhum gerenciador de layout ser


utilizado, e portanto devemos definir a posio dos componentes no
container com o mtodo setBounds(coluna, linha, largura, altura)

131415

label1 = new JLabel("Nome");


label1.setBounds(15,10,70,20); //coluna, linha, largura, altura
app.add(label1);
Instanciao do objeto label1 que um componente Jlabel
Posio em que o objeto deve ser colocado no container
Adicionando o objeto ao container

JTextField
Esta classe oferece uma caixa de texto para exibio e edio de uma linha de
texto.
JButton
Esta classe exibe botes capazes de exibir um texto, uma imagem ou ambos. Um
70

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


boto de comando gera um ActionEvent, quando o usurio clica no boto com o mouse,
solicitando a implementao da interface ActionListener, ou seja, a codificao do
mtodo actionPerformed().
Vamos agora codificar um aplicativo onde iremos aplicar vrios princpios que
aprendemos at o momento.
CALCULO DE IMPOSTO A PAGAR
Codificar um programa que calcule o imposto de renda a pagar considerando-se os
seguintes dados como entrada:

Nmero de dependentes;
renda mensal;
valor do salrio mnimo

O rendimento ser calculado baseado em quantos salrios mnimos o nosso


contribuinte recebe por ms, dependendo de quantos salrios ele receba ser aplicada a
seguinte tabela:

Contribuintes que ganham at 2 salrios mnimos: Isento


Contribuintes que ganham cima de 2 salrios mnimos at 3 salrios mnimos:
10%
Contribuintes que ganham cima de 3 salrios mnimos at 5 salrios mnimos:
15%
Contribuintes que ganham cima de 5 salrios mnimos at 7 salrios mnimos:
20%
Contribuintes que ganham cima de 7 salrios mnimos:: 25%

Para cada dependente que o contribuinte tiver ser dado um desconto de 5%, este
valor ser descontado aps o calculo para verificar quantos salrios mnimos o
contribuinte recebe.
A interface do nosso aplicativo deve se apresentar da seguinte forma:

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

71

Grupo iPED - Curso de Java


Veremos agora como fica o cdigo deste nosso aplicativo:
1- // Imposto.Java
2- // Programa para calculo de imposto
3456-

import
import
import
import

java.awt.*;
java.awt.event.*;
javax.swing.*;
java.text.DecimalFormat;

7- public class Imposto extends JFrame implements ActionListener


8- {
9JLabel
dependenteLabel,rendaLabel,slmLabel,reasultadoLabel;
10JTextField
dependentesText,rendaText,slmText,resultadoText;
11JButton calcula;
1213141516-

public Imposto()
{
setTitle("Calculo de Imposto");
Container c = getContentPane();
c.setLayout( new FlowLayout () );

17dependenteLabel = new JLabel( "Nmero de


Dependentes: ");
18c.add( dependenteLabel );
19dependentesText = new JTextField( 10 );
20c.add( dependentesText );
21222324-

rendaLabel = new JLabel( "Renda Mensal: ");


c.add( rendaLabel );
rendaText = new JTextField( 10 );
c.add( rendaText );

25262728-

slmLabel = new JLabel( "Valor do Salrio Mnimo: ");


c.add( slmLabel );
slmText = new JTextField( 10 );
c.add( slmText );

2930313233-

reasultadoLabel = new JLabel( "Imposto a Pagar: ");


c.add( reasultadoLabel );
resultadoText = new JTextField( 10 );
resultadoText.setEditable( false );
c.add( resultadoText );

343536-

calcula = new JButton(" Calcular ");


calcula.addActionListener( this );
c.add( calcula );

72

37-

setSize(210,280);

//largura, altura

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


38-

39404142-

public void actionPerformed( ActionEvent e )


{
calcular();
}

43public void calcular()


44{
45double
renda,slm,calculo,desconto,imposto,imp_pagar,dependentes;
46String saida;
47imp_pagar=0;
48dependentes = Double.parseDouble(
dependentesText.getText() );
49renda = Double.parseDouble(
rendaText.getText() );
50slm = Double.parseDouble( slmText.getText() );
51calculo = renda/slm;
52desconto = ( dependentes*5);
5354555657-

if(calculo > 0 && calculo <=2)


{
imposto=0;
imp_pagar=0;
}

58if(calculo > 2 && calculo <=3)


59{
60imposto=(renda*10)/100;
61imp_pagar=imposto((imposto*desconto)/100);
62}
63if(calculo > 3 && calculo <=5)
64{
65imposto=(renda*15)/100;
66imp_pagar=imposto((imposto*desconto)/100);
67}
68if(calculo > 5 && calculo <=7)
69{
70imposto=(renda*20)/100;
71imp_pagar=imposto((imposto*desconto)/100);
72}
737475-

if(calculo > 7)
{
imposto=(renda*25)/100;
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

73

Grupo iPED - Curso de Java


76imp_pagar=imposto((imposto*desconto)/100);
77}
78"0.00" );
798081}
8283848586- }

DecimalFormat twoDigits = new DecimalFormat(


saida = twoDigits.format( imp_pagar );
resultadoText.setText( saida );

public static void main(String args[])


{
new Imposto().show();
}

Use a tabela abaixo para testar seu aplicativo, se os resultados exibidos em seu
aplicativo estiverem iguais aos valores da tabela, seu aplicativo esta ok!!!!.
DEP RENDA SAL. MNIMO NDICE A PAGAR
1
359,00
180,00
0
0,00
1
539,00
180,00
10
51,20
1
899,00
180,00
15
128,11
1 1259,00
180,00
20
239,21
1 1261,00
180,00
25
299,49
2
359,00
180,00
0
0,00
2
539,00
180,00
10
48,51
2
899,00
180,00
15
121,36
2 1259,00
180,00
20
226,62
2 1261,00
180,00
25
283,73
Explicando o cdigo de programa de imposto
1- // Imposto.java
2- // Programa para calculo de imposto
Linha de comentrios ignorada pelo compilador
3- import java.awt.*;
Pacote com classes com informaes sobre o sistema grfico oferecido pela
plataforma em que trabalha a JVM.
importa o pacote java.awt para implementar a classe Window e Container
4- import java.awt.event.*;
Pacotes com as classes e as interfaces dos eventos
As interfaces grficas so baseadas em eventos. Quando ocorre uma interao
com o usurio, um evento automaticamente enviado para o programa.
Informaes de eventos so armazenadas em um objeto de uma classe que
estende AWTEvent que est no pacote java.awt.event.
74

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


5- import javax.swing.*;
Componentes grficos mais avanados JApplet, JFrame, FPanel etc.
6- import java.text.DecimalFormat;
Permite apresentar um nmero em formato decimal
7- public class Imposto extends JFrame implements ActionListener
8- {
Declarao da classe imposto, como uma classe publica
Uma classe pode herdar atributos e comportamentos existentes (dados e mtodos)
de outra classe especificada. A classe imposto uma subclasse da classe JFrame.
Uma classe pode implementar uma ou mais interfaces. Uma interface especifica
um ou mais comportamentos (isto , mtodos). A interface ActionListener
Especifica que essa classe deve definir um mtodo (actionPerformed) para
processar a interao do usurio com o boto.
91011

JLabel dependenteLabel,rendaLabel,slmLabel,reasultadoLabel;
JTextField dependentesText,rendaText,slmText,resultadoText;
JButton calcula;
Declara uma referencia para cada componente a ser usado no aplicativo

public Imposto()
{
Mtodo construtor responsvel pelo desenho da interface

setTitle("Calculo de Imposto");
Exibe um titulo na barra de ttulos da janela

12131415

16

Container c = getContentPane();
Declara um referencia Container chamada c e atribui a ela o resultado de uma
chamada ao mtodo getContentPane, que retorna uma referencia a container para
anexar componente a interface
c.setLayout( new FlowLayout () );
Para administrar a posio e o tamanho dos componentes no container usamos o
mtodo setLayout.
O gerenciador de layout mais simples o FlowLayout, os componentes so
arranjados em linhas, sendo colocados da esquerda para a direita, na ordem em
que so adicionados

17

dependenteLabel = new JLabel( "Numero de Dependentes: ");


Instanciao de um objeto JLabel com a referencia dependenteslabel

c.add( dependenteLabel );
Anexa o objeto Jlabel dependenteslabel no container

dependentesText = new JTextField( 10 );


Instanciao de um objeto JTextField com a referencia dependentesText

18192021-

c.add( dependentesText );
rendaLabel = new JLabel( "Renda Mensal: ");
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

75

Grupo iPED - Curso de Java


222324-

c.add( rendaLabel );
rendaText = new JTextField( 10 );
c.add( rendaText );

25262728-

slmLabel = new JLabel( "Valor do Salrio Mnimo: ");


c.add( slmLabel );
slmText = new JTextField( 10 );
c.add( slmText );

29303132-

reasultadoLabel = new JLabel( "Imposto a Pagar: ");


c.add( reasultadoLabel );
resultadoText = new JTextField( 10 );
resultadoText.setEditable( false );
Especifica que a caixa de textos resultadoText no pode se editada/alterada

33-

c.add( resultadoText );

3435-

calcula = new JButton(" Calcular ");


calcula.addActionListener( this );
O mtodo addActionListener processa o evento quando o boto acionado
Este mtodo chama o mtodo actionPerformed na linha 39 para processar o
evento
O parmetro this indica que o processador de eventos esta na prpria classe

36-

c.add( calcula );

37

setSize(210,280); //largura, altura


Define o tamanho da janela

38-

39404142-

public void actionPerformed( ActionEvent e )


{
calcular();
}

4344454647-

public void calcular()


{
double renda,slm,calculo,desconto,imposto,imp_pagar,dependentes;
String saida;
imp_pagar=0;

484950-

dependentes = Double.parseDouble( dependentesText.getText() );


renda = Double.parseDouble( rendaText.getText() );
slm = Double.parseDouble( slmText.getText() );
o
O mtodo getText() l o contedo de um componente

5152-

calculo = renda/slm;
desconto = ( dependentes*5);

5376

if(calculo > 0 && calculo <=2)


Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


54555657-

5859606162-

if(calculo > 2 && calculo <=3)


{
imposto=(renda*10)/100;
imp_pagar=imposto-((imposto*desconto)/100);
}

6364656667-

if(calculo > 3 && calculo <=5)


{
imposto=(renda*15)/100;
imp_pagar=imposto-((imposto*desconto)/100);
}

6869707172-

if(calculo > 5 && calculo <=7)


{
imposto=(renda*20)/100;
imp_pagar=imposto-((imposto*desconto)/100);
}

7374757677-

if(calculo > 7)
{
imposto=(renda*25)/100;
imp_pagar=imposto-((imposto*desconto)/100);
}

imposto=0;
imp_pagar=0;
}

787980

DecimalFormat twoDigits = new DecimalFormat( "0.00" );


saida = twoDigits.format( imp_pagar );
resultadoText.setText( saida );
O mtodo setText exibe um contedo na caixa de textos resultadoText

81-

8283848586- }

public static void main(String args[])


{
new Imposto().show();
}

As classes que so utilizadas para criar componentes GUI so parte dos componentes
GUI do Swing do pacote javax.swing.
As GUIs so baseadas em eventos. Algumas interaes comuns so mover o
mouse, clicar o mouse, clicar em um boto, digitar um campo de texto, selecionar um item
de menu, fechar uma janela etc.
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

77

Grupo iPED - Curso de Java


Quando ocorre uma interao com o usurio, um evento automaticamente enviado
para programa.
As classes para tratamento de eventos esto no pacote java.awt.event, e so
utilizadas com os componentes do swing.
JCheckBox e JRadioButton
O componente JCheckBox representa uma caixa de opo e pode ser utilizado para
indicar conjunto de opes em que nenhuma, uma, ou vrias opes so selecionadas.
O componente JRadioButton um boto de opo e permite apresentar um
conjunto de opes em que apenas uma opo pode ser selecionada, necessitando da
definio de um grupo por meio da classe ButtonGroup.
01
02
de
03

- // Aplicativo1A.java
- // Demostra o uso de uma interface com o usurio para entrada
dados
- // No possui funcionalidade, somente implementa a interface

04 - import java.awt.*;
05 - import javax.swing.*;
06 - import java.awt.event.*;
07 - public class Aplicativo1A extends JFrame
08 - {
09 private JLabel lCodigo, lNome, lSobrenome, lSexo,
LTipoCartao;
10 private JTextField Codigo, Nome, Sobrenome;
11 private JRadioButton Masculino, Feminino;
12 private ButtonGroup Sexo;
13 private JCheckBox CD, VS;
14
15
16
17
18

public Aplicativo1A()
{
setTitle("Informaes de Clientes");
Container tela = getContentPane();
tela.setLayout(null);

19 lCodigo = new JLabel("Cdigo:");


20 lCodigo.setBounds(15,10,70,20);
Linha, Largura, Altura
21 tela.add(lCodigo);
22 Codigo = new JTextField();
23 Codigo.setBounds(95,10,35,20);
24 tela.add(Codigo);
25 26 78

lNome = new JLabel("Nome:");


lNome.setBounds(15,40,70,20);
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

//Coluna,

Grupo iPED - Curso de Java


27
28
29
30

tela.add(lNome);
Nome = new JTextField();
Nome.setBounds(95,40,280,20);
tela.add(Nome);

31
32
33
34
35
36

lSobrenome = new JLabel("Nome:");


lSobrenome.setBounds(15,70,70,20);
tela.add(lSobrenome);
Sobrenome = new JTextField();
Sobrenome.setBounds(95,70,250,20);
tela.add(Sobrenome);

37 38 39 -

lSexo = new JLabel("Sexo:");


lSexo.setBounds(15,100,70,20);
tela.add(lSexo);

40 41 42 -

Masculino = new JRadioButton("Masculino");


Masculino.setBounds(95,100,100,20);
tela.add(Masculino);

43 44 45 -

Feminino = new JRadioButton("Feminino");


Feminino.setBounds(195,100,250,20);
tela.add(Feminino);

46 47 48 -

Sexo = new ButtonGroup();


Sexo.add(Masculino);
Sexo.add(Feminino);

49 50 51 -

EscolhaSexo opcao = new EscolhaSexo();


Masculino.addItemListener(opcao);
Feminino.addItemListener(opcao);

52 53 54 -

LTipoCartao = new JLabel("Carto de Crdito: ");


LTipoCartao.setBounds(15,130,110,20);
tela.add(LTipoCartao);

55 56 57 -

VS = new JCheckBox("Visa");
VS.setBounds(130,130,70,20);
tela.add(VS);

58 59 60 -

CD = new JCheckBox("Credicard");
CD.setBounds(200,130,100,20);
tela.add(CD);

61 62 63 -

TipodeCartao escolha = new TipodeCartao();


VS.addItemListener(escolha);
CD.addItemListener(escolha);

64 65 66 -

setLocation(100,100);
//Coluna,Linha
setSize(400,200);
//Largura, Altura
}
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

79

Grupo iPED - Curso de Java


67 68 69 -

private class EscolhaSexo implements ItemListener


{
private String valSexo;

70 public void itemStateChanged( ItemEvent e )


71 {
72 if(e.getSource() == Masculino)
73 {
74 if(e.getStateChange() ==
ItemEvent.SELECTED)
75 {
76 valSexo = "Masculino";
77 JOptionPane.showMessageDialog(Aplicativo1A.this,
"Voce
Selecionou a Opo: "+valSexo);
78 }
79 }
80 if(e.getSource() == Feminino)
81 {
82 if(e.getStateChange() ==
ItemEvent.SELECTED)
83 {
84 valSexo = "Feminino";
85 JOptionPane.showMessageDialog(Aplicativo1A.this,
"Voce
Selecionou a Opo: "+valSexo);
86 }
87 }
88 }
89 }
90
91
92
93

private class TipodeCartao implements ItemListener


{
private String valTipo1 = "";
private String valTipo2 = "";

94 public void itemStateChanged( ItemEvent e )


95 {
96 if(e.getSource() == CD)
97 {
98 if(e.getStateChange() ==
ItemEvent.SELECTED)
99 {
100valTipo1 = "Credicard";
101}
102}
10310480

if(e.getSource() == VS)
{
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


105ItemEvent.SELECTED)
106107108109110}
111}
112113114115116-}

if(e.getStateChange() ==
{
}

valTipo2 = "Visa";

public static void main(String args[])


{
new Aplicativo1A().show();
}

Explicao da Classe Apliactivo1A.Java / Programa para aplicao de JCheckBox e


JRadioButton
1- //Aplicativo1A.Java
2- //Demostra o uso de uma interface com o usurio para entrada de dados
//este aplicativo no realiza nenhuma tarefa, somente implementa a interface e a lgica
da interface
4- import java.awt.*;
Importa o pacote java.awt para implementar a classe Windows e Container
5- import javax.swing.*;
Importa o pacote javax.swing para utilizao das classes (JFrame, Jlabel,
JTextField, JRadioButton, JCheckBox.
6- import java.awt.event.*;
Pacotes com as classes e as interfaces para tratamento dos eventos
Informaes de eventos so armazenadas em um objeto de uma classe que
estende AWTEvent que est no pacote Java.awt.event.
7- public class Aplicativo1A extends JFrame
8- {
Declarao da classe Aplicativo1A como uma classe publica
A palavra reservada extends indica que a classe Aplicativo1A herda dados e
mtodos da classe JFrame, Aplicativo1A uma subclasse de JFrame.
9private JLabel lCodigo, lNome, lSobrenome, lSexo, LTipoCartao;
10- private JTextField Codigo, Nome, Sobrenome;
11
private JRadioButton Masculino, Feminino;
12
private ButtonGroup Sexo;
13
private JCheckBox CD, VS;
Declarao dos objetos que sero instanciandos na classe
Private indica que os objetos esto disponveis somente na classe Aplicativo1A
14
public Aplicativo1A()
15
{
Declarao do mtodo construtor da classe inicia na linha 14 e termina na linha 66
16
setTitle("Informaes de Clientes");
Mtodo usado para colocar o titulo na barra de menus
17
Container tela = getContentPane();
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

81

Grupo iPED - Curso de Java

18

19

20

21

Declara uma referencia a Container chamada tela e atribui a ela o resultado de


uma chamada ao mtodo getContentPane, que retorna uma referencia a container
para anexar componente a interface
tela.setLayout(null);
Para administrar a posio e o tamanho dos componentes no container usamos o
mtodo setLayout.
Ao utilizarmos o parmetro null, teremos que posicionar cada componentes com o
mtodo setBouds.
lCodigo = new JLabel("Cdigo:");
Instanciao do Objeto lCodigo que um componente JLabel
lCodigo.setBounds(15,10,70,20);
//Coluna, Linha, Largura, Altura
Posio em que o componente lCodigo deve ser adicionado ao container
tela.add(lCodigo);
O mtodo add adicona o componente lCodigo que uma label ao container tela

22 at 39 componentes label e texto


40
41
42

Masculino = new JRadioButton("Masculino");


Masculino.setBounds(95,100,100,20);
tela.add(Masculino);

43
44
45

46
47
48

49

50
51

52
53
82

Feminino = new JRadioButton("Feminino");


Feminino.setBounds(195,100,250,20);
tela.add(Feminino);
Instanciao dos botes de rdio
Sexo = new ButtonGroup();
Sexo.add(Masculino);
Sexo.add(Feminino);
Instancia um objeto ButtonGroup() e o atribui referncia Sexo. Esse objeto
a cola que une os dois objetos JRadioButton entre si para formar um
relacionamento lgico que permite que apenas um dos dois botes seja
selecionado por vez.
Os botes de radio podem possuir dois estados selecionados e no
selecionado, estes normalmente aparecem como um grupo em que apenas um
boto pode estar selecionado por vez.
O relacionamento lgico entre botes de opo mantido por um objeto
ButtonGroup (pacote javax.swing)
EscolhaSexo opcao = new EscolhaSexo();
Instanciao do objeto EscolhaSexo referenciado pela palavra opcao este objeto
foi foi definido na classe de mesmo nome linhas 67 a 89
Masculino.addItemListener(opcao);
Feminino.addItemListener(opcao);
Quando o usurio clicar no boto de radio, gerado um evento que pode
ser tratado por um addItemListener (que deve definir o mtodo
itemStateChanged) que vai invocar uma instncia da classe EscolhaSexo
(linha 67 a 89) referenciado por opcao que a classe encarregada de tratar o
evento
LTipoCartao = new JLabel("Carto de Crdito: ");
LTipoCartao.setBounds(15,130,110,20);
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


54

tela.add(LTipoCartao);

55
56
57

VS = new JCheckBox("Visa");
VS.setBounds(130,130,70,20);
tela.add(VS);

58
59
60

61

62
63

64

65

66
67

68
69

70
71

72

73
74
75
76
77
78

CD = new JCheckBox("Credicard");
CD.setBounds(200,130,100,20);
tela.add(CD);
Instanciao dos objetos caixa de texto.
TipodeCartao escolha = new TipodeCartao();
Instanciao do objeto tipodeCartao referenciado pela palavra escolha este
objeto foi foi definido na classe de mesmo nome linhas 90 a 111
VS.addItemListener(escolha);
CD.addItemListener(escolha);
Quando o usurio clicar na caixa de escolha , gerado um evento que vai
invocar uma instncia da classe TipodeCartao (linha 90 a 111) referenciado por
escolha que a classe encarregada de tratar o evento
setLocation(100,100); //Coluna,Linha
Posiciona um ponto da tela em que a interface deve comear a ser desenhada, as
coordenadas so definidas em pixel
setSize(400,200); //Largura, Altura
Determina o tamanho que a interface (janela) deve ter
}
private class EscolhaSexo implements ItemListener
Esta classe implementa uma ao quando o usurio clicar no boto de radio
{
private String valSexo;
Varivel que vai armazenar masculino ou feminino
public void itemStateChanged( ItemEvent e )
{
O mtodo itemStateChanged chamado quando o usurio clica no boto
de radio, e utiliza e.getSource() para determinar qual componente foi clicado.
Por padro a interface addItemListener implementa o mtodo
itemStateChanged.
O prmetro ItemEvent que passado para o mtodo itemStateChanged,
que trata o estado da seleo
if(e.getSource() == Masculino)
O mtodo getSource() determina qual componente foi clicado
{
if(e.getStateChange() == ItemEvent.SELECTED)
Utiliza o mtodo getStateChange() para determinar o estado do boto
{
valSexo = "Masculino";
JOptionPane.showMessageDialog(Aplicativo1A.this,
"Voce Selecionou a Opo: "+valSexo);
}
83
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


79

80
81
82
83
84
85

if(e.getSource() == Feminino)
{
if(e.getStateChange() == ItemEvent.SELECTED)
{
valSexo = "Feminino";
JOptionPane.showMessageDialog(Aplicativo1A.this,
"Voce Selecionou a Opo: "+valSexo);
}
}

86
87
88
89

}
}

da linha 90 at a linha 111 tratamento do evento das caixas de texto


112
113
114
115
116 }

public static void main(String args[])


{
new Aplicativo1A().show();
}
Tela da Aplicao

Note que a janela da aplicao no esta posicionada acima e a esquerda do monitor, Isto
ocorre porque usamos a instruo: setLocation(100,100);

Note que a janela de JOptionPane.showMessageDialog, esta posicionada sobre a janela


aberta e no centralizada no vdeo.
84

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

EXERCICIO
Codificar um aplicativo que apresente a seguinte interface:

O aplicativo dever realizar as duas operaes matemticas propostas na interface.


1-

// Calculadora.java

2345-

import
import
import
import

6789-

public class Calculadora extends JFrame {


private JLabel informa, resultadoLabel, linha;
private JTextField primeiro, segundo, resultadoText;
private JButton somar, subtrair;

101112-

java.awt.*;
java.awt.event.*;
javax.swing.*;
java.text.DecimalFormat;

public Calculadora()
{
setTitle( "Calculadora" );

1314-

Container c = getContentPane();
c.setLayout( new FlowLayout() );

1516-

informa = new JLabel( "Digite dois nmeros: " );


c.add( informa );
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

85

Grupo iPED - Curso de Java


17181920212223242526272829-

primeiro = new JTextField( 10 );


c.add( primeiro );
segundo = new JTextField( 10 );
c.add( segundo );
somar = new JButton( "Somar" );
c.add( somar );
subtrair = new JButton( "subtrair" );
c.add( subtrair );
resultadoLabel = new JLabel( "Resultado" );
c.add( resultadoLabel );
resultadoText = new JTextField(10);
resultadoText.setEditable( false );
c.add( resultadoText );

303132-

Evento_Botao executar = new Evento_Botao();


somar.addActionListener( executar );
subtrair.addActionListener( executar );

3334-

setSize( 200, 190 );

35363738-

public static void main( String args[] )


{
new Calculadora().show();
}

3940414243-

private class Evento_Botao implements ActionListener {


public void actionPerformed( ActionEvent e )
{
double prim, seg, soma, subtrai;
String s = "";

44DecimalFormat twoDigits = new


DecimalFormat("0.00");
454647);
48);
4950515253545556575886

if ( e.getSource() == somar )
{
prim=Double.parseDouble( primeiro.getText()
seg =Double.parseDouble( segundo.getText()
soma = prim + seg;
s = twoDigits.format( soma );
}
{

if ( e.getSource() == subtrair )

prim=Double.parseDouble( primeiro.getText() );
seg =Double.parseDouble( segundo.getText() );
subtrai = prim - seg;
s = twoDigits.format( subtrai );;

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

596061}
62- }

resultadoText.setText( s );
}

EXERCICIO
Codificar um aplicativo que apresente a seguinte interface:

O aplicativo dever realizar as duas operaes matemticas propostas na interface.


PROGRAMA: Calculadora_1.Java
Verso 1.0
01
02
03
04
05

06
07
08
09

- public class
private
private
private

10 11 12 -

// Calculadora_1.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.DecimalFormat;
Calculadora_1 extends JFrame {
JLabel informa, resultadoLabel, linha;
JTextField primeiro, segundo, resultadoText;
JButton somar, subtrair;

public Calculadora_1()
{
setTitle( "Calculadora" );

13 14 -

Container c = getContentPane();
c.setLayout( new FlowLayout() );

15
16
17
18
19
20
21
22

informa = new JLabel( "Digite dois nmeros: " );


c.add( informa );
primeiro = new JTextField( 10 );
c.add( primeiro );
segundo = new JTextField( 10 );
c.add( segundo );
somar = new JButton( "Somar" );
c.add( somar );

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

87

Grupo iPED - Curso de Java


23
24
25
26
27
28
29

subtrair = new JButton( "subtrair" );


c.add( subtrair );
resultadoLabel = new JLabel( "Resultado" );
c.add( resultadoLabel );
resultadoText = new JTextField(10);
resultadoText.setEditable( false );
c.add( resultadoText );

30 31 32 -

Evento_Botao executar = new Evento_Botao();


somar.addActionListener( executar );
subtrair.addActionListener( executar );

33 34 -

setSize( 190, 190 ); //largura,altura


} // FIM DO MTODO CONSTRUTOR

35
36
37
38

public static void main( String args[] )


{
new Calculadora_1().show();
} //FIM DO MTODO MAIN()

39
40
41
42
43

private class Evento_Botao implements ActionListener {


public void actionPerformed( ActionEvent e )
{
double prim, seg, soma, subtrai;
String s = "";

44 DecimalFormat twoDigits = new


DecimalFormat("0.00");
45 if ( e.getSource() == somar )
46 {
47 prim=Double.parseDouble(
primeiro.getText() );
48 seg =Double.parseDouble( segundo.getText()
);
49 soma = prim + seg;
50 s = twoDigits.format( soma );
51 }
52 if ( e.getSource() == subtrair )
53 {
54 prim=Double.parseDouble(
primeiro.getText() );
55 seg =Double.parseDouble( segundo.getText()
);
56 subtrai = prim - seg;
57 s = twoDigits.format( subtrai );;
58 }
59 60 61 88

resultadoText.setText( s );
} // FIM DO MTODO actionPerformed()
} //FIM DA CLASSE EVENTO BOTO
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


62 - }

// FIM
PROGRAMA: Calculadora_2.Java
Verso 2.0

/* CLASSE Calculadora_2
* -----------------------------------* Descrio: Demostra a criao de objetos
*
em uma classe para realizar a soma e a
subtrao
* Autor.......: Prof. Edison Pires
*/
import
import
import
import

java.awt.*;
java.awt.event.*;
javax.swing.*;
java.text.DecimalFormat;

public class Calculadora_2 extends JFrame {


// Declara as variveis
double prim, seg, resultado, somar, subtrai;
String s;
// dados da Criao dos Objetos
private DecimalFormat mostraDecimal = new
DecimalFormat("0.00");
private JLabel JLdigite = new JLabel("Digite dois Nmeros");
private JTextField JTnumero1 = new JTextField("");
private JTextField JTnumero2 = new JTextField("");
private JButton JBsomar = new JButton("Somar");
private JButton JBsubtrair = new JButton("Subtrair");
private JLabel JLresultado = new JLabel("Resultado");
private JTextField JTresultado = new JTextField("");
// INICIO DO MTODO CONSTRUTOR
public Calculadora_2()
{
// dados da Criao da Janela
Container mostra = getContentPane();
mostra.setLayout(null);
setSize(179, 288);
setTitle("Calculadora");
setResizable(false);
// Criao dos Controles na Janela
JLdigite.setBounds(18, 6, 120, 13);
mostra.add(JLdigite);
JTnumero1.setBounds(31, 25, 100, 21);
mostra.add(JTnumero1);
JTnumero2.setBounds(32, 56, 100, 21);
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

89

Grupo iPED - Curso de Java


mostra.add(JTnumero2);
JBsomar.setBounds(40, 87, 90, 30);
mostra.add(JBsomar);
JBsubtrair.setBounds(41, 132, 90, 30);
mostra.add(JBsubtrair);
JLresultado.setBounds(58, 174, 57, 13);
mostra.add(JLresultado);
JTresultado.setBounds(39, 198, 100, 21);
JTresultado.setEditable(false);
mostra.add(JTresultado);
// TRATA EVENTO DO BOTO SOMAR
JBsomar.addActionListener (new ActionListener() {
public void actionPerformed(ActionEvent e) {
somar();
}
});
// TRATA EVENTO DO BOTO SUBTRAIR
JBsubtrair.addActionListener (new ActionListener() {
public void actionPerformed(ActionEvent e) {
subtrair();
}
});
// TRATA EVENTO DE FECHAMENTO DE JANELA
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

//FIM DO MTODO CONSTRUTOR

public void somar() {


prim=Double.parseDouble( JTnumero1.getText() );
seg =Double.parseDouble( JTnumero2.getText() );
somar = prim + seg;
s = mostraDecimal.format( somar );
JTresultado.setText( s );
} //FIM DO MTODO SOMAR
public void subtrair() {
prim=Double.parseDouble( JTnumero1.getText() );
seg =Double.parseDouble( JTnumero2.getText() );
subtrai = prim - seg;
s = mostraDecimal.format( subtrai );
JTresultado.setText( s );
} //FIM DO MTODO SUBTRAIR

90

public static void main(String args[]) {


Calculadora_2 janela = new Calculadora_2();
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


janela.show();
} //FIM DO MTODO MAIN()
} // FIM
Um pacote simplesmente uma coleo de classes relacionadas. Os pacotes
fornecem mecanismos para a reutilizao de software. Um dos nossos objetivos como
programadores a criao de componentes reutilizveis de software para que no
precisemos repetir cdigos em programas separados.
Outro beneficio dos pacotes que eles fornecem uma conveno para nomes de
classes nicos. Para que nossos nomes de classe no entrem em conflito com o nome de
classes de outros programadores.
Para criarmos um pacote devemos incluir a seguinte linha de instruo como a
primeira linha de nossa classe:
package
At agora, a maioria do cdigo que escrevemos foi no pacote default aquele que
voc obter se no incluir uma instruo package em sua classe. Essa prtica boa ao
desenvolver programas simples para seu prprio uso, mas como programador profissional
que disponibiliza o cdigo para ser usado por outras pessoas, organize suas classes em
pacotes denominados.
Colocando suas classes em pacotes, voc ter trs vantagens:

Disco rgido mais organizado, em partes funcionais;


Reduo do problema de colises de nomes;
Possibilidade de voc ocultar as classes dos usurios externos.

Os passos para criar um pacote so os seguintes:

Defina uma classe public, para que ela possa ser utilizada por qualquer
classe criada.
Escolha um nome de pacote e adicione uma instruo package ao
arquivo de cdigo-fonte para definio da classe reutilizvel.
package edp;

// Tempo.Java
// Esta classe mantm a hora no formato 24 horas
package edp;
import java.text.DecimalFormat;
public class Tempo {
private int hora;
private int minuto;
private int segundo;

// 0 - 23
// 0 - 59
// 0 - 59

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

91

Grupo iPED - Curso de Java

public Tempo()
{
setTempo( 0, 0, 0 );
}
public void setTempo( int h, int m, int s )
{
hora = ( ( h >= 0 && h < 24 ) ? h : 0 );
minuto = ( ( m >= 0 && m < 60 ) ? m : 0 );
segundo = ( ( s >= 0 && s < 60 ) ? s : 0 );
operador condicional chamado

//? um

ternrio.

// converte em string o formato de hora


public String horaUniversal()
{
DecimalFormat doisDigitos = new DecimalFormat( "00" );
return doisDigitos.format( hora ) + ":" +
doisDigitos.format( minuto ) + ":" +
doisDigitos.format( segundo );
}
}

Compile a classe

Na pasta C:\jdk\jre crie uma pasta chamada classes, voc pode usar
qualquer nome de pasta, mais o Java reconhece como padro pasta
classes na pasta \jdk\jre. Desta forma sua classe ficar disponvel para o
compilador Java.

Compilar a classe para que seja armazenada no pacote apropriado e se


torne disponvel para o compilador e o interpretador.
Javac d c:\jdk\jre\classes Tempo.java

92

Quando o arquivo Java contendo instrues package compilado o


arquivo .class resultante colocado no diretrio especificado na instruo
package

Ao compilar uma classe em um pacote, usamos a opo d que


especifica a pasta onde criar os pacotes. Em Nosso caso c:\jdk\jre\classes

Aps o comando de compilao teremos: uma pasta com o seguinte


nome:
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


jdk\jre\classes\edp

o arquivo Tempo.class vai estar nesta pasta


Agora podemos utilizar a classe Tempo em qualquer outra classe que
codificarmos. Usando a instruo:
import edp.Tempo;

// Tempo_Test.Java
// Classe Tempo_Test invoca a classe Tempo
import edp.Tempo;
import javax.swing.JOptionPane;
public class Tempo_Test {
public static void main( String args[] )
{
String hr, ms, ss;
int h, m, s;
hr =JOptionPane.showInputDialog("Entre com a hora");
ms=JOptionPane.showInputDialog("Entre com os minutos");
ss =JOptionPane.showInputDialog("Entre com os
segundos");
h =Integer.parseInt(hr);
m=Integer.parseInt(ms);
s =Integer.parseInt(ss);
Tempo t = new Tempo();
t.setTempo( h, m, s );
String saida="Horario universal : "+t.horaUniversal();
JOptionPane.showMessageDialog( null, saida,
"Utilizando o pacote com a classe Tempo",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

93

Grupo iPED - Curso de Java

Programadores Java concentram-se na elaborao de novas classes e reutilizao


de classes existentes.
Existem muitas bibliotecas de classe e outras esto sendo desenvolvidas em todo
o mundo.
O software ento, construdo a partir de:

componentes amplamente disponveis


portveis
bem documentados
cuidadosamente testados
bem definidos

Este tipo de capacidade de reutilizao de software acelera o desenvolvimento de


softwares poderosos e de alta qualidade. O desenvolvimento rpido de aplicaes de
grande interesse atualmente.

EXEMPLO PRTICO DO USO DE PACOTES

94

nosso objetivo construir uma interface com o usurio idntica a da figura abaixo

esta interface poderia ser utilizada para criar um aplicativo de banco de dados.

para construir esta interface vamos utilizar trs arquivos


o Aplicativo.java;
o MontaTela.java;
o BotaoPainel.java.

Estamos usando nesta aplicao a tcnica de reutilizao de componentes, a partir


do momento que criamos padres de interfaces podemos usar em todos os
aplicativos que escrevermos.

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

O programa principal o programa Aplicativo.java este o programa que deve ser


executado, este programa vai chamar os programas MontaTela.java e BotaoPainel.java,
este dois programas devem fazer parte de um pacote chamado BD.
importante destacar que MontaTela.java e BotaoPainel.java no so programas
executveis, pois no possuem o mtodo public void main(). Estes programas fazem
parte de um pacote.
Portanto os programas MontaTela.java e BotaoPainel.java devem ser compilados
da seguinte maneira:
Javac -d c:\jdk\jre\classes MontaTela.java
Javac -d c:\jdk\jre\classes BotaoPainel.java
O programa Aplicativo.java pode ser compilado e executado a partir da pasta
onde o mesmo se localiza:
Javac Aplicativo.java (Compila)
Java aplicativo (Executa)
Vejamos o cdigo fonte dos programas:
MontaTela.java o programa que vai exibir os dados a serem inseridos em uma tabela
de banco de dados, composto por labels e campos do tipo texto, esta interface poderia
ser comum a diversas aplicaes de banco de dados.
Um novo componente acrescido a este cdigo chamado de Painel. GUIs complexas
exigem que cada componente seja colocado em uma localizao exata. Elas consistem
freqentemente, em mltiplos painis com os componentes de cada painel organizados
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

95

Grupo iPED - Curso de Java


em um leiaute especfico.
Os painis so criados com a classe JPanel - que uma subclasse de JComponent ,
que herda da classe java.awt.Container, ento cada JPanel um Container.
Cada painel pode definir o seu prprio leiaute.
Portanto a nossa classe MontaTela.java um painel que vai ser exibido na janela
JFrame declarada no programa Aplicativo.java. Devemos diferenciar bem o que uma
Jframe de um JPanel.

//MontaTela.java
package BD;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MontaTela extends JPanel
{
private JPanel telaPanel;
private JLabel
lCodigo,lNome,lSobrenome,lCidade,lEndereco,lEstado,lCep,mensagem;
JTextField Sobrenome, Nome, Codigo,
Endereco,Cidade,Estado,Cep;
public MontaTela()
{
setLayout(null);
lCodigo = new JLabel("Cdigo:");
lCodigo.setBounds(15,20,70,20);
add(lCodigo);
Codigo = new JTextField();
Codigo.setBounds(95,20,30,20);
Codigo.setEditable(false);
add(Codigo);
96

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

lNome = new JLabel("Nome:");


lNome.setBounds(15,50,70,20);
add(lNome);
Nome = new JTextField();
Nome.setBounds(95,50,300,20);
add(Nome);
lSobrenome = new JLabel("Sobrenome:");
lSobrenome.setBounds(15,80,70,20); //coordenada x,
coordenada y, largura, altura
add(lSobrenome);
Sobrenome = new JTextField();
Sobrenome.setBounds(95,80,250,20); //coordenada x,
coordenada y, largura, altura
add(Sobrenome);
lEndereco = new JLabel("Endereo:");
lEndereco.setBounds(15,110,70,20); //coordenada x,
coordenada y, largura, altura
add(lEndereco);
Endereco = new JTextField();
Endereco.setBounds(95,110,400,20); //coordenada x,
coordenada y, largura, altura
add(Endereco);
lCidade = new JLabel("Cidade:");
lCidade.setBounds(15,140,70,20); //coordenada x,
coordenada y, largura, altura
add(lCidade);
Cidade = new JTextField();
Cidade.setBounds(95,140,200,20); //coordenada x,
coordenada y, largura, altura
add(Cidade);

coordenada

coordenada

coordenada

coordenada

lEstado = new JLabel("Estado:");


lEstado.setBounds(15,170,70,20); //coordenada x,
y, largura, altura
add(lEstado);
Estado = new JTextField();
Estado.setBounds(95,170,23,20); //coordenada x,
y, largura, altura
add(Estado);
lCep = new JLabel("Cep:");
lCep.setBounds(15,200,70,20); //coordenada x,
y, largura, altura
add(lCep);
Cep = new JTextField();
Cep.setBounds(95,200,70,20); //coordenada x,
y, largura, altura
add(Cep);
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

97

Grupo iPED - Curso de Java


mensagem = new JLabel("formato de preenchimento do
99999999");
mensagem.setBounds(200,200,300,20); //coordenada x,
coordenada y, largura, altura
add(mensagem);
}
}
Cep:

BotaoPainel.java a classe que permite a exibio dos botes, que neste aplicativo no
possuem nenhuma funo, eles apenas so exibidos, note que esta classe tambm um
painel que devera ser apresentado na janela JFrame do programa Aplicativo.java.
Esta classe assim como a classe MontaTela.java fazem parte do pacote BD.
Esta classe utiliza o gerenciador de layout GridLayout que divide o continer em uma
grade de modo que os componentes podem ser colocados nas linhas e colunas, cada
componente de GridLayout tem a mesma largura e altura.
Em nossa classe BotaoPainel.java usamos a seguinte linha: setLayout(new
GridLayout(1,5)); que significar usar o GridLayout para exibir uma linha e cinco colunas,
dentro de cada uma destas colunas que vamos posicionar os nossos componentes
botes.
//BotaoPainel.java
package BD;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BotaoPainel extends JPanel
{
private JButton consultar, adicionar, alterar, limpar, apagar;
public BotaoPainel(MontaTela s)
{
setLayout(new GridLayout(1,5));
adicionar = new JButton("Adicionar");
add(adicionar);
consultar = new JButton("Consultar");
add(consultar);
alterar = new JButton("Alterar");
add(alterar);
apagar = new JButton("Apagar");
add(apagar);
limpar = new JButton("Limpar");
add(limpar);
}
98

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


Aplicativo.java a nossa classe principal, esta classe no vai rodar caso as outras duas
classes no estejam compiladas e includas no pacote apropriado.
Esta classe utiliza um BorderLayout. Que organiza os componentes em cinco regies :
North, South, East, West, Center. Quando no usamos todas as regies, as que so
usadas se expandem ocupando os espaos das outras regies.

At cinco componentes podem ser adicionados diretamente a um BorderLayout um


para cada regio.

// Aplicativo.java
import BD.BotaoPainel;
import BD.MontaTela;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Aplicativo extends JFrame
{
private MontaTela mostraTela;
private BotaoPainel controles;
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

99

Grupo iPED - Curso de Java


public Aplicativo()
{
setTitle("APLICATIVO");
Container tela = getContentPane();
mostraTela = new MontaTela();
tela.setLayout(new BorderLayout());
tela.add(mostraTela,BorderLayout.CENTER);
controles = new BotaoPainel(mostraTela);
tela.add(controles, BorderLayout.NORTH);
setSize(550,330);//largura,altura
}

public static void main( String args[] )


{
new Aplicativo().show();
}

Um applet uma aplicao especial Java que pode ser executada por um browser
(navegador) quando incorporada s pginas HTML por ele exibidas. Applet significa
pequena aplicao ou mini-aplicativo.
Portanto applet um programa Java destinado a operar com os browser,
significando que ser transportado pela internet, tal como documentos HTML.
Considerando sua situao de uso, applets so usualmente construdas para
serem pequenas e, portanto, desempenharem tarefas simples.
Funcionalmente, as applets se apresentam da mesma forma em diferentes
browser ou plataformas, porque os browser considerados compatveis com Java seguem
a especificao da JVM da Sun.
Um applet invocado a partir de uma pgina HTML, portanto sempre que
quisermos executar um applet Java devemos codificar uma pgina HTML e incluir uma
instruo que invoque o applet.
Um applet deve ser apenas compilado, se voc tentar executar um applet com o
interpretador Java, ser retornada uma mensagem de erro. Exemplo de um applet Java:
Digite o cdigo abaixo e em seguida compile, somente compile no mande
executar.
Mensagem.java
import java.applet.*;
import java.awt.*;
public class Mensagem extends Applet
100

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


{
public void paint(Graphics g)
{
g.drawString("Isto um applet escrito em
Java",15,10);
g.drawString(" exibido como uma figura pelo
browser",15,40);
}
}
Aps compilar este cdigo se no houver nenhum erro voc obter um arquivo
com o nome Mensagem.class. Com um applet invocado a partir de uma pgina HTML,
vamos codificar a pgina.
Mensagem.html
<html>
<head>
<title>Demonstrao de um Applet Java</title>
</head>
<body>
<font face="Arial" size="3"
<h1>Exibindo Um Applet (Mensagem)</h1>
<p>Podemos inserir applets numa pgina HTML como figuras
comuns</p>
<hr>
<applet code="Mensagem.class" width=340 height=100></applet>
<hr>
<p>Para isto basta utilizar a tag applet e seus parmetros</p>
</font>
</body>
</html>
Notamos que se trata de um arquivo HTML comum, no qual a incluso do applet
realizada por meio da tag <APPLET> e </APPLET>, CODE identifica o arquivo Java
compilado (.class) WHIDTH especifica a largura e HEIGHT a altura da janela de
apresentao do applet.
Do ponto de vista de posicionamento e dimenso, os applets so tratados como
imagens pelos browsers; assim, necessrio especificar suas dimenses por meio dos
atributos WIDTH e HEIGHT, isso significa que, diferentemente das aplicaes comuns,
um applet no determina seu prprio tamanho, embora possa obter o tamanho
especificado no cdigo HTML.
Para executar o applet de dois clicks no nome do arquivo Mensagem.html. o
navegador ser carregado e sua pagina Mensagem.html ser executada, invocando o
applet e exibindo-o como uma figura no seu navegador. Caso o applet no seja exibido
verifique o seguinte:
INICIAR / CONFIGURAES / PAINEL DE CONTROLE
Click no cone Opes da Internet
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

101

Grupo iPED - Curso de Java


Click na aba Avanadas e verifique se as opes de Microsoft VM esto selecionadas,
note que se no estiverem marcadas, aps voc selecionar as opes dever reiniciar a
mquina.

Se estiver tudo OK a tela abaixo ser exibida:

Applet Java Rodando


A instruo public class Mensagem extends Applet inicia uma definio de classe, nossa
classe vai herdar os fragmentos existentes da classe Applet. Nesse relacionamento de
herana Applet chamada de superclasse e Mensagem de subclasse.
Um beneficio de estender a classe Applet que os desenvolvedores da linguagem
Java j definiram as principais funcionalidades de um applet, que requer mais de 200
mtodos diferentes.
Applets tm um modo particular de funcionamento, determinado, em grande parte,
102

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


pela seqncia especfica de mtodos, executada durante sua operao. Essa seqncia
de execuo denominada ciclo de vida, conforme esquematizado na figura.
Assim como os programas necessitam do mtodo main() um applet precisa do
mtodo init() que acionado pelo browser toda vez que o applet se torna visvel. Esse
mtodo utilizado normalmente para a adio de componentes. Por se tratar de um
mtodo construtor default ele no precisa ser implementado, se voc no for adicionar
componentes, pois includo pelo Java durante a compilao.
O mtodo start() acionado pelo browser toda vez que o applet se torna visvel,
usado em conjunto com o mtodo stop(). Estes mtodos se encarregam de iniciar e
finalizar a execuo de um applet. Como tambm so mtodos construtores so
invocados mesmo que no sejam explicitamente declarados.
O mtodo paint() chamado toda vez que o applet necessita atualizar sua
exibio, o que ocorre quando exibido pela primeira vez aps o mtodo start() ou depois
que a janela do browser movimentada ou redimensionada.

O mtodo paint() pode ser utilizado para a realizao de operao de desenho


especial, ou seja, quando desejamos tratar diretamente do contedo.
O mtodo destroy() acionado quando a pgina descarregada, liberando os
recursos utilizados durante a execuo do applet, quando ocorre uma troca de pgina o
browser utiliza este mtodo.
public void paint(Graphics g), indica que o paint() requer um objeto da classe
103
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


Graphics chamado g para realizar sua tarefa, este objeto utilizado para desenhar
imagens grficas no applet.
g.drawString, uma instruo para exibir caracteres da string no applet. Utiliza o
mtodo drawString definido pela classe Graphics. O mtodo Graphics chamado
utilizando o objeto g de Graphics.
EXEMPLO DE APPLET
Consideremos que um determinado site tenha sido mudado de servidor e
desejamos exibir um outro contedo. Em vez de utilizarmos uma mensagem de aviso e
um link, poderamos adicionar um applet capaz de transferir o usurio para a nova pgina.
Como visto no exemplo abaixo:
Resultado do cdigo escrito em HTML

Resultado do cdigo do applet.

Aps clicar no boto "transferir" a pgina acima ser mostrada.


Vamos agora ver o cdigo para obter os resultados desejados:
MudaPagina.Java
01 - //MudaPagina.java
02
03
04
05

import
import
import
import

java.awt.*;
java.awt.event.*;
java.applet.*;
java.net.*;

06 - public class MudaPagina extends Applet implements


ActionListener
07 - {
104
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


08 09 10 -

private AppletContext contexto;


private String mensagem, urlAlvo;
private Button botao;

11
12
13
14
15
16
17
18
19
20

public void init()


{
botao = new Button(" Transferir ");
botao.addActionListener( this );
add( botao );
urlAlvo = getParameter("urlAlvo");
mensagem = getParameter("mensagem");
setBackground(Color.blue);
contexto = getAppletContext();
}

21
22
23
24
25
26
27
28
29
30
31
32
33
34

public void actionPerformed( ActionEvent e)


{
try
{
showStatus("Transferindo para "+urlAlvo);
URL u = new URL(urlAlvo);
contexto.showDocument(u);
}
catch (MalformedURLException a)
{
showStatus("URL Invlido");
}
}

EXPLICANDO O CDIGO
02 - import java.awt.*;
Esse pacote contm as classes e interfaces exigidas para criar e manipular
interfaces grficas com o usurio. Vrios componentes Swing usam subclasses
deste pacote como a subclasses java.awt.windows (JFrame um exemplo este
componente usa a subclasse windows)
03 - import java.awt.event.*;
Este pacote contm classes e interfaces que permitem tratamento de eventos para
componentes GUI nos pacotes java.awt e javax.swing
04 - import java.applet.*;
Pacote que implementa as funcionalidades para que um applet possa rodar no
browser.
05 - import java.net.*;
A criao de um objeto URL, exige que o pacote java.net seja importado este
pacote contem classes que permitem que os programas consigam se comunicar
via rede. As classes e interfaces do pacote java.net tambm oferecem
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

105

Grupo iPED - Curso de Java


comunicaes baseadas em pacotes que permitem que pacotes individuais de
informaes sejam transmitidos normalmente para transmitir udio e vdeo pela
internet.
06 - public class MudaPagina extends Applet implements ActionListener
Inicia uma definio de classe, nossa classe vai herdar os fragmentos existentes
da classe Applet. Nesse relacionamento de herana Applet chamada de
superclasse e Mensagem de subclasse.
Um benefcio de estender a classe Applet que os desenvolvedores da linguagem
Java j definiram as principais funcionalidades de um applet, que requer mais de
200 mtodos diferentes.
Uma classe pode implementar uma ou mais interfaces. Uma interface especifica
um ou mais comportamentos (isto , mtodos). A interface ActionListener
especifica que essa classe deve definir um mtodo actionPerformed para
processar a interao do usurio com o boto.
08 19

11

13 -

14

15

16 17

18 106

private AppletContext contexto;


contexto = getAppletContext();
Uma das caractersticas mais importantes de uma applet a possibilidade de sua
interao com o navegador, no qual est sendo executada, possibilitando tanto a
obteno de informaes sobre o ambiente de execuo como sobre sua atuao,
por meio da interface AppletContext, do pacote java.applet. A classe Applet
implementa essa interface, de modo que toda applet tem disponveis tais
operaes a partir do seu contexto, que pode ser obtido pelo mtodo
getAppletContext().
public void init()
Assim como os programas necessitam do mtodo main() um applet precisa do
mtodo init() que acionado pelo browser toda vez que o applet se torna visvel.
botao = new Button(" Transferir ");
Instancia um objeto boto atribudo a
este objeto a referencia botao, e uma
label Transferir.

botao.addActionListener( this );
O mtodo addActionListener processa o evento quando o boto acionado
Este mtodo chama o mtodo actionPerformed na linha 21 para processar o
evento
O parmetro this indica que o processador de eventos esta na prpria classe
add( botao );
Adiciona o objeto ao container
urlAlvo = getParameter("urlAlvo");
mensagem = getParameter("mensagem");
O recebimento ou a leitura dos valores fornecidos pela tag <PARAM> realizado
por meio do mtodo getParameter().
setBackground(Color.blue);
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


Mtodo usado para definir a cor de fundo do componente pode ser usado:
Black, Blue, Cyan, Dark Gray, Gray, Green, Magenta, Orange, Pink, red, White,
Yallow

21 -

public void actionPerformed( ActionEvent e)


Mtodo invocado para tratar a interao do usurio com o boto invocado pelo
mtodo addActionListener que processa o evento quando o boto acionado

23 24 25 -

try
{
showStatus("Transferindo para "+urlAlvo);
Exibe uma mensagem na barra de status, parte inferior a interface

26 27 -

URL u = new URL(urlAlvo);


contexto.showDocument(u);
Por meio deste mtodo, uma applet pode comandar o navegador para exibir um
novo documento em uma de suas janelas ou em uma nova janela.

28 29 30 31

32 33 34 - }

}
catch (MalformedURLException a)
{
showStatus("URL Invlido");
Exibe uma mensagem na barra de status, parte inferior a interface
}
}

Tratamento de Erros
Try
{
Tarefa a ser executada
}
catch (MalformedURLException a)
{
Mensagem de erro
}
A criao de um objeto URL exige o uso do bloco try catch, para que seja possvel
sinalizar a ocorrncia de erros.
Este bloco chamado de tratador de excees, uma exceo uma indicao de
que um problema ocorreu durante a execuo do programa.
O tratamento de excees fornecido para permitir aos programas capturar a
tratar erros em vez de deixa-los ocorrer e sofrer as consequencias. O tratamento
de excees projetado para lidar com erros como uma tentativa de dividir por
zero. O tratamento de excees no foi projetado para lidar com eventos como
concluses de E/S de disco, chegadas de mensagens de rede, cliques de mouse,
pressionamento de teclas.
O tratamento de excees utilizado em situaes em que o sistema pode
recuperar-se do mau funcionamento que causa a exceo. O procedimento de
recuperao chamado de tratador de exceo.
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

107

Grupo iPED - Curso de Java

Nosso applet vai precisar de uma pgina HTML, segue o cdigo:


MudaPagina.htm
<html>
<head>
<title>MudaPagina.htm</title>
</head>
<body>
<div align="center">
<center>
<table border="1" width="50%">
<tr>
<td width="40%"><center>
<applet code="MudaPagina.class" width=140 height=30>
<param name="urlAlvo"
value="file:///D:\edp\ipep\java\aplicativos_applets\transferido.ht
m">
<param name="mensagem" value="MUDAMOS">
</applet>
</td>
<td width="60%">
<center><font face="verdana" color=#ff0000 size="2"><b>
Nossa Pgina mudou, Click no boto ao lado para transferir
para nossa nova pgina
</center></font>
</td>
</tr>
</table>
</center>
</div>
</body>
</html>
A linha de comando:
<param name="urlAlvo"value="file:///D:\edp2002\transferido.htm">
que indica para o applet qual URL deve ser invocada, portanto nesta linha voc deve
substituir pelo endereo da pgina, por exemplo:
<param name="urlAlvo"value="http://www.uol.com.br">
Os parmetros so passados para os applets java por meio do metodo getParameter().

Podemos tambm codificar uma pgina para verificar se a transferncia foi realmente feita
com o seguinte cdigo:
108

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


transferido.htm
<html>
<head>
<title>Transferido</title>
</head>
<body bgcolor="#000000">
<p align="center"><font size="7"
color="#FF0000"><b>PGINA</b></font></p>
<p align="center"><font size="7"
color="#FF0000"><b>NOVA</b></font></p>
<p align="center"><font color="#FF0000" size="5"><b>Esta pgina
foi invocada a
partir do applet Java muda pgina</b></font></p>
</body>
</html>
Introduo
Os sistemas de banco de dados no apenas fornecem recurso de processamento
de arquivos como tambm organizam os dados de uma maneira que facilita a realizao
de consultas sofisticadas.
O estilo mais popular de sistema de banco de dados nos tipos de computadores
que utilizam Java o banco de dados relacional. Uma linguagem chamada Structured
Query Language(SQL) quase universalmente utilizada em sistemas de banco de dados
relacional para fazer consultas.
Java permite aos programadores escrever cdigo que utiliza consultas SQL. Para
acessar informaes em sistemas de banco de dados relacional.
Sistemas de banco de dados
O padro de hierarquia de dados a seguinte: Bits so resumidos formando bytes
ou caracteres; os caracteres so reunidos formando campos; os campos so reunidos
formando registros e os registros so reunidos formando arquivos.
Um banco de dados inclui arquivos de dados do usurio, mas tambm contm
mais. Um banco de dados contm a descrio dele mesmo em metadados. Alm disso,
inclui ndices que so usados para representar relacionamentos entre os dados e tambm
para melhorar o desempenho das aplicaes dos bancos de dados.
Finalmente, o banco de dados contm freqentemente dados sobre as aplicaes
que o utilizam. A estrutura de um formulrio de entrada de dados, ou um relatrio ,
algumas vezes, parte do banco de dados. A esta ltima categoria de dados chamamos de
metadados da aplicao.
Assim, um banco de dados contm os quatro tipos de dados:
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

109

Grupo iPED - Curso de Java

Arquivos de dados do usurio


Metadados.
ndices
Metadados da aplicao

Um banco de dados uma coleo integrada de dados. Um sistema de banco de


dados envolve os prprios dados, o hardware em que os dados residem, o software que
controla o armazenamento e a recuperao de dados.
Independncia de Dados
Um dos aspectos mais importantes dos sistemas de banco de dados a
independncia de dados (isto , os aplicativos no precisam se preocupar com a maneira
como os dados so fisicamente armazenados ou acessados).
Dizemos que um aplicativo dependente de dados se a estrutura de
armazenamento e a estratgia de acesso no puderem ser alteradas sem afetar o
aplicativo de maneira significativa.
A independncia dos dados oferece a convenincia de que vrios aplicativos
podem ter diferentes visualizaes dos mesmos dados. Do ponto de vista do sistema, a
independncia dos dados torna possvel que a estrutura de armazenamento e a estratgia
de acesso sejam modificadas em resposta a alteraes nos requisitos da instalao, mas
sem a necessidade de modificar aplicativos em funcionamento.
Modelo de banco de dados relacional
O modelo relacional desenvolvido por Codd uma representao lgica dos
dados que permite considerar relacionamentos entre os dados sem se envolver com a
implementao fsica das estruturas de dados.
Um banco de dados relacional composto de tabelas. Qualquer linha particular da
tabela chamada de registro (ou linha). As tabelas em um banco de dados normalmente
tm chave primria, que pode ser composta de uma ou mais colunas (ou campo) no
banco de dados.
Os campos de chave primria em uma tabela no podem ter valores duplicados.
Cada coluna da tabela representa um campo diferente. Os registros so
normalmente nicos dentro de uma tabela, mas os valores dos campos particulares
podem ser duplicados.
Exemplo
Tabela Funcionrios
Numero
Nome
Departamento
Salrio
Locado em
23603
Mario Rocha
413
1100
Bauru
24568
Lus Gustavo
413
2000
Bauru
110
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


34589
35761

Valmir Costa
Joel Castro

642
411

1800
1400

Campinas
Jundia

A linha destacada o que denominamos um registro


Acesso banco de dados
A plataforma Java permite o acesso a banco de dados relacionais por meio de uma
API (Application Programming Interface) denominada JDBC. JDBC um sinnimo para
DataBase Access from Java, sendo a sigla para Java Database Connectivity, criado
em 1996 pela Sun. Consiste em um pacote de classes escritas em linguagem Java que
permite escrever aplicaes que envolvam bancos de dados em linguagem puramente
Java.
A JDBC permite o uso de declaraes SQL, podendo ser utilizadas em conjunto
com os diversos tipos de bancos de dados existentes no mercado (e alguns ainda com
acesso nativo).
A JDBC um pacote embutido no aplicativo JDK, distribudo gratuitamente pela
Sun. Alm disso, ser necessrio possuir um driver especfico para a conexo, para cada
SGBD existe o driver apropriado que dever ser usado, consulte a documentao do
SGBD para obter informaes sobre o driver.
No existe um nmero especfico de bancos de dados que podem ser conectados
atravs da JDBC, pode-se dizer que qualquer banco que possua um driver de conexo do
tipo ODBC pode ser conectado, alm disso, muitos fabricantes possuem drives para este
acesso nativo via Java (Oracle, DB2, MySQL etc.).
INCLUSIVE POSSVEL CRIAR SEU PRPRIO DRIVER ESPECFICO EM
QUALQUER LINGUAGEM.
A JDBC considerada por muitos a mais importante API do Java, um argumento
difcil de combater, dado que qualquer aplicao ou sistema de porte necessita armazenar
grandes quantidades de dados de forma organizada, o que feito pelos bancos de dados.
A idia central da JDBC prover s aplicaes Java o acesso aos bancos de
dados relacionais locais ou remotos, possibilitando que tanto as aplicaes como as
applets utilizem dados existentes em um SGBD remoto, isto , localizados em outras
mquinas interligadas a uma rede.
Outra caracterstica importante do JDBC o uso extensivo do SQL uma
linguagem destinada operao dos SGBD.
Arquitetura
A especificao da JDBC parecida com o padro ODBC (Open Database
Connectivity), amplamente utilizado na plataforma Microsoft Windows, tambm com base
neste padro.
A grande diferena que a JDBC pode ser implementada independentemente de
plataforma, possibilitando seu uso em sistemas de arquitetura distinta, seguindo princpios
da linguagem Java.
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

111

Grupo iPED - Curso de Java


A arquitetura dessa API oferece uma interface independente de qualquer SGBD,
permitindo o acesso genrico e uniforme aos diferentes bancos de dados. Os dados so
efetivamente acessados por meio do SQL, cujo maior mrito separar o tratamento dos
dados das diversas implementaes de banco de dados.
O programador deve escrever apenas uma interface para interagir com um banco
de dados relacional por meio da API JDBC e, utilizando o SQL, o programa poder
acessar os dados sem a necessidade de programao adicional para realizao dessas
operaes. Sendo assim, o uso do SQL imprescindvel, e o JDBC pode ser visto como
uma interface SQL para bancos de dados.
Em seguida apresentamos uma figura que ilustra a arquitetura JDBC

Aplicaes ou applets Java que desejam acessar bancos de dados devem utilizar a API
JDBC, contida no pacote java.sql.
Por meio da classe DriverManager, a aplicao seleciona o driver de acesso a
banco de dados que ir utilizar. O driver passa a oferecer uma interface padronizada para
a aplicao, implementando em Java o acesso efetivo ao SGBD que se pretende utilizar.
Dessa forma, a troca do banco de dados no implica em mudanas numa
aplicao existente, exceto a seleo de um novo driver. Desta forma, as peas
fundamentais dessa arquitetura so o DriverManager e os drivers de acesso aos SGBD.
DriverManager e URLs
Para utilizarmos qualquer banco de dados, necessrio estabelecermos uma
conexo com este, utilizando, para isso, o driver adequado.
A classe DriverManager utilizada para administrar e selecionar o driver
apropriado para uma conexo com um banco de dados, bem como para efetuar tal
conexo.
Quando uma conexo solicitada, o DriveManager escolhe um driver dentre a lista
de drivers disponveis para efetuar a conexo, dependendo da URL especificada. A API
JDBC utiliza uma estrutura de endereamento semelhante ao esquema das URLs, para
112

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


especificar um banco de dados.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:meuODBC";
Connection con;
con = DriverManager.getConnection(url, "", "");
Onde aparece meuODBC, dever ser trocado o nome do ODBC de conexo ou,
para falar o nome oficial, o Data Source Name (DSN).
Drivers e seus Tipos
Um driver JDBC uma classe especial que implementa a interface
Java.sql.Driver, alm de outras. Os drivers podem ser escritos completamente em Java,
de forma que possam ser carregados dinamicamente por aplicaes ou transferidos como
parte de uma applet.
Tambm podem ser implementados utilizando cdigos nativos, criando uma
espcie de ponte para bibliotecas existentes destinadas ao acesso a banco de dados
especficos, tais como DLLs dos sistemas Microsoft Windows, para utilizao do ODBC.
Desta forma, so classes que entendem como converter requisies de operaes
(comandos SQL) em aes particulares para um certo banco de dados, sendo
responsveis pela efetiva integrao das aplicaes Java com os diversos banco de
dados.
Os Drivers ODBC: so destinados a sistemas Microsoft Windows. Para utiliza-los,
existe a ponte JDBC-ODBC, fornecida pela Sun, juntamente com o JDK. O uso dessa
ponte permite obter compatibilidade com um grande nmero de produtos, embora seu
desempenho seja prejudicado pelo uso de numerosas camadas entre a aplicao e o
SGBD especificamente.
Definindo uma fonte de dados ODBC
Para integrarmos uma aplicao Java com banco de dados ODBC, necessitamos
definir uma fonte de dados ODBC, isto precisamos criar um nome lgico que ser
associado pelo ODBC com um banco de dados fsico qualquer desse padro. Em um
sistema, cada nome de fonte de dados nico, embora nomes diferentes possam ter
acesso ao mesmo banco de dados fsico.
Registrando o banco de dados como uma fonte de dados ODBC
Vamos selecionar a opo INICIAR / CONFIGURAES / PAINEL DE
CONTROLE
Clicar no cone FONTES DE DADOS ODBC
A tela abaixo ser exibida

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

113

Grupo iPED - Curso de Java

Clicar no boto adicionar, o que far com que aparea a seguinte tela:

Escolha a opo ( Driver do Microsoft Access(*mdb) e clique no boto concluir,


o que far com que aparea a prxima tela.

114

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

Na caixa de textos Nome da fonte da dados, digite o nome do seu banco de


dados, em seguida clique no boto selecionar, para localizar o seu arquivo de
banco de dados. Localize em que drive e em qual pasta esta seu arquivo de banco
de dados, clique em OK, e depois em OK novamente para fechar a caixa de
configurao do Drive.
Acesso a JDBC
O acesso via JDBC bem simples e feito seguindo trs passos:
1.
2.
3.

Estabelecer uma conexo com o banco de dados.


Enviar o comando SQL.
Processar o resultado.

Em linguagem propriamente dita, isso se realizaria desta maneira:


O EXEMPLO ABAIXO PURAMENTE DIDTICO
MostraDado.java
import java.sql.*;
public class MostraDado {
public static void main(String args[]) {
// 1a. Parte
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:meuODBC";
Connection con;
con = DriverManager.getConnection(url, "", "");
// 2a. Parte
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

115

Grupo iPED - Curso de Java


Statement stmt;
stmt =
con.createStatement();
String query = "SELECT * FROM minhaTabela";
con.rollback();
ResultSet rs = stmt.executeQuery(query);
// 3a. Parte
int i;
String s;
while (rs.next()) {
i = rs.getInt(1);
// Pega o primeiro campo do tipo Int
s = rs.getString(2); // Pega o segundo campo do tipo
String
System.out.println("" + i + " - " + s);
}
rs.close();
stmt.close();
con.close();
} catch(java.lang.ClassNotFoundException e) {
System.err.print("Erro na Classe: " + e.getMessage());
} catch (SQLException e) {
System.err.print("Erro no SQL: " + e.getMessage());
}
}
}
Note a seguinte linha:
String url = "jdbc:odbc:meuODBC";
Onde aparece meuODBC, dever ser trocado o nome do ODBC de conexo ou,
para falar o nome oficial, o Data Source Name (DSN).
Se analisarmos o que foi feito at aqui, encontraremos a seguinte receita de bolo:
1.
2.
3.
4.

Importar as classes necessrias; (import java.sql.*;)


Ler o driver de JDBC; (Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");)
Identificar o Data Source; (String url = "jdbc:odbc:meuODBC";)
Alocar o objeto Connection; (Connection con;
/
con
DriverManager.getConnection(url, "", "");)
5.
Alocar o objeto Statement a partir do objeto Connection; (Statement stmt;
stmt = con.createStatement();)
6.
Executar a declarao SQL utilizando o objeto Statement; (String query
"SELECT * FROM minhaTabela";)
7.
Recuperar o resultado atravs de um objeto ResulSet; (ResultSet rs
stmt.executeQuery(query);)
8.
Fechar o objeto ResultSet; (rs.close();)
9.
Fechar o objeto Statement; (stmt.close();)
10. Fechar o objeto Conection; (con.close();)

116

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

=
/
=
=

Grupo iPED - Curso de Java

Aplicaes Client/Server com JDBC


totalmente possvel fazer aplicaes cliente/servidor e desenvolver modelos
multicamadas sem o menor problema.

Modelo de duas camadas, na primeira


camada, est a aplicao Java e o driver
de conexo JDBC que ficam localizados
na mquina do cliente, e a segunda
camada composta pelo Server do banco
de dados utilizado, este o modelo mais
comum e conhecido por Client/Server.

Modelo de mltiplas camadas, na primeira


camada, que a interface do cliente,
podem ser colocados Applet Java, HTML
rodando no browser ou ento uma
aplicao pura, via HTTP.
feita uma chamada para a segunda
camada, composta pela aplicao Server
(em Java) e pelo driver de conexo JDBC,
em que este. Mais uma vez, se liga na
terceira camada que contm o Server do
banco de dados utilizado.

Uma conexo completa em ambiente puramente Java pode ser representada da


seguinte maneira:

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

117

Grupo iPED - Curso de Java

Apresentao do lado cliente Esta parte inicial pode conter, no primeiro


esquema, o browser, ambiente puro HTML e Applet, ou seja, aqui os clientes
acessam aplicao de qualquer ponto do planeta atravs da Internet, ou
ainda pode ser de uma simples Intranet. No segundo esquema, temos o
ambiente Desktop com aplicaes Java. Aqui um disquete ou CD pode ser
enviado para o cliente como parte do ambiente e este acesso poderia ser
discado, mesmo de mquinas da empresa em locais distintos;

Apresentao do lado do servidor Neste ponto j temos o controle total


da aplicao, j que ele ficar dentro da empresa nas mquinas servidoras.
Caso os dados venham da WEB, uma soluo lgica seria o uso de Scripts
do lado do Servidor, que podem ser escritos em JSP, Caso os dados venham
de uma aplicao, podemos ter outra aplicao Java do tipo Servlet;

Regras de negcio do lado do servidor Aqui feita a triagem final antes


do acesso aos dados, usando a ferramenta EJB, poderamos ter classes que
controlem as regras de negcio da empresa (checar CPF, CGC, CEP,
ESTADOS, IPI, ICMS etc.).

Banco de Dados Pode ser qualquer um. Note que quando os dados
chegarem aqui estaro peneirados o suficiente para que poucos erros
possam ocorrer.

Passando comandos SQL atravs de uma conexo


Com a conexo estabilizada possvel a passagem de declaraes SQL para
enviar comandos ao banco de dados em questo. A JDBC produz instrues SQL padro
via ANSI SQL-2. Existem trs classes que permitem criar os objetos que serviro para a
passagem da declarao SQL, conforme a ilustrao abaixo.

118

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

1. Classe Statement o objeto para esta classe criado pelo mtodo


createStatement da varivel de conexo. Este objeto usado para a passagem de
declarao SQL simples.
2. Subclasse PreparedStatement o objeto para esta criado pelo mtodo
prepareStatement da varivel de conexo. Este objeto usado quando a
declarao SQL tiver um ou mais parmetros que podem ser enviados em
conjunto. Este objeto mais eficiente que o objeto Statement porque ele prcompilado e guardado para uso futuro.
3. subclasse CallableStatement o objeto para esta criado pelo mtodo
prepareCall da varivel de conexo. Este objeto utilizado para executar funes
do tipo Stored Procedures declaradas em alguns tipos de bancos de dados.
Declarao SQL em programa Java
Aps estabelecermos nossa conexo, criamos um objeto a partir da classe
Statement e para o objeto do tipo Connection existente chamamos o mtodo
createStatement. Exemplificando, podemos ter os seguintes comandos:
Statement stmt;
stmt =
con.createStatement();
String query = "SELECT * FROM minhaTabela";
ResultSet rs = stmt.executeQuery(query);
Inicialmente foi criado um objeto do tipo Statement e para este foi atribudo o valor
do mtodo especificado para a declarao, aps isso foi criada uma varivel do tipo
caractere (String), onde e definido o comando SQL e este executado atravs de uma
varivel do tipo ResultSet.
Existem dois mtodos estabelecidos para este objeto. O primeiro o
executeQuery, que possui a funo de processar declaraes do tipo SELECT que
devolvem um resultado que deve ser obtido atravs de um ResultSet. O segundo
mtodo o executeUpdate que envolve as declaraes de alterao do banco de dados
do tipo INSERT, UPDATE, ou DELETE.
Uma declarao do tipo SELECT devolve como resultado uma lista e esta lista
interceptada pelo JDBC atravs de um objeto do tipo ResultSet.
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

119

Grupo iPED - Curso de Java

Uma vez pronto um ResultSet possvel mover o ponteiro para frente ou para
trs nas linhas atravs de uma chamada ao mtodo Next, de devolve uma varivel do tipo
lgica (True ou False) informando se concluiu com sucesso ou no a passagem da
prxima linha. Ento podemos, navegar dentro do ResultSet.
Nosso objetivo agora escrever uma aplicao. uma aplicao bastante simples
verdade, mais que vai lhe ensinar princpios e conceitos bsicos para se escrever uma
aplicao que manipule dados usando a linguagem Java.
Algumas regras, programas, tratamento de erros e regras de negcios foram
omitidas, pois no teramos tempo para ensinar tudo. Na realidade acesso a dados com o
Java um curso a parte com durao de 40 horas ou mais. Tambm poderamos ter
usado a tcnica de agrupar as classes em pacotes, mais preferi no fazer isto, para que
seja mais fcil de se entender o aplicativo.
importante destacar que aproximadamente 90% das aplicaes em uso nas
empresas, tem como objetivo manipular informaes e que, portanto acessam bancos de
dados
Aproveite bem as aulas, pergunte, tire suas duvidas, pois so raros os professores
que ensinam o conceito de banco de dados quando ensinam linguagens de programao,
meus professores nunca ensinaram, aproveite e pergunte para outras pessoas que esto
aprendendo Java se aprenderam ou vo aprender banco de dados.
O projeto ser executado passo a passo, como sempre com as tradicionais
explicaes, que infelizmente muitos alunos simplesmente nem se preocupam em ler.
Cada programa foi cuidadosamente testado, claro que os testes ocorreram em
um ambiente controlado e organizado, o que nem sempre ocorre em nossos laboratrios,
portanto sempre existe a possibilidade de algo sair do controle.
Outro detalhe muito importante que voc tenha assimilado os conceitos
descritos na apostila do capitulo 11, pois l esto os conceitos bsicos para que voc
saiba o que esta fazendo, procure realmente entender, pois a nossa prova ser
baseada quase que exclusivamente nesta matria.
Nossa aplicao manipula um banco de dados simples com o nome de
Fornecedores de uma s tabela do Microsoft Access que contm uma tabela tambm
com o nome de Fornecedores com a seguinte estrutura:
Colunas
Nome
Cdigo
Nome
Sobrenome
Endereo
Cidade
Estado
120

Tipo
Inteiro longo
Texto
Texto
Texto
Texto
Texto

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Tamanho
4
50
50
255
50
20

Grupo iPED - Curso de Java


Cep

Texto

20

A aplicao fornece recursos para inserir novos registros, atualizar registros


existentes e procurar registros no banco de dados. Tudo isto de uma maneira objetiva,
lembrando que em troca desta objetividade deixamos de lado muitas coisas que em
um projeto para uso comercial devem ser implementadas.
Criamos o banco de dados com uma fonte de dados ODBC e o acessamos em
nosso programa Java por meio do driver de banco de dados de ponte JDBC para ODBC.
Configurando a fonte de dados no Windows 98 SE
Clique no boto Iniciar, em seguida escolha o item configuraes, painel de
controle. No painel de controle clique no cone

Na janela ADMINISTRADOR DE FONTE DE DADOS ODBC clique no boto


ADICIONAR. A janela abaixo vai ser exibida.

No selecione este, pois a aplicao


no vai ser executada.

Este o correto para a nossa Aplicao

Selecione Microsoft Acces Driver (*.mdb) e clique no boto CONCLUIR. Aps


clicar no boto CONCLUIR a interface abaixo ser apresentada.

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

121

Grupo iPED - Curso de Java

O nome da fonte de dados Fornecedores, este nome importantssimo, pois


este que vai aparecer na codificao. Em seguida clique no boto SELECIONAR e
indique o caminho (pasta) onde esta o seu banco de dados. Aps a seleo clique no
boto OK para confirmar, e OK novamente na janela ADMINISTRADOR DE FONTE DE
DADOS ODBC. Pronto sua fonte de dados ODBC j esta configurada.
ATENO: Provavelmente seu aplicativo no vai ficar pronto em uma nica
aula, portanto verifique esta configurao todas as vezes que for ao laboratrio. Se
esta configurao no for feita corretamente seu banco de dados no ficar
acessvel e a conexo no ser realizada, concluso: seu aplicativo no vai
funcionar.
Agora que j temos nossa base de dados, e j registramos o mesmo, no
gerenciador de fontes de dados, vamos nos preocupar com a construo do nosso
aplicativo.
O nome da classe principal do nosso aplicativo Fornecedores.java. Esta a
nossa classe executora.
Esta classe responsvel por invocar todas as outras classes. Portanto
compilando esta classe todas as outras sero compiladas.
A interface do nosso aplicativo a que esta demonstrada abaixo:
Classe BotaoPainel.java exibe os
botes

Classe MontaTela.Java exibe a


interface de entrada de dados

Janela de texto para exibio de


mensagens do aplicativo
Para exibir esta interface teremos de escrever trs classes, vamos a codificao
122

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


das mesmas. Digite na ordem em que aparecem na apostila, pode usar o JE para digitar.
Algumas linhas de cdigo podem estar marcadas com comentrio, para que seja
possvel realizar a compilao sem erros. Tambm possvel que precisemos
acrescentar uma ou outra instruo em programas j digitados.
A classe Fornecedores a classe principal, ao compilar a classe fornecedores
todas as classes do aplicativo sero compiladas.
Nesta classe cuidamos da conexo com o nosso banco de dados, e atravs da
passagem de parmetros informamos para todas as outras classes o estado da nossa
conexo.
Perceba que nesta classe encontramos o mtodo main(), o mesmo no ocorre
com as outras classes que compem nosso aplicativo.
Esta classe vai exibir a seguinte interface:

Fornecedores.Java
01 - /* CLASSE Fornecedores
02 - * ---------------------------------03 - * Projeto....: Sistema para Cadastro de Clientes
04 - * Descrio: Este sistema uma aplicao para cadastro de
pessoas,
05 - *
Possui Incluso, alterao, consulta,
apagar
06 - *
pode ser utilizada em outras aplicaes,
voce pode tranforma-la em pacote
07 - * Direitos...: Edison Pires (c) mar - 2004
08 - */
09
10
11
12

import
import
import
import

java.sql.*;
java.awt.*;
java.awt.event.*;
javax.swing.*;
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

123

Grupo iPED - Curso de Java


13
14
15
16

- public class Fornecedores extends JFrame


- {
private JTextArea saida;
private JScrollPane painelTexto;

17 // Declarao da referncia ao objeto que efetua a


conexo com o banco de dados;
18 private Connection conecta;
19
20
21
22
23
24
25
26

public Fornecedores()
{
setTitle("CADASTRO DE FORNECEDORES");
Container tela = getContentPane();
saida = new JTextArea(2,4);
tela.setLayout(new BorderLayout());
painelTexto = new JScrollPane(saida);
tela.add(painelTexto, BorderLayout.SOUTH);

27 //==========CONFIGURA A CONEXO DE
BANCO DE DADOS=======
28 try{
29 // se tudo estiver correto este
bloco ser executado
30 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
31 conecta =
DriverManager.getConnection( "jdbc:odbc:Fornecedores" );
32 saida.append("Conexo Efetuada
com Sucesso \n");
33 }
34 catch(ClassNotFoundException
e)
35 {
36 saida.append("No foi possvel
efetuar a conexo, classe no encontrada
\n");
37 }
38 catch(SQLException d)
39 {
40 saida.append("No foi possvel
efetuar a conexo com o banco de dados
\n");
41 }
42 43 44 45 46 47 124

setSize(550,350);
public static void main( String args[] )
{
new Fornecedores().show();
}
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


48 - }
Explicao do cdigo da classe Fornecedores.Java.
01 - /* CLASSE Fornecedores
02 - * ---------------------------------03 - * Projeto....: Sistema para Cadastro de Clientes
04 - * Descrio: Este sistema uma aplicao para cadastro de pessoas,
05 - *
Possui Incluso, alterao, consulta, apagar
06 - *
pode ser utilizada em outras aplicaes, voce pode tranforma-la
em pacote
07 - * Direitos...: Edison Pires (c) mar - 2004
08 - */
09 - import java.sql.*;
10 - import java.awt.*;
11 - import java.awt.event.*;
12 - import javax.swing.*;
Importa as classes necessrias para a execuo do aplicativo, destacamos neste
aplicativo o pacote java.sql que possui as classes que possibilitam tratar a conexo com
o banco de dados e executar as instrues SQL.
13 - public class Fornecedores extends JFrame
14 - {
Para cada janela de aplicao, usualmente criamos uma nova classe que estende a
classe JFrame e, com isso, obtemos duas facilidades: uma janela para a apresentao
grfica da aplicao e um container para a disposio de outros componentes.
Efetuamos a importao do pacote java.awt e javax.swing, declaramos o construtor que
ajustara o frame e adicionamos o mtodo main(), que se torna responsvel pela
instanciao e exibio do Frame por meio do mtodo show() (que pertence classe
Windows que pertence ao pacote AWT).
15 private JTextArea saida;
16 private JScrollPane painelTexto;
18 private Connection conecta;
Declarao das referncias para os objetos.
19 public Fornecedores()
20 {
Mtodo construtor da classe que possui o mesmo nome da classe, este mtodo usado
para:
Iniciar as referncias aos objetos
Tratar a conexo.
Exibir a interface
21 setTitle("CADASTRO DE FORNECEDORES");
Exibe um string na barra de ttulos da janela

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

125

Grupo iPED - Curso de Java


22 Container tela = getContentPane();
Declara uma referencia a Container chamado tela e atribui a referencia o resultado de
uma chamada ao mtodo getContentPane, que retorna uma referencia a container para
anexar componentes a interface
23 saida = new JTextArea(2,4);
Instanciao da classe JTextArea(2,4), o parmetro passado representa o tamanho da
janela de texto, 2 linha e 4 colunas, no caso deste objeto a parmetro passado no em
pixel, na realidade esta janela vai possuir um tamanho maior que 4 colunas, pois vai
ocupar todo o lado sul de um borderlayout, em seguida atribumos a referncia saida,
estamos instnciando um objeto, que vai ser responsvel por exibir a interface de
mensagens para o usurio.
24 tela.setLayout(new BorderLayout());
Atribumos uma referencia para o container que vai exibir a interface , Estamos definindo
que vamos usar como layout um BorderLayout().
O gerenciador de layout BorderLayout(), administra a disposio de componentes do
container em cinco regies distintas que so: superior (north), inferior (south), esquerda
(west), direita (east) e central (center). Cada regio s pode ser ocupada por um nico
componente.

25 painelTexto = new JScrollPane(saida);


Intnciao de um novo objeto com o nome de painelTexto a partir da classe
JScrollPane.
Passamos como parmetro o objeto saida que foi instanciado na linha 23 como um objeto
de rea de texto.
26 tela.add(painelTexto, BorderLayout.SOUTH);
A interface que possui uma barra de rolagem anexada ao container, para que as
mensagens destinadas ao usurio possam se tornar visveis.
Observe na interface de texto a caixa de rolagem e as mensagens para o usurio.

126

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

27 //==========CONFIGURA A CONEXO DE BANCO DE


DADOS=======
28 try{
O programador inclui em um bloco try o cdigo que pode gerar uma exceo.
O bloco try imediatamente seguido por um ou mais blocos catch.
Cada bloco catch especifica o tipo de exceo que pode capturar e que contm um
tratador de exceo.
Quando uma exceo lanada, o controle do programa deixa o bloco try e os blocos
catch so pesquisados em ordem quanto ao tratador apropriado
30 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Carrega o driver de acesso ao banco de dados escolhido. No caso, estamos
especificando a ponte JDBC-ODBC.
31 conecta = DriverManager.getConnection(
"jdbc:odbc:Fornecedores" );
A classe DriverManager utilizada para administrar e selecionar o driver apropriado para
uma conexo com um banco de dados, bem como para efetuar tal conexo.
Quando uma conexo solicitada, o DriveManager escolhe um driver dentre a lista de
drivers disponveis para efetuar a conexo.
32 saida.append("Conexo Efetuada com Sucesso \n");
Sada refrencia o objeto JtextArea, O mtodo append adiciona texto em uma
JTextArea
33 34 35 36 encontrada \n");
37 -

}
catch(ClassNotFoundException e)
{
saida.append("No foi possvel efetuar a conexo, classe no
}

38 39 40 -

catch(SQLException d)
{
saida.append("No foi possvel efetuar a conexo com o
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

127

Grupo iPED - Curso de Java


banco de dados \n");
41 }
Os tratadores de excees esto contido em blocos catch. Cada bloco catch inicia com a
palavra-chave catch seguida de parnteses contendo o nome da classe (que especifica o
tipo da exceo a ser capturada) um nome de parmetro.
O objeto capturado pelo tratador pode ser referenciado por esse parmetro.
42 43 44 45 46 47 48 - }

setSize(550,350);
}
public static void main( String args[] )
{
new Fornecedores().show();
}

BotaoPainel.java a classe que vai exibir os botes para a escolha da operao a


ser realizada sobre a tabela, a interface exibida ser conforme a figura abaixo:

A aplicao exibir a seguinte interface:

Lembre-se voc no precisa compilar esta classe isoladamente, embora


possa, esta classe tambm no pode ser executada, pois a mesma no possui o
mtodo main(). Sempre que voc compilar a classe Fornecedores.java todas as
classes que so instanciadas sero compiladas.
Algumas alteraes devem ser feitas na classe fornecedores, para que a mesma
possa instanciar a classe BotaoPainel.
Alteraes da classe fornecedores
Abaixo da linha 16 da classe Fornecedores incluir:
private BotaoPainel controles;
128

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


Declara uma referencia chamada controles para a classe BotaoPainel.
Abaixo da linha 26 da classe Fornecedores incluir:
controles = new BotaoPainel();
tela.add(controles, BorderLayout.NORTH);
Instncia a classe BotaoPainel() e atribui a referencia a controles.
Cola/adiciona o objeto controles no container tela, usando o mtodo add().
O objeto adicionado a posio NORTH do gerenciador de layout
BorderLayout.
Para tratar o fechamento da janela para que no ocorro erro ao fechar a sesso do DOS
vamos incluir abaixo da linha 42 da classe Fornecedores:
addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
Todas as janelas geram eventos de janela quando o usurio as manipula.
Ouvintes de eventos so registrados para eventos de janela com o mtodo
addWindowListener da classe Window.
A classe WindowAdapter() implementa a interface WindowListener, que
implementa sete mtodos para tratar eventos de janela, neste exerccio estamos
usando apenas o mtodo windowClosing.
O mtodo windowClosing invoca System.exit(0) para realizar o fechamento da
janela.
Com todas as alteraes na classe Fornecedores podemos agora digitar a classe
BotaoPainel.
BotaoPainel.java
01 - /* CLASSE BotaoPainel
02 - * ---------------------------------03 - * Projeto....: Sistema para Cadastro de Clientes
04 - * Descrio..: Esta classe exibe os botes, para a
manuteno da base de dados
05 - * Direitos...: Edison Pires (c) mar - 2004
06 - */
07
08
09
10

import
import
import
import

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

11 - public class BotaoPainel extends JPanel


Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

129

Grupo iPED - Curso de Java


12 - {
13 apagar;
14 15 16 -

private JButton consultar, adicionar, alterar, limpar,


public BotaoPainel()
{
setLayout(new GridLayout(1,5));

17 18 -

adicionar = new JButton("Adicionar");


add(adicionar);

19 20 -

consultar = new JButton("Consultar");


add(consultar);

21 22 -

alterar = new JButton("Alterar");


add(alterar);

23 24 -

apagar = new JButton("Apagar");


add(apagar);

25
26
27
28

limpar = new JButton("Limpar");


add(limpar);

- }

Nosso objetivo agora escrever uma aplicao. uma aplicao bastante simples
verdade, mais que vai lhe ensinar princpios e conceitos bsicos para se escrever uma
aplicao que manipule dados usando a linguagem Java.
Algumas regras, programas, tratamento de erros e regras de negcios foram
omitidas, pois no teramos tempo para ensinar tudo. Na realidade acesso a dados com o
Java um curso a parte com durao de 40 horas ou mais. Tambm poderamos ter
usado a tcnica de agrupar as classes em pacotes, mais preferi no fazer isto, para que
seja mais fcil de se entender o aplicativo.
importante destacar que aproximadamente 90% das aplicaes em uso nas
empresas, tem como objetivo manipular informaes e que, portanto acessam bancos de
dados
Aproveite bem as aulas, pergunte, tire suas duvidas, pois so raros os professores
que ensinam o conceito de banco de dados quando ensinam linguagens de programao,
meus professores nunca ensinaram, aproveite e pergunte para outras pessoas que esto
aprendendo Java se aprenderam ou vo aprender banco de dados.
O projeto ser executado passo a passo, como sempre com as tradicionais
explicaes, que infelizmente muitos alunos simplesmente nem se preocupam em ler.
Cada programa foi cuidadosamente testado, claro que os testes ocorreram em
um ambiente controlado e organizado, o que nem sempre ocorre em nossos laboratrios,
portanto sempre existe a possibilidade de algo sair do controle.
Outro detalhe muito importante que voc tenha assimilado os conceitos
130

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


descritos na apostila do capitulo 12, pois l esto os conceitos bsicos para que voc
saiba o que esta fazendo, procure realmente entender, pois a nossa prova ser
baseada quase que exclusivamente nesta matria.
Nossa aplicao manipula um banco de dados simples com o nome de
Fornecedores de uma s tabela do Microsoft Access que contm uma tabela tambm
com o nome de Fornecedores com a seguinte estrutura:
Colunas
Nome

Tipo

Cdigo
Nome
Sobrenome
Endereo
Cidade
Estado
Cep

Tamanho

Inteiro longo
Texto
Texto
Texto
Texto
Texto
Texto

4
50
50
255
50
20
20

Esta tabela esta disponvel no site do professor, faa o download.


A aplicao fornece recursos para inserir novos registros, atualizar registros
existentes e procurar registros no banco de dados. Tudo isto de uma maneira objetiva,
lembrando que em troca desta objetividade deixamos de lado muitas coisas que em
um projeto para uso comercial devem ser implementadas.
Criamos o banco de dados com uma fonte de dados ODBC e o acessamos em
nosso programa Java por meio do driver de banco de dados de ponte JDBC para ODBC.
Configurando a fonte de dados no Windows 98 SE
Clique no boto Iniciar, em seguida escolha o item configuraes, painel de
controle. No painel de controle clique no cone

Na janela ADMINISTRADOR DE FONTE DE DADOS ODBC clique no boto


ADICIONAR. A janela abaixo vai ser exibida.

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

131

Grupo iPED - Curso de Java

No selecione este, pois a aplicao


no vai ser executada.

Este o correto para a nossa Aplicao

Selecione Microsoft Acces Driver (*.mdb) e clique no boto CONCLUIR. Aps


clicar no boto CONCLUIR a interface abaixo ser apresentada.

O nome da fonte de dados Fornecedores, este nome importantssimo pois


este que vai aparecer na codificao. Em seguida clique no boto SELECIONAR e
indique o caminho (pasta) onde esta o seu banco de dados. Aps a seleo clique no
boto OK para confirmar, e OK novamente na janela ADMINISTRADOR DE FONTE DE
DADOS ODBC. Pronto sua fonte de dados ODBC j esta configurada.
ATENO: Provavelmente seu aplicativo no vai ficar pronto em uma nica
aula, portanto verifique esta configurao todas as vezes que for ao laboratrio. Se
esta configurao no for feita corretamente seu banco de dados no ficar
acessvel e a conexo no ser realizada, concluso: seu aplicativo no vai
funcionar.
Agora que j temos nossa base de dados, e j registramos o mesmo, no
gerenciador de fontes de dados, vamos nos preocupar com a construo do nosso
aplicativo.
O nome da classe principal do nosso aplicativo Fornecedores.java.
Esta classe responsvel por invocar todas as outras classes. Portanto
compilando esta classe todas as outras sero compiladas.
132

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


A interface do nosso aplicativo a que esta demonstrada abaixo:
Classe BotaoPainel.java exibe os
botes

Classe MontaTela.Java exibe a


interface de entrada de dados

Janela de texto para exibio de


mensagens do aplicativo
Para exibir esta interface teremos de escrever trs classes, vamos a codificao
das mesmas. Digite na ordem em que aparecem na apostila, pode usar o JE para digitar.
Algumas linhas de cdigo esto marcadas com comentrio, para que seja possvel
realizar a compilao sem erros. Tambm possvel que precisemos acrescentar uma ou
outra instruo em programas j digitados.
MontaTela.java
01 - //MontaTela.java
02 - import java.awt.*;
03 - import java.awt.event.*;
04 - import javax.swing.*;
05 - public class MontaTela extends JPanel
06 - {
07 private JPanel telaPanel;
08 private JLabel
lCodigo,lNome,lSobrenome,lCidade,lEndereco,lEstado,lCep,mensagem;
09 JTextField Sobrenome, Nome, Codigo,
Endereco,Cidade,Estado,Cep;
10 11 12 13
14
15
16
17
18
19

public MontaTela()
{
setLayout(null);
lCodigo = new JLabel("Cdigo:");
lCodigo.setBounds(15,10,70,20);
add(lCodigo);
Codigo = new JTextField();
Codigo.setBounds(95,10,30,20);
Codigo.setEditable(false);
add(Codigo);
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

133

Grupo iPED - Curso de Java

20
21
22
23
24
25

lNome = new JLabel("Nome:");


lNome.setBounds(15,40,70,20);
add(lNome);
Nome = new JTextField();
Nome.setBounds(95,40,300,20);
add(Nome);

26
27
x,
28
29
30
x,
31

lSobrenome = new JLabel("Sobrenome:");


lSobrenome.setBounds(15,70,70,20); //coordenada
coordenada y, largura, altura
add(lSobrenome);
Sobrenome = new JTextField();
Sobrenome.setBounds(95,70,250,20); //coordenada
coordenada y, largura, altura
add(Sobrenome);

32
33
x,
34
35
36
x,
37

lEndereco = new JLabel("Endereo:");


lEndereco.setBounds(15,100,70,20); //coordenada
coordenada y, largura, altura
add(lEndereco);
Endereco = new JTextField();
Endereco.setBounds(95,100,400,20); //coordenada
coordenada y, largura, altura
add(Endereco);

38 lCidade = new JLabel("Cidade:");


39 lCidade.setBounds(15,130,70,20); //coordenada x,
coordenada y, largura, altura
40 add(lCidade);
41 Cidade = new JTextField();
42 Cidade.setBounds(95,130,200,20); //coordenada x,
coordenada y, largura, altura
43 add(Cidade);
44 lEstado = new JLabel("Estado:");
45 lEstado.setBounds(15,160,70,20); //coordenada x,
coordenada y, largura, altura
46 add(lEstado);
47 Estado = new JTextField();
48 Estado.setBounds(95,160,23,20); //coordenada x,
coordenada y, largura, altura
49 add(Estado);
50 lCep = new JLabel("Cep:");
51 lCep.setBounds(15,190,70,20); //coordenada x,
coordenada y, largura, altura
52 add(lCep);
53 Cep = new JTextField();
54 Cep.setBounds(95,190,70,20); //coordenada x,
coordenada y, largura, altura
55 add(Cep);
134
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

56
do
57
x,
58
59
60

mensagem = new JLabel("formato de preenchimento


Cep:
99999999");
mensagem.setBounds(200,190,300,20); //coordenada
coordenada y, largura, altura
add(mensagem);
}
- }
Explicao do cdigo da classe MontaTela.java.

MontaTela.java a classe que vai exibir os dados a serem inseridos em uma


tabela de banco de dados, esta classe composta por labels e campos do tipo texto, esta
interface poderia ser comum a diversas aplicaes de banco de dados, podendo fazer
parte de um pacote de classes.

01 - // MontaTela.Java
Indica que o restante da linha um comentrio. Os programadores inserem
comentrios para documentar os programas e melhorar a legibilidade do programa.
Os comentrios tambm ajudam outras pessoas a entenderem seu programa. Um
comentrio ignorado pelo compilador.
02 - import java.awt.*;
Pacote de classes responsveis pela interao entre o componente e a plataforma
local para exibir a manipular o componente, em particular a classe
java.awt.Windows (como JFrame utilizado em exerccios anteriores) que exibem
janelas na tela.
Container tambm uma classe da awt, e as janelas precisam de um Container
para ser exibidas.
03 - import java.awt.event.*;
Este pacote contm classes e interfaces que permitem tratamento de eventos para
componentes GUI nos pacotes java.awt e java.swing.
04 - import javax.swing.*;
Contem os pacotes que ajudam a definir as interfaces grficas. (JTextField,
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

135

Grupo iPED - Curso de Java


JButton, JPanelJLabel).
05 - public class MontaTela extends JPanel
GUIs complexas exigem que cada componente seja colocado em uma
localizao exata.
Elas consistem freqentemente, em mltiplos painis com os componentes de
cada painel organizados em um layout especfico.
Os painis so criados com a classe JPanel - que uma subclasse de
JComponent , que herda da classe java.awt.Container, ento cada JPanel um
Container.
Cada painel pode definir o seu prprio layout.
Portanto a nossa classe MontaTela.java um painel que vai ser exibido na janela
JFrame declarada no programa Fornecedores.java. Devemos diferenciar bem o
que uma JFrame de um JPanel.
07

private JPanel telaPanel;


Declara uma referncia a JPanel com nome para telaPanel.

08 private JLabel
lCodigo,lNome,lSobrenome,lCidade,lEndereco,lEstado,lCep,mensagem;
Declara as referencias aos objetos Label

09

10

12

13 136

private JTextField Sobrenome, Nome, Codigo, Endereco,Cidade,Estado,Cep;


Declara as referencias aos objetos de caixa de texto
public MontaTela()
Mtodo construtor encarregado de montar a interface com o usurio, note que o
mtodo construtor possui o mesmo nome da classe.
setLayout(null);
Este mtodo usado para definir o gerenciador de layout, ns j usamos
FlowLayout, GridLayout, BorderLayout. Os gerenciadores de layout organizam
componentes em um Container para fins de apresentao.
Quando vamos posicionar os componentes com o uso do mtodo setBounds no
definimos nenhum layout e passamos um null para o mtodo setLayout.
lCodigo = new JLabel("Cdigo:");
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

14

15

18 -

Instancia um objeto JLabel Cdigo e atribui a este a referencia lCodigo.


A palavra reservada new cria um novo objeto
lCodigo.setBounds(15,10,70,20);
Posiciona o objeto lCodigo nas coordenadas 15,10,70,20, usando o mtodo
setBounds.
Lembre-se que estas coordenadas so definidas em Pixels
As coordenadas representam respectivamente: coordenada x, coordenada y,
largura, altura
add(lCodigo);
O mtodo add adiciona/cola o componente no container

Codigo.setEditable(false);
O mtodo setEditable com o parmetro false faz com que no seja possvel editar
a caixa de texto

Perceba que a caixa de texto sem sua cor alterada.


Este atributo no pode ser alterado por se tratar de um campo chave.
Conforme a teoria de banco de dados campos chaves no podem ser alterados.
BotaoPainel.java

01 - //BotaoPainel.java
02 - //Esta classe adicona os botes de comando
03
04
05
06

import
import
import
import

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

07 - public class BotaoPainel extends JPanel


08 - {
09 private JButton consultar, adicionar, alterar, limpar,
apagar;
10 public BotaoPainel(Connection c, MontaTela s, JTextArea
t)
11 {
12 setLayout(new GridLayout(1,5));
13
14
s,
15

t));
-

adicionar = new JButton("Adicionar");


//adicionar.addActionListener(new adicionaRegistro(c,

16
17
s,
18

t));
-

consultar = new JButton("Consultar");


//consultar.addActionListener(new consultaRegistro(c,

19 -

add(adicionar);

add(consultar);
alterar = new JButton("Alterar");
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

137

Grupo iPED - Curso de Java


20 t));
21 -

//alterar.addActionListener(new alteraRegistro(c, s,

22 23 t));
24 -

apagar = new JButton("Apagar");


//apagar.addActionListener(new apagarRegistro(c, s,

25
26
27
28
29

limpar = new JButton("Limpar");


//limpar.addActionListener(new limparRegistros (s));
add(limpar);

add(alterar);

add(apagar);

- }

Explicao do cdigo da classe BotaoPainel.java.


BotaoPainel.java a classe que vai exibir os botes para a escolha da operao a
ser realizada sobre a tabela, a interface exibida ser conforme a figura abaixo:

05 - import java.sql.*;
Disponibiliza classes para uso de scripts SQL, permitindo a execuo de instrues
SQL como: Select, Insert, update, delete etc.
10

138

public BotaoPainel(Connection c, MontaTela s, JTextArea t)


A classe construtora passa o parmetro Connection c para receber o status da
conexo. Na classe principal fornecedores.java temos: na linha 14 private
Connection conecta; que faz referncia ao objeto conecta que na linha 28
conecta = DriverManager.getConnection(url); efetua a conexo com o banco de
dados. Este parmetro necessrio pois aps o usurio clicar em um boto ser
acionado o mtodo addActionListener que vai tratar o evento. Por exemplo ao
clicar no boto Adicionar as seguintes linhas sero executadas:
13 adicionar = new JButton("Adicionar");
14 // adicionar.addActionListener(new adicionaRegistro(c, s, t));
15 add(adicionar);
Perceba que o mtodo adicionaRegistro(c, s, t) esta sendo invocado e para este
mtodo esta sendo passado o parmetro do status da conexo, para que possa ser
possvel realizar a incluso na tabela.
Outro parmetro MontaTela s, que garante que a classe MontaTela seja
carregada. Para que se possa usar qualquer um destes botes importante que a
interface esteja presente.
O ltimo parmetro JTextArea t uma janela de texto onde sero exibidas as
mensagens para o usurio.

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

12

13

setLayout(new GridLayout(1,5));
O gerenciador de layout GridLayout divide o continer em uma grade de modo
que os componentes podem ser colocados nas linhas e colunas. Cada componente
em um GridLayout tem a mesma largura e altura
adicionar = new JButton("Adicionar");
Instancia um novo objeto JButton, inicializando com o string Adicionar e atribui o
objeto a referencia Adicionar.
A palavra reservada new cria um novo objeto

14 -

// adicionar.addActionListener(new adicionaRegistro(c, s, t));


Esta linha especifica que o aplicativo adicionaRegistro deve ouvir os eventos do
JButton("Adicionar"). Quando o usurio interagir com o boto Adiciona um
evento enviado para a classe adicionaRegistro indicando que o usurio
acionou o boto.
Automaticamente o mtodo actionPerformed chamado para processar a
interao com o usurio.
Para responder a um evento de ao, devemos definir uma classe que implemente
ActionListener.
Fragmento de cdigo da classe AdiconaRegistro
public class adicionaRegistro implements ActionListener{

public void actionPerformed( ActionEvent e )


Por ultimo temos a classe Fornecedores que a classe principal, esta classe
para funcionar, necessita que as outras duas estejam digitadas.
Esta classe possui referencias para as outras duas classes, portanto ao compilar a
classe fornecedores todas as classes do aplicativo sero compiladas.
Nesta classe cuidamos da conexo com o nosso banco de dados, e atravs da
passagem de parmetros informamos para todas as outras classes o estado da nossa
conexo.
Perceba que nesta classe encontramos o mtodo main(), o mesmo no ocorre
com as outras classes que compem nosso aplicativo.
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

139

Grupo iPED - Curso de Java

Fornecedores.Java
01 - // Fornecedores.java
02 - // Esta a classe principal do aplicativo e a que vai
executar todas as outras
03
04
05
06

07
08
09
10
11
12
13
14

- public class Fornecedores extends JFrame


- {
private MontaTela mostraTela;
private JTextArea saida;
private JScrollPane painelTexto;
private BotaoPainel controles;
private String url;
private Connection conecta;

15 16 17 -

import
import
import
import

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

public Fornecedores()
{
setTitle("CADASTRO DE FORNECEDORES");

18 Container tela = getContentPane();


19 mostraTela = new MontaTela();
20 saida = new JTextArea(2,4);
21 tela.setLayout(new BorderLayout());
22 tela.add(new
JScrollPane(mostraTela),BorderLayout.CENTER);
23 painelTexto = new JScrollPane(saida);
24 tela.add(painelTexto, BorderLayout.SOUTH);
25 try{
26 url = "jdbc:odbc:Fornecedores";
27 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
28 conecta =
DriverManager.getConnection( url );
29 saida.append("Conexo Efetuada
com Sucesso n");
30 }
31 catch(ClassNotFoundException
e)
32 {
33 saida.append("No foi possvel
efetuar a conexo, classe no encontrada
n");
34 }
140

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


35 catch(SQLException d)
36 {
37 saida.append("No foi possvel
efetuar a conexo com o banco de dados
n");
38 }
39 controles = new
BotaoPainel(conecta,mostraTela,saida);
40 tela.add(controles, BorderLayout.NORTH);
41 setSize(550,350);
42 }
43
44
45
46
47

public static void main( String args[] )


{
new Fornecedores().show();
}
}
Explicao do cdigo da classe Fornecedores.java.

03 - import java.sql.*;
04 - import java.awt.*;
05 - import java.awt.event.*;
06 - import javax.swing.*;
Importa as classes necessrias para a execuo do aplicativo, destacamos neste
aplicativo o pacote java.sql que possui as classes que possibilitam tratar a
conexo com o banco de dados e executar as instrues SQL.
07 - public class Fornecedores extends JFrame
Para cada janela de aplicao, usualmente criamos uma nova classe que estende
a classe JFrame e, com isso, obtemos duas facilidades: uma janela para a
apresentao grfica da aplicao e um container para a disposio de outros
componentes. Efetuamos a importao do pacote java.awt e javax.swing,
declaramos o construtor que ajustara o frame ( 15 - public Fornecedores() ) e
adicionamos o mtodo main(), que se torna responsvel pela instanciao e
exibio do Frame por meio do mtodo show() (que pertence classe Windows).
09 10 11 12 13 14

15

private MontaTela
mostraTela;
private JTextArea
saida;
private JScrollPane painelTexto;
private BotaoPainel controles;
private String
url;
private Connection conecta;
Declarao das referncias para os objetos.
public Fornecedores()
Mtodo construtor da classe que possui o mesmo nome da classe, este mtodo
usado para:
Iniciar as referencias aos objetos
Tratar a conexo.
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

141

Grupo iPED - Curso de Java

17

Exibir a interface
setTitle("CADASTRO DE FORNECEDORES");
Exibe um string na barra de ttulos da janela

18

19

20

Container tela = getContentPane();


Declara uma referencia a Container chamado tela e atribui a referencia o resultado
de uma chamada ao mtodo getContentPane, que retorna uma referencia a
container para anexar componentes a interface
mostraTela = new MontaTela();
Instanciao da classe MontaTela() atribuindo a referncia mostraTela, estamos
criando um objeto, que vai ser responsvel por exibir a interface de entrada de
dados para o usurio.
saida = new JTextArea(2,4);
Instanciao da classe JTextArea(2,4), o parmetro passado representa o
tamanho da janela de texto, em seguida atribumos a referncia saida, estamos
criando um objeto, que vai ser responsvel por exibir a interface de mensagens
para o usurio.

21

22 23 24

142

tela.setLayout(new BorderLayout());
Atribumos uma referencia para o container que vai exibir a interface na linha 18,
Container tela = getContentPane();
Estamos definindo que vamos usar como layout um BorderLayout().
O gerenciador de layout BorderLayout(), mais sofisticado em relao aos
anteriores, administra a disposio de componentes do container em cinco regies
distintas que so: superior (north), inferior (south), esquerda (west), direita (east) e
central (center). Cada regio s pode ser ocupada por um nico componente.

tela.add(new JScrollPane(mostraTela),BorderLayout.CENTER);
painelTexto = new JScrollPane(saida);
tela.add(painelTexto, BorderLayout.SOUTH);
Adiciona a interface MontaTela (que foi referenciado na linha 09) o objeto
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

25

26

27

28

29

JScrollPane que fornece um componente com funcionalidade de rolagem,


anexando no centro do gerenciador de layout BorderLayout.
Em seguida esta tela de rolagem anexada a janela de texto, para que as
mensagens para o usurio possam se tornar visveis.

Observe na interface de texto a caixa de rolagem e as mensagens para o usurio.


try{
O programador inclui em um bloco try o cdigo que pode gerar uma exceo. O
bloco try imediatamente seguido por um ou mais blocos catch. Cada bloco catch
especifica o tipo de exceo que pode capturar e que contm um tratador de
exceo.
Quando uma exceo lanada, o controle do programa deixa o bloco try e os
blocos catch so pesquisados em ordem quanto ao tratador apropriado
url = "jdbc:odbc:Fornecedores";
Atribui um contedo do tipo String a referencia url, com o objetivo de obter uma
conexo com o banco de dados desejado. No caso, utilizaremos uma fonte de
dados denominada Fornecedores para acessar um banco de dados Microsoft
Access.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Carrega o driver de acesso ao banco de dados escolhido. No caso, estamos
especificando a ponte JDBC-ODBC.
conecta = DriverManager.getConnection( url );
A classe DriverManager utilizada para administrar e selecionar o driver
apropriado para uma conexo com um banco de dados, bem como para efetuar tal
conexo.
Quando uma conexo solicitada, o DriveManager escolhe um driver dentre a lista
de drivers disponveis para efetuar a conexo, dependendo da URL especificada.
saida.append("Conexo Efetuada com Sucesso \n");
Sada refrencia o objeto JTextArea
O mtodo append adiciona texto em uma JTextArea

31 catch(ClassNotFoundException e)
32 {
33 saida.append("No foi possvel efetuar a conexo, classe no
encontrada \n");
34 }
35 catch(SQLException d)
36 {
37 saida.append("No foi possvel efetuar a conexo com o
banco de dados \n");
38 }
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

143

Grupo iPED - Curso de Java


Os tratadores de excees esto contido em blocos catch. Cada bloco catch
inicia com a palavra-chave catch seguida de parnteses contendo o nome da
classe (que especifica o tipo da exceo a ser capturada) um nome de
parmetro.
O objeto capturado pelo tratador pode ser referenciado por esse parmetro.
39

40

41

43 44 45 46 -

controles = new BotaoPainel(conecta,mostraTela,saida);


Atribui uma referencia a classe BotaoPainel passando como parmetros o estado
da conexo, a interface mostra tela e uma sada para a janela de textos.
tela.add(controles, BorderLayout.NORTH);
Adiciona ao container o objeto controles na posio norte do gerenciador de layout
BorderLayout.
setSize(550,350);
Define o tamanho da janela.
public static void main( String args[] )
{
new Fornecedores().show();
}
Mtodo principal do aplicativo invoca a execuo da classe fornecedores
exibindo a interface na tela.

Classe adicionaRegistro.Java
Codificao
// adicionaRegistro.java
// Classe que adiciona registros
import
import
import
import

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

public class adicionaRegistro implements ActionListener {


private MontaTela campos;
private JTextArea saida;
private Connection conecta;
public adicionaRegistro( Connection c, MontaTela f, JTextArea o
)

{
conecta = c;
campos = f;

144

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


saida = o;
}
public void actionPerformed( ActionEvent e )
{
try {
Statement executaSQL = conecta.createStatement();
if ( !campos.Sobrenome.getText().equals("") &&
!campos.Nome.getText().equals(""))
{
//ATENO: na instruo abaixo temos as aspas na seguinte ordem:
//
abre aspas duplas / fecha aspas duplas
//
abre aspas duplas / abre aspas simples /
abre aspas duplas
//
fecha aspas duplas / fecha aspas simples /
virgula
//
no final da linha fecha aspas duplas / fecha
aspas simples / parentese / fecha aspas duplas
String query = "INSERT INTO Fornecedores
(Nome,Sobrenome,Endereo,Cidade, Estado,Cep)"+
"VALUES('"+campos.Nome.getText()+"','"+campos.Sobrenome.getText()+
"','"+campos.Endereco.getText()
+"','"+campos.Cidade.getText()+"','"+campos.Estado.getText()+"','"
+campos.Cep.getText()+"')";
int result = executaSQL.executeUpdate( query );
if ( result == 1 ){
saida.append( "Inserido com Sucesso\n" );
campos.Nome.setText( "" );
campos.Sobrenome.setText( "" );
campos.Endereco.setText( "" );
campos.Cidade.setText( "" );
campos.Estado.setText( "" );
campos.Cep.setText( "" );
}
else{
saida.append( "Erro na Incluso\n" );
campos.Nome.setText( "" );
campos.Sobrenome.setText( "" );
campos.Endereco.setText( "" );
campos.Cidade.setText( "" );
campos.Estado.setText( "" );
campos.Cep.setText( "" );
}

}
else

JOptionPane.showMessageDialog(null,
"PREENCHA OS CAMPOS",
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

145

Grupo iPED - Curso de Java


"Ateno",JOptionPane.ERROR_MESSAGE);
executaSQL.close();

}
catch ( SQLException sqlex ) {
sqlex.printStackTrace();
saida.append( sqlex.toString() );
}

}
Classe consultaRegistro.java
Codificao
// consultaRegistro.java
import
import
import
import

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

public class consultaRegistro implements ActionListener {


private MontaTela campos;
private JTextArea saida;
private Connection conecta;
private JButton limpa;
public consultaRegistro( Connection c, MontaTela f, JTextArea o
)

{
conecta = c;
campos = f;
saida = o;
}
public void actionPerformed( ActionEvent e )
{
try {
if ( !campos.Sobrenome.getText().equals( "" ) ) {
Statement consultaSQL =conecta.createStatement();

String query = "SELECT * FROM Fornecedores WHERE Sobrenome =


'"+campos.Sobrenome.getText()+"'";
ResultSet rs = consultaSQL.executeQuery( query );
display( rs );
consultaSQL.close();
}
else
JOptionPane.showMessageDialog(null,"Digite o
sobrenome","Ateno",
146

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

JOptionPane.ERROR_MESSAGE);
}
catch ( SQLException sqlex ) {
sqlex.printStackTrace();
saida.append( sqlex.toString() );
}
}
public void display( ResultSet rs )
{
try {
rs.next();
int registroNumero = rs.getInt( 1 );
if ( registroNumero != 0 ) {
campos.Codigo.setText( String.valueOf(
registroNumero));
campos.Nome.setText( rs.getString( 2 ) );
campos.Sobrenome.setText( rs.getString( 3 ) );
campos.Endereco.setText( rs.getString( 4 ) );
campos.Cidade.setText( rs.getString( 5 ) );
campos.Estado.setText( rs.getString( 6 ) );
campos.Cep.setText( rs.getString( 7 ) );
}
else
saida.append( "Registro no localizado\n" );
}
catch ( SQLException sqlex ) {
JOptionPane.showMessageDialog(null,
"REGISTRO NO ENCONTRADO",
"Ateno",JOptionPane.ERROR_MESSAGE);
}
}
}

Classe alteraRegistro.java
Codificao
// alteraRegistro.java
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
public class alteraRegistro implements ActionListener {
private MontaTela campos;
private JTextArea saida;
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

147

Grupo iPED - Curso de Java


private Connection conecta;
public alteraRegistro( Connection c, MontaTela f,JTextArea o )
{
conecta = c;
campos = f;
saida = o;
}
public void actionPerformed( ActionEvent e )
{
try {
Statement alteraSQL = conecta.createStatement();
if ( ! campos.Codigo.getText().equals( "" ) ) {
String query = "UPDATE Fornecedores SET Nome='" +
campos.Nome.getText() +
"', Sobrenome='" + campos.Sobrenome.getText() +
"', Endereo='" + campos.Endereco.getText() +
"', Cidade='" + campos.Cidade.getText() +
"', Estado='" + campos.Estado.getText() +
"', Cep='" + campos.Cep.getText() +
"' WHERE Cdigo=" + campos.Codigo.getText();
int result = alteraSQL.executeUpdate( query );
if ( result == 1 )
JOptionPane.showMessageDialog(null,
"Alterado com
Sucesso","Ateno",
JOptionPane.ERROR_MESSAGE);
else {
JOptionPane.showMessageDialog(null,
"No Alterado","Ateno",
JOptionPane.ERROR_MESSAGE);
campos.Nome.setText( "" );
campos.Sobrenome.setText( "" );
campos.Endereco.setText( "" );
campos.Cidade.setText( "" );
campos.Estado.setText( "" );
campos.Cep.setText( "" );
}
alteraSQL.close();
}
else
JOptionPane.showMessageDialog(null,
"Clique em Consultar para encontrar
um registro","Ateno",
JOptionPane.ERROR_MESSAGE);
}
catch ( SQLException sqlex ) {
148
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


sqlex.printStackTrace();
saida.append( sqlex.toString() );
}

}
Classe apagarRegistro.java
Codificao
// apagarRegistro.java
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
public class apagarRegistro implements ActionListener {
private MontaTela campos;
private JTextArea saida;
private Connection conecta;
public apagarRegistro( Connection c, MontaTela f,JTextArea o )
{
conecta = c;
campos = f;
saida = o;
}
public void actionPerformed( ActionEvent e )
{
try {
Statement apagarSQL = conecta.createStatement();
if ( ! campos.Codigo.getText().equals( "" ) ) {
String query = "DELETE FROM Fornecedores WHERE Cdigo=
"+campos.Codigo.getText();
int result = apagarSQL.executeUpdate( query );
if ( result == 1 ){
campos.Nome.setText( "" );
campos.Sobrenome.setText( "" );
campos.Endereco.setText( "" );
campos.Cidade.setText( "" );
campos.Estado.setText( "" );
campos.Cep.setText( "" );
JOptionPane.showMessageDialog(null,"Deletado com Sucesso",
"Ateno",JOptionPane.ERROR_MESSAGE);
}
else {
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

149

Grupo iPED - Curso de Java

JOptionPane.showMessageDialog(null,
"No Deletado","Ateno",
JOptionPane.ERROR_MESSAGE);

apagarSQL.close();
}
else
JOptionPane.showMessageDialog(null,
"Clique em Consultar para encontrar um registro",
"Ateno",JOptionPane.ERROR_MESSAGE);
}
catch ( SQLException sqlex ) {
JOptionPane.showMessageDialog(null,
"OCORREU ALGUM ERRO","Ateno",
JOptionPane.ERROR_MESSAGE);
}
}
}
Classe limparRegistros.java
// limparRegistros.java
import java.awt.*;
import java.awt.event.*;
public class limparRegistros implements ActionListener {
private MontaTela campos;
public limparRegistros( MontaTela f )
{
campos = f;
}

public void actionPerformed( ActionEvent e )


{
campos.Nome.setText( "" );
campos.Sobrenome.setText( "" );
campos.Endereco.setText( "" );
campos.Cidade.setText( "" );
campos.Estado.setText( "" );
campos.Cep.setText( "" );
}
Classe adicionaRegistro.Java
Explicao
A

150

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


public adicionaRegistro( Connection c, MontaTela f, JTextArea o )
{
conecta = c;
campos = f;
saida = o;
}
Statement executaSQL = conecta.createStatement();
O objeto para esta classe criado pelo mtodo createStatement() da varivel de
conexo conecta.
Este objeto usado para a passagem de declarao SQL.
A varivel de conexo conecta foi recebida como um parmetro conforme visto no
bloco A.
Na classe Fornecedores vemos a seguinte linha: conecta =
DriverManager.getConnection( url ); esta linha indica onde encontrar o banco de dados
para realizar a conexo.
if ( !campos.Sobrenome.getText().equals("") && !campos.Nome.getText().equals(""))
Se o campo Sobrenome e o campo Nome no estiverem vazios as instrues
deste IF sero executadas.
Caso estejam vazios as instrues aps o ELSE que sero executadas:
else
JOptionPane.showMessageDialog(null,
"PREENCHA OS CAMPOS",
"Ateno",JOptionPane.ERROR_MESSAGE);
executaSQL.close();
String query = "INSERT INTO Fornecedores (Nome,Sobrenome,Endereo,Cidade,
Estado,Cep)"+
"VALUES(' "+campos.Nome.getText()+" ' , ' "+campos.Sobrenome.getText()+" ' , '
"+campos.Endereco.getText()
+" ' , ' "+campos.Cidade.getText()+" ' , ' "+campos.Estado.getText()+" ' , '
"+campos.Cep.getText()+" ' )";
Esta linha atribui um contedo a varivel query.
Este contedo a instruo SQL INSERT para incluir registros na tabela
fornecedores.
Uma instruo SQL pura de incluso a que se segue:
INSERT INTO nometabela (campo1, campo2) VALUES (valor,valor)
Em um exemplo prtico teramos:
INSERT INTO estado (Sigla, Nome) VALUES ( SP , So Paulo )
Um grande problema entendermos as aspas duplas e simples vamos por partes.
O que queremos incluir na tabela Fornecedores nos campos
Nome,Sobrenome,Endereo,Cidade, Estado,Cep, o contedo digitado nas caixas de
texto.
String query = "";
String query = "INSERT INTO Fornecedores (Nome,Sobrenome,Endereo,Cidade,
Estado,Cep) VALUES(' Nome , Sobrenome , Endereo , Cidade , Estado , Cep
)";
151
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java

Caso esta instruo no coubesse em uma nica linha faramos o seguinte:


String query = "INSERT INTO Fornecedores (Nome,Sobrenome,Endereo,Cidade,
Estado,Cep)
+ VALUES(' Nome , Sobrenome , Endereo , Cidade , Estado , Cep )";
EM JAVA
String query = "INSERT INTO Fornecedores (Nome,Sobrenome,Endereo,Cidade,
Estado,Cep)"
+"VALUES(' "+campos.Nome.getText()+" ' , ' "+campos.Sobrenome.getText()+" ' , '
"+campos.Endereco.getText()
+" ' , ' "+campos.Cidade.getText()+" ' , ' "+campos.Estado.getText()+" ' , '
"+campos.Cep.getText()+" ' )";

int result = executaSQL.executeUpdate( query );


Declara uma varivel como numrica inteira com o nome result.
O mtodo executeUpdate do objeto executaSQL executa o contedo da string
query.
O mtodo executeUpdate envolve as declaraes de alteraes do banco de
dados do tipo INSERT, UPDATE, DELETE
O resultado atribudo a varivel result.
if ( result == 1 ){
saida.append( "Inserido com Sucesso\n" );
Se o resultado da execuo igual a um, porque a incluso foi bem sucedida.
exibida a mensagem Inserido com Sucesso\n.
E todos os campos texto so limpos. campos.Nome.setText( "" );
else
saida.append( "Erro na Incluso\n" );
Caso a incluso no seja bem sucedida exibida a mensagem: Erro na Incluso\n
E todos os campos texto so limpos. campos.Nome.setText( "" );

Classe consultaRegistro.java
Explicao
String query = "SELECT * FROM Fornecedores WHERE Sobrenome =
'"+campos.Sobrenome.getText()+"'";
Esta linha atribui um contedo a varivel query.
Este contedo a instruo SQL SELECT para consultar registros na tabela
fornecedores.
Uma instruo SQL pura de consulta a que se segue:
152
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

Grupo iPED - Curso de Java


SELECT campo1,campo2 FROM tabela WHERE condio
Quando se usa um asterisco no lugar do nome do campo porque queremos uma
consulta em todos os campos.
Em um exemplo prtico teramos:
SELECT nome,endereo FROM clientes WHERE sobrenome = Jonas
Um grande problema entendermos as aspas duplas e simples vamos por partes.
O que queremos consultar todos os campos na tabela Fornecedores onde o
campo sobrenome seja igual ao contedo da varivel Sobrenome.
String query = ;
String query = "SELECT * FROM Fornecedores WHERE Sobrenome = ;
String query = "SELECT * FROM Fornecedores WHERE Sobrenome = '
"+campos.Sobrenome.getText()+" ' ";
ResultSet rs = consultaSQL.executeQuery( query );
Uma declarao do tipo SELECT devolve como resultado uma lista e esta lista
interceptada pela JDBC atravs de um objeto do tipo ResultSet.
display( rs );
O mtodo display usado para exibir o resultado da consulta.
O contedo de rs passado como parmetro.
public void display( ResultSet rs )
Mtodo responsvel pela exibio do resultado.
Recebe como parmetro o ResultSet armazenado na varivel rs.
Este mtodo no retorna nada.
rs.next();
Uma vez pronto um ResultSet possvel mover o ponteiro para frente ou para trs
nas linhas atravs de uma chamada ao mtodo Next, que devolve uma varivel do
tipo lgica (True ou False) informando se concluiu com sucesso ou no a passagem
da prxima linha. Ento podemos, navegar dentro do ResultSet.
int registroNumero = rs.getInt( 1 );
Declara como um nmero inteiro a varivel registroNumero.
Atribu a esta varivel o resultado de uma chamada ao conjunto consultado rs,
usando o mtodo getInt.
O mtodo getInt pega o registro pelo seu nmero posicional a partir do 1
Nesta instruo queremos pegar o primeiro campo.
O primeiro campo da nossa tabela o campo Cdigo.
if ( registroNumero != 0 ) {
Se houver uma informao no rs, ou seja, este no zero, porque um registro foi
encontrado, e deve ser exibido.
campos.Codigo.setText( String.valueOf( registroNumero));
A classe String fornece um conjunto de mtodos que aceitam argumentos de
vrios tipos e convertem esses argumentos em strings e os retornam como objetos
Proibida a reproduo por qualquer meio eletrnico ou impresso.
Grupo iPED - Todos os direitos reservados - www.iped.com.br

153

Grupo iPED - Curso de Java


String.
O mtodo valueOf retorna o contedo de registroNumero convertendo-o em um
string
campos.Nome.setText( rs.getString( 2 ) );
Utiliza o mtodo getString para obter no string de uma coluna do tipo string.
A coluna dois o campo Nome trs sobrenome, a assim sucessivamente.
Classe alteraRegistro.java
Explicao
String query = "UPDATE Fornecedores SET Nome='" + campos.Nome.getText() +
"', Sobrenome='" + campos.Sobrenome.getText() +
"', Endereo='" + campos.Endereco.getText() +
"', Cidade='" + campos.Cidade.getText() +
"', Estado='" + campos.Estado.getText() +
"', Cep='" + campos.Cep.getText() +
"' WHERE Cdigo=" + campos.Codigo.getText();
Esta linha atribui um contedo a varivel query.
Este contedo a instruo SQL UPDATE para ALTERAR registros na tabela
fornecedores.
Uma instruo SQL pura de ALTERAO a que se segue:
UPDATE tabela SET campo = contedo
Em um exemplo prtico teramos:
UPDATE imvel SET comprador = Valdir
O que queremos alterar os campos da tabela Fornecedores atribuindo um novo
contedo.
Classe apagarRegistro.java
Explicao
String query = "DELETE FROM Fornecedores WHERE Cdigo=
"+campos.Codigo.getText();
Esta linha atribui um contedo a varivel query.
Este contedo a instruo SQL DELETE para apagar registros na tabela
fornecedores.
Uma instruo SQL pura para apagar registros a que se segue:
DELETE FROM tabela WHERE condio;
Em um exemplo prtico teramos:
DELETE FROM imoveis WHERE bairro = Moema;
O que queremos apagar o registro que consultamos tabela Fornecedores onde o
campo Cdigo seja igual ao contedo da varivel Cdigo.

154

Proibida a reproduo por qualquer meio eletrnico ou impresso.


Grupo iPED - Todos os direitos reservados - www.iped.com.br

Vous aimerez peut-être aussi