Вы находитесь на странице: 1из 142

PROGRAMAO APLICADA

JAVA
EDIO N 1 - 2007

LARCIO DA CRUZ LOUREIRO


___________________________________________________________________
Apoio

Gesto e Execuo

Contedo e Tecnologia

Programao Aplicada - Java

Apresentao

a)
Este livro didtico contm a disciplina de Programao Aplicada em Java.
b)
A programao em Java um assunto muito rico, com centenas de livros j
publicados, em vrios idiomas, desde o seu lanamento. Este material foi elaborado
para que voc conhea as propostas tecnolgicas da plataforma Java e obter sua
primeira experincia com a linguagem de programao.
c)
Voc ver que a convergncia dos assuntos que voc estudou at agora, iro
ser aplicados nas prximas pginas, principalmente sobre a programao orientada
a objetos, mtodo utilizado para o desenvolvimento de sistemas usando Java.
d)
O mtodo de estudo para este material evolutivo, medida que voc
avanar nos estudos, as informaes iro complementando as concluses do tpico
anterior. Diante do grande volume de informaes e das infinitas possibilidades da
plataforma Java, este material procura apresentar os aspectos mais relevantes para
o seu incio na construo de aplicaes em Java. Mas com certeza, no esgota o
assunto.
e)
importante ressaltar que o livro foi desenvolvido com o objetivo de
proporcionar-lhe um aprendizado independente, inerente aos estudos do EAD, e o
contedo foi revisado com o intuito de oferecer-lhe uma linguagem simples, objetiva
e estimulante.
f)
Lembre-se de que a sua passagem por esta disciplina ser tambm
acompanhada pelo Sistema de Ensino Tupy Virtual, seja por correio postal, fax,
telefone, e-mail ou Ambiente Virtual de Aprendizagem.
g)
Entre sempre em contato conosco quando surgir alguma dvida ou
dificuldade.
h)
Toda a equipe ter a maior alegria em atend-lo, pois a sua aquisio de
conhecimento nessa jornada o nosso maior objetivo.
i)
Acredite no seu sucesso e bons momentos de estudo!
Equipe Tupy Virtual.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

SUMRIO

CARTA DO PROFESSOR...........................................................................................4
CRONOGRAMA DE ESTUDOS..................................................................................6
PLANO DE ESTUDOS ................................................................................................7
AULA 1 - CONHECENDO A PLATAFORMA JAVA...................................................9
AULA 2 - SINTAXE, DADOS E OOP EM JAVA.......................................................29
AULA 3 - ESTRUTURAS DE PROGRAMAO......................................................58
AULA 4 - HERANA.................................................................................................76
AULA 5 - USANDO SWING E CRIANDO APPLETS................................................84
AULA 6 - TRABALHANDO COM OBJETOS..........................................................106
AULA 7 - JAVA COM BANCO DE DADOS............................................................123

Carta do Professor
SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

O Java pode estar supervalorizada, mas ela tambm poder


ser to significativa para o mundo da computao, como a
televiso foi para a comunicao em massa.
(U.S. News and World Report, 1995)
Caro(a) aluno(a),
Java um dos assuntos mais instigantes no mundo da programao de
computadores. Surgida na dcada de 90, j nasceu com uma curiosidade (e at hoje
nunca confirmada): a palavra Java vem da marca de caf que os programadores
tomavam quando iniciaram o seu projeto. Algumas verses, na Internet, afirmam que
era na verdade o nome da cafeteria prxima do escritrio de trabalho da equipe.
Nada surpreendente, pois j dizem os praticantes da velha arte da programao de
computadores: o combustvel para os profissionais manterem altas horas de
produo era (e talvez ainda seja) o caf.
A linguagem Java nasceu com outra curiosidade ainda mais forte: fora criada
para programar eletrodomsticos, pois em 1990 a Sun, desenvolvedora do projeto,
tinha a inteno de fabricar eletrnica de consumo com algumas capacidades extras.
Ento, veja prezado(a) aluno(a), com esta primeira percepo que eu
desejo motiv-lo(a). A linguagem Java um assunto que, desde o seu projeto,
polmico e influencia os profissionais da Tecnologia da Informao a, no mnimo,
refletir sobre suas possibilidades.
Em apenas alguns meses, o Java saiu dos laboratrios de pesquisa e
desenvolvimento da Sun para o centro da era da World Wide Web. Foi a linguagem
certa, no momento certo, com a tecnologia certa. De todas as tecnologias e
recursos oferecidos pela linguagem Java, talvez a sua caracterstica mais importante
a portabilidade. A Internet e seu servio WWW ofereciam um mundo de
possibilidades e a portabilidade era o elemento que o Java oferecia para que as
aplicaes pudessem explorar este novo ambiente para se fazer negcios. Alm
disso, como a linguagem Java foi construda com base nas famosas e largamente
utilizadas linguagens C e C++, ela arregimentou um grande exrcito de
programadores. Para fechar, explorou de forma nativa a programao orientada a

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

objetos, que at ento era um mtodo exclusivo de linguagens pouco absorvidas,


como o Smalltalk.
Aprender a programar em Java, hoje, muito mais fcil. A verso atual da
linguagem est muito poderosa. H um grande nmero de ambientes de
programao para auxiliar o programador no trabalho com a linguagem e o grande
volume de informaes na Internet sobre o tema, favorecem a um aprendizado mais
rpido, sem contudo deixar de ser uma experincia profissional das mais procuradas
da atualidade.
Cabe aqui ainda destacar que a Sun criou o Java com uma mentalidade
totalmente nova sobre o licenciamento e uso. Todo o entorno da tecnologia foi
transformado em especificao e publicada na Internet, e agora mantida por um
comit chamado Java Community Process (JCP), que rene profissionais de
renome em Java e a prpria Sun, seguindo um modelo demoncrtico para a
conduo da melhorias das tecnologias.
Ento, com este clima de atualidade e de grande potencial de crescimento
que convido voc para mais esta aventura do conhecimento na informtica. Desejolhe um estudo rico e cheio de surpresas positivas, j que voc estar adentrando
para um grande mundo de tecnologias, servios, recursos e possibilidades de
negcios, que o Java oferece a todos.
Bons estudos!
Professor Larcio da Cruz Loureiro

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

Cronograma de Estudos
Acompanhe no cronograma abaixo os contedos das aulas, e atualize as
possveis datas de realizao de aprendizagem e avaliaes.
Semana

Carga horria

Aula

Data / Avaliao

Conhecendo a Plataforma

_/_ a _/_

Java
18

Sintaxe, dados e OOP

_/_ a _/_

24

Estruturas de Progamao

_/_ a _/_

12

Herana

_/_ a _/_

16

_/_ a _/_
Usando Swing e criando

16

Applets
_/_ a _/_

14

Trabalhando com Objetos

16

Java com Banco de Dados

SOCIESC Sociedade Educacional de Santa Catarina

_/_ a _/_

Programao Aplicada - Java

Plano de Estudos
EMENTA

Conhecendo a plataforma Java

Instalando o Java

Sintaxe da linguagem e convenes

Usando dados em um programa

Mtodos, classes e objetos

Conceitos avanados de objetos

Trabalhando com estruturas de dados

Strings e Arrays

Applets Web e Swing

Programao orientada a eventos

Modificadores e Associao

Introduo herana

Distribuindo pacotes

Usando Javabeans e o Java em Rede

Programao no lado servidor Java Server Pages

Introduo ao JDBC

Objetivos da Disciplina

Geral
Implementar os princpios da orientao a objetos usando a linguagem
Java e aprender como implementar aplicaes Java usando os principais
recursos da plataforma.

Especficos
o Descrever os componentes da plataforma Java;
o Construir programas orientados a objetos usando a linguagem Java;
o Conhecer e desenvolver programas usando a sintaxe de comandos da
linguagem Java;

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

o Aprender a utilizar recursos de banco de dados em Java.


Carga Horria: 120 horas

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

Aula 1

CONHECENDO A PLATAFORMA
JAVA
Objetivos da aula
Ao final desta aula, voc dever ser capaz de:

Identificar os componentes da plataforma e suas variaes;

Diferenciar os tipos de programas Java;

Identificar a verso do Java a ser utilizada em determinadas


aplicaes;

Preparar o ambiente de um computador para o


desenvolvimento em Java.

Contedos da aula
Acompanhe os contedos desta aula. Se voc preferir,
assinale os contedos na medida em que for estudando.

A plataforma Java;

O ambiente Java;

Tipos de programas;

As verses do Java;

Instalando o ambiente para programao.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

10

Prezado(a) aluno(a),
Tem um ditado nos Estados Unidos assim: Voc precisa comer antes de
cozinhar. Voc precisa ouvir antes de ver. Voc precisa viajar antes de
dirigir. E voc precisa executar programas em um computador, antes de programar.
Eis o objetivo desta aula. Voc saber como a plataforma Java foi construda para
executar programas e quais os componentes disponveis que ajudam o programador
na elaborao de solues de tecnologia. Voc tambm aprender como instalar o
Java para programao e qual a instalao necessria para execuo de programas
feitos em Java.
Finalmente, voc conhecer as vrias verses que o Java possui e os
direcionamentos tecnolgicos que a plataforma est seguindo.
Boa Aula!

1 A PLATAFORMA JAVA
A tecnologia Java foi desenvolvida pela Sun Microsystems para que fosse
uma linguagem de programao orientada a objetos, como tambm uma plataforma
de desenvolvimento.
Uma plataforma um ambiente de hardware e software no qual um programa
executado. Algumas das plataformas mais populares so o Windows, Linux,
Solaris e o Macintosh. Algumas das plataformas existentes podem ser descritas
como uma combinao de sistema operacional com hardware.
Java difere da maioria das plataformas de mercado, pois se posiciona como
uma plataforma apenas de software, que executada SOBRE as plataformas
baseadas em hardware.
A tecnologia Java pode ser utilizada para a construo de sistemas
convencionais de negcios, como tambm para o desenvolvimento de sistemas
bseados na Internet. Algumas das vantagens que a linguagem de programao Java
oferece aos programadores desses dois tipos de aplicaes a sua segurana e a
sua capacidade de ser independente de arquitetura, o que significa permitir ao
programador a capacidade de construir programas em Java
executados em qualquer plataforma ou sistema operacional.
A plataforma Java possui dois componentes:
SOCIESC Sociedade Educacional de Santa Catarina

que podero ser

Programao Aplicada - Java

11

A Java Application Programming Interface (API), uma grande coleo


de componentes de software prontos para uso que fornecem
capacidades importantes para reuso. A API Java organizada em
bibliotecas de classes e interfaces relacionadas. As bibliotecas so
conhecidas como packages (pacotes java.*, javax.* e extenses);

A Java Virtual Machine (JVM), a base da plataforma Java, utilizada para


a execuo dos programas escritos e compilados em Java. Foi construda
para vrias plataformas de hardware e software do mercado.

2 O AMBIENTE JAVA
Um programa Java pode ser executado em vrios tipos de computadores por
que ele no executa instrues diretamente no computador. Na verdade, executa o
programa em um computador virtual conhecido como Java Virtual Machine (JVM).
Voc pode escrever um programa Java usando qualquer editor de textos. O
arquivo contendo as instrues de programao em Java tambm conhecido como
cdigo-fonte. O compilador Java converte o cdigo-fonte em um tipo de arquivo
chamado

bytecode,

independente

de

plataforma.

Um

programa

chamado

Interpretador Java verifica o bytecode e executa as instrues do bytecode, linha a


linha, dentro da JVM. Considerando que o programa Java executa de forma isolada
do sistema operacional, permite que possa ser executado em qualquer computador
que possua uma verso JVM. Dessa forma, com a JVM sendo a responsvel pela
execuo do programa, recursos de segurana so disponibilizados para o
programador, que esto acima das fragilidades que possam existir no sistema
operacional (figura 1.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

12

Figura 1 O ambiente Java (JRE Java Runtime Environment)


Ao contrrio do Java, o uso de outras linguagens de programao, os
fornecedores de software precisam ter diferentes verses do programa para cada
plataforma que deseja execut-lo. No Java uma nica verso do programa
executada em todas as plataformas. O Bytecode Java permite que se realize a
promessa de escrever uma vez e executar em qualquer lugar(figura 2). Voc pode
compilar seu programa em bytecode para qualquer plataforma que possua um
compilador Java. Ento o bytecode poder ser executado em qualquer
implementao da JVM. Isso significa que um programa construdo em Windows,
ter o mesmo comportamento em Linux, em Unix, etc.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

13

Figura 2 O mtodo Java escrever uma vez, executar vrias vezes


Alm disso, duas tecnologias de implementao fazem parte do JRE: Java
Plug-in, a qual permite que applets sejam executados nos navegadores para a
Internet, e o Java Web Start, que permite a instalao de aplicaes stand alone
atravs de uma rede.
3 TIPOS DE PROGRAMAS
Trs tipos de programas podem ser construdos usando Java:
Aplicaes executadas em uma JVM instalada no sistema operacional do
computador local;
Applets executadas atravs de uma JVM no navegador, usando um plug-in;
Servlets so aplicaes executadas em uma JVM instalada em um servidor
Web.
Enquanto os applets e as aplicaes so usualmente um tipo de interface
grfica com o usurio e um conjunto de funcionalidades embutidas, os servlets
fornecem funcionalidades para serem consumidas por pginas Web, ou seja, atravs
dos servlets o programador constri recursos a serem executados em back-end no
servidor Web. Desta forma, a interface com o usurio de um servlet normalmente

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

uma pgina HTML com um formulrio,

14

que chama o servlet. Mas tambm

importante observar que um applet ou uma aplicao Java, que so executadas


atravs de HTTP (Hypertext Transfer Protocol) podem chamar um servlet.
As aplicaes Java (figura 3) podem ser subdivididas em:

Aplicaes Console: so as aplicaes com o foco em apresentao e


interface com o usurio usando apenas caracteres, por exemplo no
Windows, so executadas em uma sesso do Prompt do MS-DOS;

Aplicaes grficas com Janelas: possuem uma interface grfica com


elementos visuais, como por exemplo menus, barras de ferramentas e
caixas de dilogo.

Figura 3 Os tipos de aplicaes Java

4 AS VERSES DO JAVA
Desde 1995 a Sun vm lanando vrias verses do Java que resultado das
melhorias tecnolgicas e inovaes recebidas por profissionais do mundo todo e
tambm como consequncia de sua larga adoo.

Java 2 Platform Standard Edition (J2SE): o kit necessrio para o


desenvolvimento de todas as aplicaes em Java, exceto aquelas

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

15

desenhadas para dispositivos de consumo. O J2SE j vem com um


compilador, o ambiente de execuo e as APIs principais do ncleo da
plataforma Java;

Java 2 Platform Enterprise Edition (J2EE): esse pacote inclui um


servidor de aplicaes, um servidor Web, APIs especficas para a J2EE,
suporte Enterprise JavaBeans, Java Servlets API e a tecnologia Java
Server Pages (JSP). O J2EE utiliza o J2SE;

Java Server Pages Development Kit (JSWDK): se voc est interessado


em construir e testar pginas JavaServer ou servlets, este kit fornece os
componentes fundamentais para execuo, incluindo o J2SE, mas se voc
estiver trabalhando com JavaBeans, ser necessria a instalao do
J2EE;

Java

Platform,

Micro

Edition

(J2ME):

direcionada

para

os

programadores que esto construindo programas para dispositivos


mveis, como Palm Pilots, celulares e dispositivos de consumo, esse kit
fornece

as

ferramentas

para

compilao,

disponibilizao

configuraes de dispositivos, incluindo as APIs especficas para cada tipo


de dispositivo.
A J2SE oferece um ambiente completo para suportar o desenvolvimento de
sistemas, inclusive para desktop e servidores e ela a base para todas as demais
plataformas, como a J2EE.
j)

A plataforma J2SE verso 1.6 est distribuda em blocos que


determinam sua especialidade e recursos, de acordo com a necessidade do
programador. Uma viso clara sobre os componentes da plataforma est na
figura 4.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

16

k)

Figura 4 A plataforma J2SE


A verso do Java 1.0, lanada em 1995, forneceu a estrutura bsica para o
desenvolvimento de programas, basicamente as bibliotecas necessrias para
escrever e compilar programas simples.
A verso 1.1 do Java incorporou grandes avanos, lanada em 1997, com
sua maior implementao para uma interface grgica (GUI), usando um pacote de
bibliotecas (package) chamada AWT. Sua abordagem usando AWT foi uma grande
evoluo nas interfaces grficas, j que suportava Netscape e Internet Explorer com
o mesmo cdigo. Tambm nesta verso foram lanados recursos para auxiliar na
construo de programas com acesso a banco de dados (JDBC) e comunicao
em rede (RMI).
O Java 2.0, lanado em 1998, na verdade internamente, considerada como
verso 1.2 do JDK. O principal objetivo de batiz-la como 2.0 para amplificar as
mudanas significativas que ocorreram na plataforma, onde esta verso agregou
mais de 500 novas classes, o dobro da verso anterior. Tambm nessa verso,
novas adies foram incorporadas plataforma, trazendo cada vez mais a
abordagem de uso de plu-ins linguagem. Uma nova capacidade de criao

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

17

usando interfaces grficas foi liberada, chamada SWING. As verses da J2SE


comearam a ser lanadas, estando hoje na verso 6 (J2SE 1.6).
O site oficial da plataforma Java e para obter maiores informaes sobre as
verses esto no seguinte endereo:
http://java.sun.com
5 INSTALANDO O AMBIENTE PARA PROGRAMAO
Antes de voc iniciar os trabalhos de programao, necessrio preparar o
seu computador para permitir que os programas sejam interpretados e compilados.
Conforme j foi tratado anteriormente, a linguagem Java no exige que o
programador utilize uma ferramenta particular para a construo de seus programas
em Java. Na verdade, a linguagem nasceu com um apelo de uso livre, ou seja,
incentivar o programador a escolher qual a melhor forma que deseja trabalhar,
quebrando, com isso, paradigmas de algumas linguagens que demonstravam uma
amarrao a um ambiente de produo, o que era comercialmente aceitvel.
Historicamente, as linguagens compiladas no exigem necessariamente uma
ferramenta para construir programas, mas a sua adoo facilita o trabalho do
programador e aumenta a sua produtividade.
Por isso, surgiram as IDEs (acronismo de Integrated Development
Environment, ou Ambiente de Desenvolvimento Integrado) com o objetivo de auxiliar
o programador na construo dos sistemas e acelerando o processo de construo,
integrando em um nico lugar, todos os recursos necessrios para a composio de
uma aplicao em Java.
Nesse sentido, como a especificao Java busca estabelecer, vrios
fabricantes de software liberaram suas verses de IDE, sendo algumas muito
conhecidas, como a Borland, a IBM e a Oracle. Outras iniciativas surgiram, de forma
gratuita como o modelo de software livre, para atender aos programadores que
desejavam manter uma linha de iniciativa sem custos. O produto gratuito mais
utilizado no mundo Java o Eclipse (www.eclipse.org) (figura 5).

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

18

Figura 5 O ambiente do Eclipse


Segundo pesquisa (figura 6), o resultado do Java IDE Market Survey
(http://www.qa-systems.com/products/qstudioforjava/ide_marketshare.html), o
Eclipse permanece como o lder de mercado de IDE para Java.

Figura 6 Resultados da Pesquisa


importante ainda ressaltar que o grau de maturidade dessas ferramentas
fez com que elas no ficassem exclusivas para uma determinada linguagem, como
SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

19

o caso do Eclipse, que permite a construo de programas usando linguagem C++ e


Java. Outro aspecto comeou a incomodar a comunidade Java: medida que as
IDEs ficavam poderosas, maior era a capacidade exigida de processamento e
recursos do computador, gerando um certo desconforto para os profissionais. Essa
situao gerou uma nova onda de IDEs alternativos com finalidades especficas e
com o objetivo de oferecer ambientes equivalentes a cada condio do profissional.
Neste mdulo,o utilizaremos um IDE muito simples chamado Jcreator
(www.jcreator.com).
Para que voc possa construir programas usando o Jcreator, primeiramente
voc precisa efetuar a instalao do JDK (Java Development Kit) da Sun. O JDK o
pacote que fornece todas as bibliotecas principais da linguagem, o compilador e o
ambiente de execuo de aplicaes, ou runtime, conhecido como JRE (Java
Runtime Environment). Para apenas executar aplicaes, basta o JRE.
Em hardware Intel, o Java 2 SDK suporta as seguintes plataformas:

Windows 98, Windows NT 4.0, Windows ME, Windows XP, Windows 2000
e 2003. A verso 6 j suporta Windows Vista.

A documentao da plataforma sugere que um hardware com processador


Pentium 166 Mhz e 32 Mbytes de RAM so suficientes para executar aplicaes
com interfaces grficas. Alm disso, recomenda-se 48 Mbytes de RAM para a
execuo de applets a serem executados em navegadores. So necessrios 120
Mbytes de disco rgido para a instalao do SDK.
Efetue o download do SDK correspondente sua plataforma no seguinte
endereo oficial da Sun (figura 6):
https://sdlc1a.sun.com/ECom/EComActionServlet;jsessionid=3F79837846CC
3A56F4F03527F746C218

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

20

Figura 6 Pgina de download do JDK


Aps a concluso do download, execute os seguintes passos:
1. Verifique se o arquivo baixado corresponde corretamente ao tamanho do
arquivo informado na pgina ( aproximadamente 50 Mbytes) (figura 7);

Figura 7 Tamanho do arquivo de instalao do JDK


2. Desinstale uma verso anterior do JDK;
3. Execute o programa de instalao, efetuando um duplo clique sobre o
arquivo baixado. importante lembrar que, nas verses do Windows XP,
NT, 2000, 2003 e Vista, voc precisa ter privilgios como administrador
para realizar a instalao;
a. O programa de instalao, quando executado, apresenta um
assistente de instalao, que auxilia o usurio no processo de
configurao do JDK no computador. uma abordagem que facilita
para o usurio iniciante;
b. A primeira tela solicita a sua concordncia com os termos do
contrato de licena de uso;

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

21

c. A segunda tela, permite determinar quais os componentes do JDK


voc deseja instalar. comum para o JDK, instalar todos os seus
componentes;
d. Aps ter determinado os componentes a instalar, o programa de
instalao iniciar a cpia dos arquivos do JDK para o computador;
e. Ao terminar a instalao, ser apresentada uma janela de
confirmao de que o processo est concludo, conforme mostra a
figura 8:

Figura 8 Janela de concluso da instalao


4. Verifique a pasta de instalao do JDK. A instalao criar duas subpastas
na pasta Arquivos de Programas do Windows: jdk1.6.0_01 e jre1.6.0_01;
5. Definindo a varivel PATH no Windows XP;
Voc pode desenvolver em Java sem preocupar-se com a varivel de
ambiente PATH do Windows. Mas se deseja ter um ambiente mais
conveniente para trabalhar, pode determinar o caminho onde esto as
bibliotecas e o compilador do Java.
a. Para configurar a varivel no Windows, acesse a janela de
propriedades do cone Meu Computador ou atravs do Painel de
Controle;
b. Acesse guia Avanado;
c. Clique no boto variveis de ambiente, tal qual mostra a figura 9;

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

22

Figura 9 Janela de variveis de ambiente


d. Localize no grupo inferior de variveis (Variveis do sistema) a
palavra TEMP e efetue um duplo clique sobre ela. Essa varivel
determinar onde est o compilador, a mquina virtual (JVM) e os
demais utilitrios da plataforma Java;
e. Digite ao final do texto j existente na varivel:
;C:\Arquivos de programas\Java\jdk1.6.0_01\bin

Lembre-se de que a pasta Arquivos de Programas pode alterar de


acordo com o idioma do Windows e a instruo inicia com o sinal de
ponto-e-vrgula, para separar a instruo atual da instruo j
existente na varivel. Veja a figura 10.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

23

Figura 10 Varivel PATH


f. Clique no boto OK;
g. Repita os passos para a varivel CLASSPATH, mas o contedo
que dever ser adicionado :
;.

h. Feche todas as janelas.


Agora que o JDK est instalado e configurado, vamos instalar o JCreator LE,
a ferramenta IDE que vamos utilizar neste mduloo. Efetue o download do arquivo
do site do fabricante (http://www.jcreator.com/download.htm), de acordo com o que
mostra a figura 11.

Figura 11 Pgina de download do Jcreator LE


Repare que existem vrias verses do produto e a que vamos utilizar
freeware, ou seja, podemos utilizar a ferramenta sem pagarmos nada e podemos
inclusive replicar o produto para outras pessoas.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

24

Aps baixar o arquivo, execute-o para entrar no programa de instalao, que


o mesmo das demais aplicaes para Windows, usando um assistente de
instalao. Siga os passos do programa para conduzir a instalao do JCreator.
l)

Ao terminar, o programa de instalao ir executar o JCreator LE. A


primeira vez que voc executa o JCreator, aps a sua instalao, o software
apresenta uma caixa de dilogo (figura 12) com o objetivo de determinar:
1) Associao dos tipos de arquivos especficos para o programa;
2) O Java Home Directory, que j definimos nas variveis;
3) E o JavaDoc, que a documentao da plataforma Java.

Figura 12 Configuraes iniciais do JCreator


O JCreator tem por finalidade oferecer caminhos rpidos e fceis
,principalmente para o programador iniciante. O ambiente do produto j est
orientado para esta particularidade. Quando voc inicia o programa, uma janela
central apresenta a documentao das principais opes de execuo de comandos
no produto (figura 13). Alm disso, o produto segue os padres grficos das
aplicaes Windows, com menus, janelas, barra de ferramentas e barra de status.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

25

Figura 13 Janela de incio do JCreator


Vamos agora testar se realmente nosso ambiente de programao est
configurado adequadamente. Vamos criar uma aplicao simples e compil-la para
avaliar os resultados que teremos.
1. Clique no menu File, depois aponte para o item de menu New e no
submenu apresentado, clique sobre o item File;
2. Na janela que ser apresentada, selecione a opo Java Class (figura 14);

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

Figura 14 File Wizard


3. Clique no boto Next;
4. Na caixa Name, digite: Exemplo e clique no boto Finish;
5. Repare que ser apresentada a estrutura inicial de uma classe Java:
/**
/**
* @(#)Exemplo.java
*
*
* @author
* @version 1.00 2007/6/3
*/
public class Exemplo {
/**
* Creates a new instance of <code>Exemplo</code>.
*/
public Exemplo() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {

SOCIESC Sociedade Educacional de Santa Catarina

26

Programao Aplicada - Java

27

// TODO code application logic here


}
}

6. Digite a seguinte instruo de cdigo Java na rea indicativa com o texto


TODO code application logic here:
System.out.println(Exemplo de teste para o ambiente Java);

7. Clique no boto Execute(figura 15) da barra de ferramentas;

Figura 15 Resultados do programa

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

28

Sntese
Nesta aula voc aprendeu o que a plataforma Java, sua importncia e seus
componentes. Agora voc j consegue identificar quais as verses do Java e como
cada uma de suas verses esto orientadas para determinadas necessidades. Voc
tambm conheceu um pouco da histria da plataforma, extremamente resumida,
mas que lhe oferece uma viso de como as tecnologias envolvidas chegaram at a
verso atual da plataforma.
Um dos aspectos relevantes que voc pde aprender foi entender como se
iniciam os trabalhos no desenvolvimento de progamas em Java.
Na prxima aula, voc comear a conhecer a linguagem Java, suas regras e
padres. Ser trabalhado no seu primeiro programa em Java.
At l.
Exerccios Propostos
1) Qual a principal caracterstica da linguagem Java que a diferenciou das
demais linguagens na poca em foi lanada? Explique porque.
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
2) Descreva as verses do Java e identifique qual a base para todas as outras.
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
3) Qual a importncia do uso de um IDE para programar em Java?
______________________________________________________________
______________________________________________________________
__________________________________________________
SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

Aula 2

SINTAXE, DADOS E OOP EM JAVA


Objetivos da aula
Ao final desta aula, voc dever ser capaz de:

Descrever as regras de sintaxe da linguagem;

Identificar os arquivos envolvidos no processo de


programao Java;

Utilizar variveis, tipos de dados e operadores;

Aplicar os conceitos de OOP na linguagem Java.

Contedos da aula
Acompanhe os contedos desta aula. Se voc preferir,
assinale os contedos na medida em que for estudando.

Sintaxe;

Usando dados e variveis;

Mtodos, classes e objetos.

SOCIESC Sociedade Educacional de Santa Catarina

29

Programao Aplicada - Java

30

Prezado(a) aluno(a),
Nesta aula voc aprender os elementos bsicos da linguagem Java,
especificamente suas regras de sintaxe e como um programa
organizado. Voc j estudou sobre Lgica de Programao e os conceitos sobre
Orientao a Objetos, agora voc ir colocar em prtica os assuntos, utilizando a
linguagem Java.
Boa Aula!

1 SINTAXE
A sintaxe de uma linguagem determina a forma como os programas devem
ser construdos. A linguagem Java possui um grande conjunto de regras, mas no
muito diferente das demais linguagens orientadas a objetos. Tambm importante
observar que alguns IDEs mais avanados j facilitam na digitao das instrues, j
que fornecem ajuda e autocomplementao de cdigo, de acordo com um
determinado contexto.
A linguagem Java, quanto sintaxe, similar s linguagens C e C++, mas
com uma srie de melhorias e agregaes, principalmente no que se refere aos
recursos orientados a objetos.
A maioria dos autores consideram que o melhor caminho para aprender a
sintaxe do Java avaliando um programa simples. Vamos utilizar o programa
apresentado na aula anterior para testarmos o ambiente de desenvolvimento Java
que configuramos.
1 /**
2 /**
3

* @(#)Exemplo.java

* @author

* @version 1.00 2007/6/3

*/

9
10 public class Exemplo {
11
12

/**

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

13

* Creates a new instance of <code>Exemplo</code>.

14

*/

15

public Exemplo() {

16

31

17
18

/**

19

* @param args the command line arguments

20

*/

21

public static void main(String[] args) {

22

System.out.println(Exemplo de teste para o ambiente

Java);
23

24 }

As linhas que esto iniciadas com */ ou * ou // so comentrios e sero


desconsideradas quando o compilador realizar o trabalho de gerao de cdigo
compilado. Esta condio tambm aplicada para as linhas em branco no cdigo. A
combinao */...*.../* permite que voc implemente comentrios em mltiplas linhas.
J o uso de duas barras comuns no incio da linha, aplica a condio de comentrio
apenas na linha corrente aonde as barras foram inseridas.
A linha que contm public class Exemplo { determina a declarao da
classe, sendo as palavras public e class reservadas e a palavra Exemplo o nome
da classe que est sendo criada. As palavras reservadas da linguagem determinam
que no podem ser utilizadas como identificadores em seu cdigo de programao.
A lista de palavras reservadas na linguagem esto na tabela 1.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

32

Tabela 1 Palavras reservadas da linguagem Java

O sinal de abertura de chaves, ao final da linha 10, obrigatria e determina o


incio do bloco de instrues que fazem parte da classe. Todo bloco de instrues
margeado por chaves. Repare que h um sinal de fechamento de chaves ao final
do cdigo na linha 24.
Logo em seguida, repare que a linha 15 possui uma declarao public
Exemplo() {. a criao de um mtodo membro da classe. Nesse caso, no possui
funcionalidades, j que entre as chaves de abertura e fechamento (linha 16) no
exite qualquer instruo de cdigo em Java.
Depois, na linha 21, h a declarao mais importante de uma aplicao Java.
Na verdade, o mtodo Main o ponto de entrada no programa, quando
executado. Alm disso, dentro de uma aplicao Java s pode haver um mtodo
Main. A linha de cdigo possui uma srie de detalhes que veremos nas aulas
seguintes, mas vamos adiantando alguns detalhes:
public static void main(String[] args) {

A palavra reservada public determina um modificador de acesso. A palavra


static implementa ao mtodo main a capacidade de ser acessvel, mesmo que no
existam objetos para a classe. Isso tambm indica que todo membro criado para a
classe ir ter um mtodo idntico de main( ). Na linguagem Java, a palavra static
tambm indica unicidade, ou seja, somente um mtodo main ( ) da classe poder
SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

33

ser armazenado na memria, mas obviamente outras classes podero ter seus
prprios mtodos main ( ).
A palavra void, basicamente, significa vazio. Quando a palavra void
utilizada na declarao do mtodo main ( ), no significa que o mtodo esteja vazio,
mas que no retornar nenhum valor quando for chamado. No significa que no
poder produzir sada de dados, na verdade, o mtodo no enviar qualquer valor
de retorno para o outro ponto de cdigo que o chamou.
Nem todas as classe possuem um mtodo main ( ), a grande maioria no
possui, porm, todas as aplicaes Java precisam conter um mtodo main( ), j que
o compilador ou a JVM ir executar primeiro o mtodo main( ) da aplicao.
Finalmente, avaliando o mtodo, existem parmetros estabelecidos no
mtodo main( ). O contedo entre parnteses determina os argumentos que
devero ser passados para o mtodo, quando for chamado. A palavra String
representa uma classe Java que pode ser usada para representar strings de
caracteres, e os smbolos de colchetes ([ ]) que acompanham a palavra, significam
que a string um array. O identificador args usado para controlar qualquer valor
String que seja enviado para o mtodo Main. Essa palavra no obrigatria, mas
tradicional na implementao do mtodo main( ).
A linha executvel de fato no programa a correspondente ao nmero da
linha 21. Seu contedo :
System.out.println(Exemplo de teste para o ambiente Java);

Note que a instruo foi finalizada com o sinal ; (ponto-e-vrgula). Todas as


instrues na linguagem Java precisam terminar com ponto-e-vrgula. A frase
Exemplo de teste para o ambiente Java um argumento para o parmetro do
mtodo println. Todo argumento para um mtodo deve ser informado entre
parnteses e quando o argumento for texto, ele dever ser informado tambm entre
aspas.
Argumentos so informaes que os mtodos exigem para realizar uma
determinada tarefa. No caso, o mtodo Println imprime uma linha de texto na tela de
sada e posiciona o curso para a prxima linha, mantendo o programa pronto para
receber outras sadas. Os mtodos so sempre acompanhados de parnteses para
distingui-los de nomes de variveis.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

34

A palavra out refere-se a um objeto de uma classe base do Java, que tem por
finalidade apoiar as operaes de tela. No caso, o mtodo println membro do
objeto out, mas outros objetos tambm podem conter um mtodo com o mesmo
nome e finalidade.
A palavra System uma classe. O objeto out faz parte da classe system,
que parte integrante no ncleo de classes do Java. Um ponto importante a
observar que a linguagem Java case sensitive, ou seja, textos digitados em
maisculas e minsculas so diferentes. Por isso, fundamental que voc observe
as regras de digitao de determinado membro da linguagem.
Finalmente, os pontos que se apresentam entre os elementos da instruo
definem a hierarquia dos elementos na estrutura de classes do Java, que, nesse
caso, segue: nome da classe, ponto, nome do objeto, ponto, nome do mtodo.
1.1 Classes Java
Tudo o que voc utiliza em Java faz parte de uma classe. Quando voc est
declarando uma classe, conforme vimos no exemplo do tpico anterior, a linha
public class Exemplo representa a criao de uma classe. A palavra Exemplo
define o identificador da classe e precisa seguir as seguintes regras:

Um nome de uma classe precisa comear com um caractere alfanumrico,


smbolo de sublinhado ou o sinal de cifro;

O nome da classe somente pode conter caracteres, dgitos, sublinhados e


cifro;

Um nome de uma classe no pode conter qualquer uma das palavras


listadas como reservadas da linguagem;

Um nome de uma classe no pode ser uma das seguintes palavras: true,
false ou null;

O nome de uma classe no pode conter espaos.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

35

1.2 Comentrios
Como voc pde observar, um simples programa Java recebe um grande
nmero de linhas de cdigo. Grandes programas que executam diversas tarefas
incluem um grande volume de cdigo, o que dificulta ainda mais a sua clareza.
Os comentrios nos programas so instrues que voc insere no seu
programa e servem para a sua documentao. Os programadores utilizam
comentrios para inserir informaes relevantes sobre o que est sendo realizado
nas prximas linhas ou na linha atual, facilitam a clareza do programa, ajudando-o a
registrar detalhes que muitas vezes ficam apenas na cabea do programador.
Como melhores prticas de mercado, colocar comentrios no incio de uma
classe, descrevendo o prposito da classe, documentao sobre seus parmetros, o
nome do autor e o controle de verso, so muito comuns. Alm disso, tambm como
prtica comum, inserir no incio de cada membro da classe (mtodos, propriedades e
eventos) uma breve descrio de sua finalidade.
Existem trs tipos de comentrios na linguagem Java:

Comentrios de linha: iniciam com duas barras (//) e aplicam-se at o


final da linha corrente. Pode ser inserido no incio de uma linha ou na
mesma linha de uma instruo, ao seu final;

Comentrios de bloco: iniciam com uma barra e um asterisco (/* e


finalizam com um asterisco e uma barra (*/). Tambm pode ser utilizado
em uma nica linha, mas sua aplicao correta para comentrios que
envolvam vrias linhas contguas;

Comentrios Javadoc: so blocos especiais de comentrios que iniciam


com uma barra e dois asteriscos (/**) e finalizam com um asterisco e uma
barra (*/). Voc pode utilizar os comentrios Javadoc para gerar
documentao com um utilitrio do JDK chamado javadoc.

Os comentrios javadoc, quando colocados imediatamente antes de uma


declarao (de uma funo ou varivel), indica que podero ser includos
automaticamente em uma pgina HTML (gerado pelo comando javadoc). No
contedo dos comentrios javadoc, voc pode utilizar descritores, que fornecem
uma informao automtica durante a gerao da documentao. Veja esses
descritores na tabela 2.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

36

Tabela 2 Exemplos de descritores javadoc

Para criar a documentao de um programa Java, usando os comentrios


javadoc, utilize o utilitrio javadoc, includo no pacote JDK do Java. O comando
poderia ser assim:
javadoc arquivo.java, arquivo2.java

Exemplos de comentrios:
// Exemplo de comentrio de uma linha
System.out.println(Teste); //Exemplo de comentrio de linha
/*
Exemplo de comentrio de bloco
*/
/**
* Programa para exemplificar o javadoc.
*/
public class HelloInternet
{
/**
* Mtodo <code>main</code>. Determina o incio da execuo.
* @param args Recebe um array de elementos do tipo String que
*

ser passado na linha de comando.

*/
public static void main (String args[])
{

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

37

System.out.println("Hello Internet!");
}
}

1.3 Executando um programa e conhecendo os arquivos da aplicao


Quando voc salva um arquivo de classe Java, ele deve possuir a extenso
java. Este o arquivo que dever ser compilado usando o utilitrio de compilao do
J2SE, javac. Caso a compilao ocorrer sem erros, um novo arquivo ser gerado
com a extenso class, que o bytecode do seu programa. O utilitrio de execuo
de programas, ou runtime, do J2SE o java e para executar o seu programa,
simplesmente digite java nome-do-arquivo.class.
Toda a operao acima realizada em segundo plano por uma ferramenta
IDE, como o caso do JCreator. Quando voc solicita ao JCreator para executar o
programa, ele realiza as operaes automaticamente, usando os utilitrios do J2SE
instalados no computador.
Um arquivo bytecode o formato binrio que a JVM interpreta e converte
para o cdigo de mquina da plataforma corrente, onde o programa est sendo
executado. Um bytecode contm instrues para a mquina virtual, uma tabela de
smbolos e outras informaes especficas para execuo do programa.
1.4 Depurando um programa
Se voc insere instrues com erros de sintaxe em seu programa, o
compilador Java ir apresentar uma mensagem de erro durante o processo de
compilao e no far a gerao do bytecode correspondente. A mensagem de erro
depende da origem do problema que a est gerando e o responsvel pela validao
e apresentao da mensagem o compilador Java. O compilador detecta que houve
uma violao das regras da linguagem e recusa a traduo para o bytecode (figura
16).
Aps entender e corrigir o problema indicado pelo compilador, voc dever
realizar uma nova tentativa de compilao.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

38

Figura 16 Ciclo de desenvolvimento


Tambm existem os tipos de erros de lgica que no apresentam erros pelo
compilador, j que as regras de sintaxe foram atendidas. O problema somente ser
apresentado quando o usurio testar a aplicao e o resultado apresentado no foi o
esperado. Esse tipo de erro de lgica o mais difcil de estabilizar, j que o
compilador no pode nos ajudar neste tipo de problema.
nesse contexto que novamente se refora a necessidade do uso de uma
ferramente IDE. Primeiro, porque, na maioria delas, h um validador de cdigo
durante a digitao do seu programa, indicando quando existe uma quebra de regra
da linguagem e liberando o programador do mtodo tentativa e erro de compilar e
testar o programa.
2 USANDO DADOS E VARIVEIS
Os dados podem ser categorizados em variveis e constantes. Temos uma
constante quando no podemos alterar o contedo de uma varivel, depois que o

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

39

programa foi compilado. J uma varivel permite ser alterada dinamicamente,


quando o progama est em execuo. Esse assunto j foi bastante trabalhado em
Lgica de Programao.
Como voc j aprendeu, as variveis so reas de memria nomeadas que
seu programa pode utilizar para armazenar informaes. Voc aplica nomes s
variveis em Java, usando as mesmas regras usadas para identificadores de
classes. As variveis precisam comear com uma letra e no se pode utilizar uma
palavra reservada da linguagem. Em Java, obrigatria a declarao de todas as
variveis que sero utilizadas no programa.
A declarao de uma varivel em Java inclui:

O tipo de dados que identificar o tipo de informao a ser armazenada na


varivel;

Um identificador como nome da varivel;

Um valor opcional de atribuio, quando voc deseja que uma varivel j


possua um valor inicial;

O sinal de ponto-e-vrgula ao final da linha de declarao.

A linguagem Java no exige padronizao de nomes de classes e variveis,


porm, h convenes para a forma de nome-los de maneira que outros
programadores tenham maior facilidade em entender o sistema. Vejamos algumas
delas:

O nome de classes deve comear com letra maiscula (por exemplo: class
Banco);

O nome de mtodos, atributos e variveis deve comear sempre com letra


minscula (por exemplo: comprar( ));

O nome de constantes deve utilizar todas as letras maisculas;

Utilizar nomes compostos para melhorar a clareza dos nomes, por


exemplo, MeuCarrinhoCompras;

As variveis locais devero utilizar a primeira letra referente ao tipo


primitivo de dados que est sendo utilizado, por exemplo, byte b, char c,
etc.) e as palavras subseqentes usando nomes compostos.

Sintaxe para a declarao de variveis:


[Tipo de Dados] Nome da varivel = [Valor Inicial];

A declarao de uma varivel sem valor inicial :

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

40

int TempoCompra;

E a declarao da varivel com valor inicial :


int TempoCompra = 25;

H tambm a declarao de mltiplas variveis que, nesse caso, pode


agrupar variveis do mesmo tipo em uma nica declarao.
int TempoCompra = 25, Identificador = 1;

Se voc desejar declarar variveis de tipos diferentes, obrigatrio utilizar


uma instruo para cada declarao.
int TempoCompra = 25;
double ResultadoCalculo;

2.1 Constantes

Constante uma varavel com valor fixo, que no se altera durante a


execuo do programa. Por isso, toda constante, quando declarada, precisa receber
imediatamente um valor no cdigo de programao, caso contrrio nunca receber
um valor durante a execuo do programa. Para declarar uma constante, utilize a
palavra reservada final na seguinte sintaxe:
static [Tipo de Dados] final Nome da varivel = [Valor];

2.2 Tipos de dados


Como vimos anteriormente, o uso de variveis e constantes precisa ser
acompanhado do uso do tipo de dados que ser armazenado. O compilador Java
fornece oito tipos de dados NATIVOS, que ficam automaticamente disponveis para
o programador, sem a necessidade de realizar qualquer parametrizao para utilizlos. So eles:

int: usado para armazenar nmeros inteiros. Quando atribuir valores, no


utilizar aspas e pode utilizar o sinal de menos para especificar nmeros
negativos;

byte, short e long: so variaes do tipo de dados inteiro. Os tipos byte e


short so utilizados quando h conhecimento claro dos limites menores

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

41

que devero ser utilizados, com isso, h capacidade de reduo do


consumo de memria. J o tipo de dados long usado quando h
conhecimento

do

tamanho

maior

dos

dados

que

podero

ser

armazenados, com isso, ocupando maior espao na memria;

boolean: o tipo de dados booleano, como o prprio nome descreve,


somente pode armazenar os valores verdadeiro ou falso. Seu uso
comum quando precisamos realizar algum teste condicional e este deve
ser armazenado para futuro uso;

float e double: esses tipos de dados so relacionados a manter o


armazenamento de valores de ponto flutuante, incluindo quatro valores
especiais: infinito positivo, infinito negativo, zero negativo e valores not-anumber (NaN). So valores que contm posies decimais. O float possui
a capacidade de preciso de 6 a 7 dgitos, enquanto o double permite a
preciso de 14 a 15 dgitos;

char: este tipo de dados permite o armazenamento de caracteres no


padro Unicode.

Tipos de dados tambm chamados de primitivos, por participarem do ncleo


da plataforma Java. Alm disso, servem de base para tipos mais complexos,
chamados tipos referncia.
Um dos maiores obstculos para conseguirmos independncia de plataforma
e com isto obter a portabilidade das aplicaes a ausncia de padres para
armazenamento de dados na memria. Cada equipamento e cada CPU possui seus
prprios padres e formatos para o armazenamento de tipos bsicos. A linguagem
Java determina um padro de tamanho e formato para cada tipo de dados nativo e
deixa para o interpretador implementar o tamanho e formato particular para a
arquitetura em que o programa Java est em execuo. Veja os tipos de dados na
tabela 3.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

42

Tabela 3 Tipos de dados e seus limites

importante destacar que escolher os tipos de dados apropriados, permite


que o seu programa ocupe menos espao na memria. Alm disso, o compilador ir
apresentar um erro para qualquer valor fora do intervalo permitido pela varivel,
servindo, dessa forma, tambm como um validador da lgica implementada no
programa.
2.3 Operadores Aritmticos
Os operadores aritmticos (tabela 4) permitem a manipulao de valores em
sua aplicao. Eles seguem as mesmas regras de outras linguagens.
Tabela 4 Operadores aritmticos

Ao combinar operadores em uma expresso em Java, voc precisa conhecer


a precedncia de cada operador. A precedncia determina em que ordem as
operaes de uma expresso sero realizadas. O parntese pode ser usado para
sobrepor a precedncia.
Nesse contexto, a ordem de precedncia :
1. Operadores multiplicativos: * / %

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

43

2. Operadores aditivos: + public class ExemploVariaveis


{
public static void main(String[] args)
{
int oneInt = 315;
short oneShort = 23;
long oneLong = 1234567876543L;
System.out.println(O inteiro + oneInt);
System.out.println(O tipo Short + oneShort);
System.out.println(O tipo long + oneLong);
int valor1 = 43, valor2 = 10, soma, diferenca, produto 
coeficiente, modulo;
soma = valor1 + valor2;
diferenca = valor1 valor2;
produto = valor1 * valor2;
coeficiente = valor1 / valor2;
modulo = valor1 % valor2;
System.out.println(A soma + soma);
System.out.println(O produto + produto);
System.out.println(O coeficiente + coeficiente);
System.out.println(O mdulo + modulo);
}
}

2.4 Converso de tipos numricos


Quando voc est trabalhando com variveis e constantes do mesmo tipo, o
resultado da operao aritmtica mantm o mesmo tipo de dados. Por exemplo,
quando voc divide dois nmeros de tipo int, o resultado ser um nmero tambm
do tipo int. s vezes, porm, voc precisa realizar operaes aritmticas com tipos
de dados diferentes. Nessas condies, o Java escolhe um tipo unificando o
resultado. O Java converte automaticamente os operandos para o tipo unificado,
mas sempre que existir a garantia que no haver perda de de dados (tipos menos
para tipos maiores, tipos de menor preciso em tipos de maior preciso e inteiros em
ponto-flutuante). A lista seguinte apresenta, em ordem de precedncia, os tipos de
dados dos operandos e qual o resultado unificado que dever apresentar entre duas
variveis:

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

44

1. double;
2. float;
3. long;
4. int;
5. short;
6. byte.
Voc pode explicitamente sobrepor a unificao dos tipos impondo ao
compilador Java executar uma operao chamada cast (coero). Com o Type
casting o programador assume o risco da converso dos tipos de dados envolvidos
na expresso. O operador cast possui maior precedncia sobre os demais
operadores.
public class ExemploCast
{
public static void main(String[] args){
boolean t = true;
byte b = 2;
short s = 100;
char c = 'C';
int i = 200;
long l = 24000;
float f = 3.14f;
double d = 0.000000000000053;
String g = "Texto";
System.out.println("Os valores comuns das variveis ");
System.out.println("t = " + t );
System.out.println("b = " + b );
System.out.println("s = " + s );
System.out.println("c = " + c );
System.out.println("i = " + i );
System.out.println("l = " + l );
System.out.println("f = " + f );
System.out.println("d = " + d );
System.out.println("g = " + g );
System.out.println();
//Convertendo de booleando para byte
b = (byte)(t?1:0);
System.out.println("Valor de b aps converso: " + b);

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

//Convertendo de booleano para short


s = (short)(t?1:0);
System.out.println("Valor de s aps converso: " + s);
//Convertendo de booleano para inteiro
i = (int)(t?1:0);
System.out.println("Valor de i aps converso: " + i);
//Convertendo de booleano para char
c = (char)(t?'1':'0');
System.out.println("Valor de c aps converso: " + c);
c = (char)(t?1:0);
System.out.println("Valor de c aps converso para Unicode: 
" + c);
//Converso de booleano para long
l = (long)(t?1:0);
System.out.println("Valor de l aps converso: " + l);
//Converso de booleando para float
f = (float)(t?1:0);
System.out.println("Valor de f aps converso: " + f);
//Convertendo booleano para double
d = (double)(t?1:0);
System.out.println("Valor de d aps converso: " + d);
//Convertendo booleano para string
g = String.valueOf(t);
System.out.println("Valor de g aps converso: " + g);
g = (String)(t?"1":"0");
System.out.println("Valor de g aps converso: " + g);
int sum = (int)(b + i + l + d + f);
System.out.println("Valor da soma aps converso: " + sum);
}
}

SOCIESC Sociedade Educacional de Santa Catarina

45

Programao Aplicada - Java

46

3 MTODOS, CLASSES E OBJETOS


3.1 Mtodos
Um mtodo uma srie de instrues que tem por objetivo realizar uma
determinada tarefa (figura 17). Qualquer classe em Java pode conter um nmero
ilimitado de mtodos. Em resumo, so operaes que manipulam o estado de um
objeto e podem fazer parte da interface do objeto (pode ser utilizado por outras
classes) ou realiza uma atividade interna na classe. Sua composio similar a uma
funo, onde o principal objetivo o reuso e sua sintaxe a seguinte:

Figura 17 Exemplo de mtodo


Como voc pde perceber, as regras so as mesmas. A declarao do
mtodo pode conter:

Modificadores de acesso (opcional), por exemplo, public (tabela 5). Alm


disso, pode ser private, protected ou static. Na maioria das vezes, o
mtodo acessvel externamente, tornando sua natureza pblica e
permitindo que outras classes o utilizem;

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

47

Tabela 5 Modificadores possveis usando mtodos

Tipo de retorno do mtodo, por exemplo, void, que significa que no


retorna valor;

O nome do mtodo;

A lista de parmetros do mtodo, entre parentses e separados por pontoe-vrgula. No exemplo, no existem parmetros e por isso a declarao
apresenta apenas os parnteses sem contedo;

Finalmente, no corpo do mtodo esto as instrues para realizar uma


determinada tarefa que, nesse caso, ir imprimir trs linhas de texto.

Para chamar o mtodo criado, voc deve utilizar o nome declarado. No


exemplo, o nome do mtodo Apresenta (figura 18). Simplesmente digitando
Apresenta( ) em qualquer ponto do cdigo, ir disparar o mtodo criado.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

48

Figura 18 Chamando o mtodo


Vamos ver agora como trabalhar com parmetros nos mtodos. O objetivo de
aplicar parmetros permitir que ocorra uma troca de informaes entre o cdigo
que chamou o mtodo e o prprio mtodo. Atravs dos parmetros possvel que
seja enviado um determinado valor para ser processado pelo mtodo e esse, por
sua vez, possui rotinas internas que manipulam o valor, transformam e podem
retornar o resultado para o cdigo que o chamou.
No h limite para a insero de parmetros. Realizando uma comparao
com o mundo real, imagine que voc precisa escrever um mtodo para calcular o
risco de um emprstimo. Esse clculo envolve um conjunto de parmetros que so
elementos fundamentais para um bom ou mau resultado do risco. Informaes como
tempo em que o contratante possui relacionamento com a instituio, qual o valor do
emprstimo, remunerao atual da pessoa e histrico de emprstimos anteriores,
so parmetros para que uma determinada tarefa seja realizada. Essa a mesma
abordagem dos mtodos.
Um princpio importante na programao orientada a objetos a noo de
implementao de encapsulamento. Quando voc faz a chamada para um mtodo,
no sabe os detalhes de como foi executado. No exemplo anterior, a frmula de
clculo do risco do emprstimo no de seu conhecimento e voc apenas se
preocupa em utilizar bem o mtodo, como passando parmetros adequados para o
resultado esperado (figura 19).

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

49

Quando voc realiza a chamada para um mtodo, essa instruo deve conter
o nome do mtodo e os seus parmetros, na ordem que foram estabelecidos e
separados por ponto-e-vrgula.

Figura 19 Passando parmetros e usando no mtodo


Lembre-se de que os parmetros no so obrigatrios, bem como no h
limite para a quantidade de parmetros que um mtodo pode conter. Perceba
tambm que um parmetro usado no corpo do mtodo, como uma varivel e por
isso, necessria a declarao do parmetro incluindo o tipo de dados.
Finalmente vamos tratar sobre mais um elemento que estende as
capacidades de um mtodo: o retorno de valor (figura 20). Um mtodo pode retornar
valor para o ponto de cdigo que o chamou. Pode ser de qualquer tipo de dados
suportado pela linguagem Java, bem como, pode retornar nada usando a declarao
void.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

50

Figura 20 Valor de retorno do mtodo

Para que possamos utilizar um mtodo e seu retorno, necessrio que o


cdigo que o chamou tenha condies de receber o valor retornado. Por exemplo,
o mtodo da figura 20pode ser armazenado em uma varavel.
Resultado = CalcularRisco(5000.00);

Reforo aqui o uso de mtodos: a forma mais eficiente para o uso de


encapsulamento e reuso na linguagem Java. Abuse na sua utilizao, mas faa
sempre um planejamento para que sua construo tenha sentido e possa ser
claramente entendido pelo programador, usurio de sua classe.
3.2 Classes
Quando voc pensa em orientao a objetos, tudo uma classe e todo objeto
membro de uma classe. Como voc j aprendeu, comum o uso de comparaes
com o mundo real para exemplificar classes e objetos. Novamente o conceito de
classes muito til para obter reuso. Os objetos herdam atributos da classe e
todos recebem atributos, j que so membros. Os componentes de dados de uma
classe so, s vezes, referenciados como variveis instanciadas. Os atributos do
objeto derivados de uma classe tambm so chamados de campos, com o objetivo
de disntigui-los das demais variveis que possam existir no mesmo contexto. Alm
de seus atributos, os objetos derivados de uma classe possuem mtodos que lhe

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

51

so associados e todo objeto, que uma instncia de uma classe, assume-se que
possui os mesmos mtodos.
As classes definem a estrutura e o comportamento de um determinado tipo de
objeto. Na verdade, podemos consider-las como modelos de objetos e sua
composio pode ser reutilizada por objetos derivados, o que so chamados de
instncias do objeto.
Ao criar uma classe, voc precisa atribuir um nome para ela e determinar os
mtodos e os dados que faro parte da classe, tambm conhecidos como membros.
Para criar uma classe, a declarao pode conter:

Um modificador de acesso (opcional);

A palavra reservada class;

Qualquer identificador vlido para o nome da classe.


public class Funcionario();

A palavra public (tabela 6) refere-se ao modificador de acesso. Voc pode


utilizar, por exemplo, os seguintes modificadores de acesso na declarao de uma
classe: public, final ou abstract. Se voc no especificar nenhum modificador, a
classe naturalmente receber o modificador public.
Tabela 6 Modificadores possveis usando classes

As classes pblicas so acessveis por todos os objetos, significa que podem


ser estendidas ou utilizadas como base para outras classes. O acesso mais liberal
para uma classe o public. Os demais modificadores implementam certas restries

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

52

no uso da classe e somente so utilizados em circunstncias especiais. O


modificador public o mais comum utilizado.
Aps declarar a classe, voc deve construir o corpo de instrues da classe,
que devem ser includos dentro de sinais de chaves.
public class Funcionario()
{
//Instrues em cdigo Java
}

Voc pode inserir variveis de instncias, ou campos, declarando-as dentro


do bloco de instrues da classe. A declarao das variveis, por uma boa prtica,
sempre realizada usando um modificador que pode ser: private, public, static e
final.
A maioria dos campos de uma classe so private, que fornece o mais alto
nvel de segurana. O uso de private determina que nenhuma outra classe poder
acessar o valor armazenado na varivel e somente os mtodos da mesma classe
podero utiliz-la. Esse um recurso na OOP, que determina o encapsulamento, ou
seja, o usurio no tem acesso ao contedo da classe.
public class Funcionario()
{
private int CodFuncionario;
}

3.3 Trabalhando com objetos


Segundo a teoria de OOP, objetos possuem estado, comportamento e
identidade. O estado de um objeto mantido por um ou mais atributos (que so as
variveis membro do objeto), o comportamento implementado por mtodos e a
identidade a referncia exclusiva que cada instncia tem. Enquanto os atributos
so variveis, contendo alguma informao pertinente ao objeto, um mtodo uma
funo associada a ele.
Declarar uma classe no cria objetos. Uma classe uma abstrao do que
um objeto ou ser quando for instanciada a classe. Todas as caractersticas de um
item a ser produzido em uma fbrica, primeiro projetado. A classe um projeto de

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

53

objeto, pois contm informaes sobre como o objeto possui informaes, como
deve ser utilizado e como deve ser identificado.
O processo de criao de um objeto, ou instanciao de uma classe,
conduzido atravs de dois passos. Ao declarar uma varivel, voc determina o tipo
de dados que ela dever conter e um identificador, referncia nomeada da memria
que possuir o dado armazenado. Quando voc declara uma varivel do tipo inteiro
(int), o compilador est sendo notificado de que um valor inteiro ser armazenado na
rea de memria.
A mesma operao realizada quando estamos criando um objeto. Na sua
declarao, a primeira informao que precisa ser passada ao compilador o nome
da classe que ser utilizada para compor o objeto.
Funcionario exemploFunci = new Funcionario();

No exemplo, a palavra Funcionario o tipo do objeto, ou seja, a classe que


ir originar o objeto e a palavra exemploFunci o nome do objeto. O operador new
determina para o compilador a reserva de memria para o objeto e depois seguido
da declarao do mtodo Funcionario( );. Essa declarao chamada de o
construtor da classe, o que veremos mais adiante. Quando voc no escreve
explicitamente um construtor para a classe, o Java escreve uma para voc e o nome
do mtodo construtor sempre o nome da prpria classe.
public class Automovel
{
String modelo,cor;
int ano;
boolean estadoMotor = false;
public void ligaMotor()
{
estadoMotor = true;
}
public void informaDados()
{
String motorString;
if (estadoMotor){
motorString = " ligado";
}
else{

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

54

motorString = " desligado";


}
System.out.println("Automovel:" + modelo + " " 
+ ano + " " + cor + motorString);
}
}

public class AgenciaAutomoveis


{
public static void main(String args[])
{
// Criando os objetos (instancias) da classe Automovel:
Automovel fusca = new Automovel();
Automovel gol = new Automovel();
fusca.modelo = "Fusca";
fusca.cor = "Preto";
fusca.ano = 69;
gol.modelo = "Gol";
gol.cor = "Vermelho";
gol.ano = 96;
// Ligando o motor de um automoveis:
fusca.ligaMotor();
// Mostrando informaes dos automvel
fusca.informaDados();
gol.informaDados();
}
}

3.4 Construtores
Quando voc cria uma classe e uma instncia dessa classe, ou cria um
objeto, como vimos, voc est chamando um mtodo construtor que possui o
mesmo nome da classe que, por sua ausncia, o compilador Java cria
automaticamente. Um mtodo construtor o responsvel pela criao do objeto,
mas comum a necessidade de interferir no processo de criao, principalmente
para reforar determinadas regras que a classe pode precisar manter.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

55

Para realizar essa definio na classe, voc pode declarar explicitamente um


mtodo com o mesmo nome da classe e inserir em seu bloco de instrues (entre as
chaves), um conjunto de regras que devero ser seguidas durante a instanciao da
classe, ou seja, aps o objeto ter sido criado, o conjunto de instrues contidas no
construtor sero executadas.
public class Pessoa
{
private String nome;
private int idade;

public Pessoa(String nome, int idade)


{
this.nome = nome;
this.idade = idade;
}
}

3.5 Garbage Collection


Nesse momento, voc pode imaginar que um programa Java pode conter
inmeras classes e vrios objetos em memria, instanciando-as. medida que voc
instancia classes, a alocao de memria ocorre naturalmente, fazendo com que
seja ocupada por um grande nmero de armazenamentos e, por sua vez, precisa ser
liberada quando no for mais necessrio.
Para auxiliar o programador na tarefa de gerenciamento de memria da
aplicao, a plataforma Java oferece um processo chamado Garbage Collection,
executado em segundo plano, como um sistema operacional, que registra toda
memria alocada e mantm contagem do nmero de referncias para cada ponto da
memria. A JVM, periodicamente, verifica se h na memria alguma referncia com
valor 0, procedendo ento a desalocao.
Em resumo, esse processo responsvel por liberar parte da memria
alocada que no mais referenciada. Essa condio necessria, garantindo que
os objetos no mais necessrios para o programa em execuo sejam lixos e
possam ser excludos da memria.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

56

Essa funcionalidade faz parte do ncleo do ambiente de execuo Java, com


o objetivo de liberar os programadores da necessidade de liberar memria alocada,
o que, em linguagens mais antigas era exigido e gerava mais um trabalho para o
progamador (quando no esquecia de faz-lo). Alm disso, com o uso do Garbage
Collection, h garantia da integridade do programa, deixando a responsabilidade do
que deve ou no ser descarregado da memria a cargo do processo do JRE, no
gerando com isso risco de uma excluso indevida na memria.

Sntese
Nesta aula tivemos a grande oportunidade de conhecer a aplicao da OOP
em Java. a unio dos conceitos que voc j aprendeu com a prtica da
implementao de classes e objetos em Java.
Na prxima aula voc aprender mais detalhes para a construo do corpo de
instrues em linguagem Java, com o uso de estruturas de dados.
As peas vo se encaixando cada vez mais, na direo de aplicaes mais
complexas em Java.
At l.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

57

Exerccios Propostos
1) .Por que devemos utilizar modificadores na declarao campos em uma
classe?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
2) Qual a necessidade do Garbage Collection?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
3) O que um mtodo construtor?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

Aula 3

ESTRUTURAS DE PROGRAMAO
Objetivos da aula
Ao final desta aula, voc dever ser capaz de:

Trabalhar com lgica condicional em Java;

Utilizar os operadores lgicos;

Implementar blocos de repetio em Java;

Descrever com detalhes o uso de strings e arrays.

Contedos da aula
Acompanhe os contedos desta aula. Se voc preferir,
assinale os contedos na medida em que for estudando.

Trabalhando com estruturas de dados;

Controle de fluxo;

Operadores lgicos;

Blocos de repetio (loops);

Strings;

Arrays

SOCIESC Sociedade Educacional de Santa Catarina

58

Programao Aplicada - Java

59

Prezado(a) aluno(a),
Nesta aula voc aprender a trabalhar com blocos de programao em
Java. Vamos inicialmente falar sobre as princpais caractersticas para
trabalhar com blocos de cdigo e suas particularidades. Depois vamos tratar das
estruturas convencionais de lgica, como controle de fluxo e loops. Finalmente,
vamos dar uma ateno especial nos trabalhos com strings e arrays.
Perceba que na maioria do contedo desta aula, vamos aplicar os conceitos de
lgica de programao e OOP, que voc j aprendeu, usando a linguagem Java e
entendendo suas regras e sintaxe.
Boa Aula!

1 TRABALHANDO COM ESTRUTURAS DE DADOS


O contedo de instrues de cdigo Java entre chaves considerado um
bloco de cdigo. comum encontrarmos blocos de cdigo dentro de outro bloco
como tambm blocos de cdigo separados em uma mesma classe (figura 21). O
principal objetivo de compreender os limites de um bloco entender como funciona
o escopo de dados na linguagem Java.

Figura 21 Blocos de cdigo em uma classe


A regra principal : ao declarar uma varivel em um programa, voc no pode
utilizar o valor armazenado nela em outro programa. Quando a varivel est dentro
de um bloco, voc no pode referenci-la em outro bloco. A este tipo de limitao

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

60

chamamos escopo. Isso tambm determina que um mesmo nome de varivel no


pode ser declarado duas vezes no mesmo bloco.
Novamente o uso de modificadores de acesso (tabela 7) so fundamentais
para o uso adequado de variveis de acordo com seu escopo. Quando no
especificado o modificador na declarao da varivel, ela considerada friendly
(amigvel) e poder ser acessada por todas as classes que pertencem ao pacote.
Tabela 7 Modificadores de escopo

1.1 Sobrecarga de mtodos


medida que implementamos mtodos em nossas classes, comum termos
um grande nmero de mtodos para atender determinadas necessidades.

conceito de sobrecarga de mtodos a capacidade de implementar mtodos com o


mesmo nome em uma mesma classe. O compilador consegue diferenci-los pela
assinatura do mtodo, composta do identificador do mtodo, o tipo de retorno, os
tipos de dados dos parmetros e a quantidade de parmetros.
Esse recurso muito til na criao de classes cujos mtodos utilizam
parmetros opcionais, exigindo a criao de mtodos com diferentes quantidades e
tipos de parmetros. A sobrecarga de mtodos uma das formas de implementao
do polimorfismo em Java.
class ContaBancaria
{
int numeroDeConta;
int nomeDoCorrentista;
int saldo;

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

61

// Mtodo original para realizar depsito


public void deposito ( double valorDeposito )
{
saldo = saldo + valorDeposito;
}
// Mtodo sobrecarregado, permitindo um novo
// conjunto de parmetros
public deposito ( double valor, double nivel )
{
saldo = saldo + val;
if ( saldo > nivel ) {
System.out.println( "Saldo atual" + saldo );
}
}
public void saque ( double valorSaque )
{
if ( saldo - valor < 0 ) {
System.out.println("Saldo insuficiente");
} else {
saldo = saldo - valorSaque;
}
}
}

1.3 Referncia this


Quando voc est criando classes a partir de objetos que instanciou, as
classes podem tornar-se muito grandes rapidamente. Alm dos campos, cada classe
pode conter muitos mtodos, inclusive vrias verses de mtodos sobrecarregados.
Se voc instanciar muitos objetos de uma classe, a memria do computador pode
tornar-se um limitador, j que h um trabalho desnecessrio em armazenar cpias
separadas de cada varivel e mtodo para cada instanciao da classe.
Ao instanciar uma classe, voc deseja que cada instncia possua seus
prprios campos, por exemplo: cada classe de Emprstimo, deve conter as

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

62

informaes de risco, valor, cliente e data, de forma individualizada, ou seja, cada


classe dever conter informaes particulares para cada campo.
J no caso de um mtodo, utilizado da mesma forma em cada instncia da
classe. Assim, voc s precisa de um nico armazenamento do mtodo para todas
as instncias da classe.
Quando voc est usando um membro de um objeto, necessrio sempre
referir-se ao nome do objeto, mais o sinal de ponto, mais o nome do mtodo ou do
campo. Por exemplo:
aEmprestimo.Valor = 105.000,00;
aEmprestimo.Cliente = Marcos de Oliveira;
dblEmprestimo.CalcularRisco();

O compilador Java identifica cada membro da classe de forma simples e


clara. Em classes com mltiplos construtores, que realizam tarefas semelhantes,
this() pode ser usado para chamar outro construtor local (figura 22), identificado pela
sua assinatura (nmero e tipo de argumentos).

Figura 22 Uso do mtodo this()

2 CONTROLE DE FLUXO
As declaraes de controle de fluxo em Java so usadas para alterar o fluxo
seqencial das instrues de um programa. Como voc j aprendeu, as condies
lgicas impostas para os programas tm por finalidade determinar resultados lgicos
e executar determinadas aes de acordo com a condio apresentada. A

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

63

linguagem Java oferece todo o suporte s prticas mais comuns para a construo
de lgica condicional nos programas.
2.1 IF, IF...ELSE e IF...ELSE-IF...ELSE
O processo de deciso no programa envolve a avaliao de um determinado
elemento e, de acordo com seu resultado lgico, pode conduzir a caminhos
diferentes de execuo do programa. A instruo IF, em Java, permite que voc
avalie uma determinada condio e, de acordo com o resultado, o bloco de cdigo
ser executado ou no. Esse o exemplo de uma condio simples.
Voc pode ainda acrescentar o tratamento da condio FALSA, usando a
palavra chave ELSE. Com esse tipo de implementao voc ter dois blocos de
cdigo: um para o caso do resultado verdadeiro da condio lgica aplicada e outro
para o resultado falso.
Por exemplo:
public class UsoIF
{
public static void main (String args[])
{
int a = 10;
int b = 20;
int c;
if (a > b)
c = a;
else
c = b;
System.out.println("O maior valor = " + c);
}
}

Voc pode ainda aplicar condies previstas de acordo com o resultado


obtido do teste lgico, usando a instruo else if.
if ( ano < 0) {
System.out.println("No um ano!");
} else if ( (ano%4==0 && ano%100!=0) || (ano%400==0) ) {
System.out.println(" bissexto!");
} else {

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

64

System.out.println("No bissexto!");
}

2.2 Switch
O uso da condio IF muito comum, mas em grande quantidade,
principalmente quando h declaraes IF dentro de outras declaraes IF
(chamados de condies aninhadas), o seu cdigo pode ficar mais complexo e de
difcil entendimento.
Uma alternativa para utilizar um grande nmero de condies IF o uso da
instruo SWITCH, declarao muito til quando necessitamos realizar um nico
teste lgico e seu resultado poder ser uma srie de resultados possveis. A
estrutura da instruo SWITCH a seguinte:

Switch: inicia a estrutura de cdigo e implementada junto com a expresso


lgica a ser testada;

Case: a palavra chave que avalia o resultado da expresso para um


determinado valor;

Break: uma declarao opcional e permite que o bloco de cdigo do Switch


seja terminado no ponto em que o break foi declarado;

Default: tambm seu uso opcional, e usado para que uma determinada
instruo (ou conjunto de instrues) seja executada em caso de nenhuma
condio ter sido atendida.
Por exemplo:
public class UsoSwitch
{
public static void main (String args[])
{
for (int i = 1; i<5; i++)
{
switch (i)
{
case 1: System.out.println ("Numero UM");
break;
case 2: System.out.println ("Numero DOIS");
break;

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

65

case 3: System.out.println ("Numero TRES");


break;
default: System.out.println ("NUMERO INVALIDO");
}
}
}
}

2.3 Operadores Relacionais


Os operadores relacionais so aplicados em expresses utilizadas nas
condies IF e Switch. Aplicam-se apenas a nmeros (todos os tipos primitivos so
tratados por seus valores numricos). So eles (tabela 8) : maior que(>), maior ou
igual a (>=), menor que (<), menor ou igual a (<=), igualdade (==) e diferena (!=).
O sinal de == utilizado para avaliar se duas variveis primitivas so iguais
(possuem o mesmo contedo/valor). Em Java, da mesma forma que na linguagem
C, o smbolo == utilizado tambm para diferenciar do smbolo = que identifica
atribuio.
Tabela 8 Operadores relacionais

3 OPERADORES LGICOS
Os operadores lgicos so utilizados nas expresses aplicadas aos testes
lgicos, responsveis pela avaliao condicional em um bloco de instrues. A
linguagem Java oferece vrios operadores lgicos.
SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

66

3.1 Operadores AND e OR


Uma alternativa no uso de instrues IF aninhadas, o operador AND, usado
em uma expresso lgica que determine que DUAS condies so verdadeiras. O
operador AND representado por dois smbolos &&.
importante ressaltar que a utilizao do operador AND exige que uma
expresso booleana completa seja inserida em cada lado do operador &&. Por
exemplo:
if (Emprestimo > 1000 && TempoConta < 5) risco = 6;

No exemplo, a condio valida se a varivel emprstimo for maior que 1000 E


a varivel tempo conta for menor que 5. Caso positivo em AMBOS os casos, o valor
da varivel risco ser 6.
Voc pode utilizar o operador OR, escrito como ||, quando espera que uma
das condies na expresso seja verdadeira. Neste caso, uma e somente uma
condio poder ser verdadeira.
// Usando dois Ifs
if (ValorItemVenda > 100)
comissao = 5;
else if (totalVenda > 5000)
comissao = 5;
//Usando o operador OR
If(ValorItemVenda > 100 || totalVenda > 5000) comissao = 5;

Os operadores lgicos atuam conforme a descrio da tabela verdade, mas


para obter melhores desempenhos, o Java utiliza a tcnica do curto-circuito, ou seja,
quando a anlise do primeiro elemento da expresso j define o resultado, no se
avalia o segundo termo.
4 LOOPS
Um loop uma estrutura na qual voc pode utilizar repetidamente a execuo
de um bloco de instrues, de acordo com uma condio determinada. Como voc
j viu, os blocos de repetio (ou loops) testam uma expresso lgica, caso seja

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

67

verdadeira, executam o bloco de instrues e, ao terminar a execuo, realiza um


novo teste lgico na expresso.
4.1 While
Permite que um bloco de instrues seja executado enquanto uma expresso
for verdadeira. O teste lgico realizado ANTES do bloco de instrues ser
executado.
Por exemplo:
public class UsoWhile
{
public static void main (String args[])
{
int i = 0;
while (i < 11)
{
if ( (i % 2) == 0)
{
System.out.println("Nmero " + i + " e' par !");
}
i = i + 1;
}
}
}

Voc pode utilizar o loop While para implementar uma tarefa que deve ser
executada um determinado nmero de vezes, segundo uma expresso lgica.
Nesse caso, a expresso lgica se utiliza de uma varivel contadora, que delimitar
o limite de execues que o bloco de instrues dever realizar.
4.2 Do...While
O uso do loop DoWhile similar declarao While. A diferena apenas
o teste lgico realizado ao final da primeira execuo do bloco de cdigo, muito til
para os casos em que se deseja que pelo menos uma vez o bloco de cdigo seja

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

68

executado, j que, utilizando o loop while, se a expresso no for verdadeira, o bloco


de instrues pode nunca ser executado.
public class UsoDoWhile
{
public static void main (String args[])
{
int i = 0;
do
{
if ( (i % 2) == 0)
{
System.out.println("Nmero " + i + " e' par !");
}
i = i + 1;
}
while (i < 11);
}
}

4.3 For
O loop for um mtodo especial usado para determinar um nmero finito de
iteraces necessrias. muito mais elegante trabalhar com loops com seqncias
limitadas de execues ao invs do loop while. Ao trabalhar com o loop for, voc
pode indicar o valor inicial para a varivel de controle, que faz parte do teste de
controle do loop.
Para construir um loop for, voc precisa iniciar o cdigo com a palavra
reservada for, seguida de um par de parentses. O trecho entre parnteses possui
trs sees separadas por ponto-e-vrgula:
A inicializao da varivel de controle para execuo do bloco de

instrues;

A varivel de teste de controle do loop;

A atualizao da varivel do loop de controle.

public class UsoFor


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

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

69

for (int i=1;i<=15;i++)


{
System.out.println ("O quadrado de "
+ i + " = " +

i * i );

}
}
}

5 STRINGS
Uma seqncia de caracteres entre aspas considerada uma string. No
Java, as strings so tratadas atravs de uma classe String e uma grande variedade
de mtodos fornecida para ajud-lo(a) a trabalhar com cadeias de caracteres.
5.1 Classe Character
O tipo de dados char usado para armazenar qualquer tipo de caractere.
Alm desse tipo primitivo de armazenamento, a linguagem Java oferece uma classe
chamada Character, contendo mtodos padres para testar os dados contidos na
varivel (tabela 9). Essa classe um Wrapper do tipo de dados primitivo char. O
uso de wrapper um meio prtico com que o Java trabalha para adicionar
funcionalidades a um objeto. Nesse caso, a classe Character um wrapper do tipo
de dados char e adiciona-lhe vrias funcionalidades.
Tabela 9 Mtodos da classe Character

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

70

public class ExemploCharacter


{
public static void main(String[] args) throws Exception
{
char aChar;
System.out.println("Por favor entre com algum caractere");
aChar = (char)System.in.read();
System.in.read(); System.in.read();
if(Character.isDigit(aChar))
System.out.println(aChar + " um nmero");
else
System.out.println(aChar + "no um nmero");
if(Character.isLetter(aChar))
System.out.println(aChar + " uma letra");
else
System.out.println(aChar + "no uma letra");
if(Character.isWhitespace(aChar))
System.out.println(" um espao em branco");
else
System.out.println("no um espao em branco");
if(Character.isLetter(aChar))
if(Character.isLowerCase(aChar))
System.out.println(aChar + "est em letras minsculas");
else
System.out.println(aChar + "no est em letras minsculas");
}
}

5.2 Objeto String


Uma varivel String um objeto da classe String que faz parte das
bibliotecas-base da linguagem Java

e importada automaticamente para todo

programa escrito em Java. Essa classe a nica com tratamento especial e no


pode ser instanciada sem o uso da palavra new. Na verdade, quando se atribui um
valor a uma varivel do tripo String (tabela 10), usando apenas as aspas, a JVM
criar uma instncia nova por meio de um comando new. Isso ocorre para que o seu
contedo seja sempre lido, se alterado, sua performance cai. Uma das

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

71

caractersticas importantes que todos os mtodos associados a essa classe no


alteram o contedo do objeto armazenado.
Essa classe tambm tem por finalidade o armazenamento de uma seqncia
de caracteres e possui um amplo conjunto de mtodos. Por exemplo:
String str = "abc";
char data[] = {'a', 'b', 'c'};
String str = new String(data);

Tabela 10 Mtodos da classe String

public class TesteString


{
public static void main(String args[])
{
String str1 = "Hello";
String str2 = str1;
str2 = str2 + " world!";
System.out.println("str1 = " + str1);
System.out.println("str2 = " + str2);
}
}

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

72

5.3 Converso de strings


Se uma String contm um contedo apenas de nmeros, voc pode convertla para um nmero permitindo que se realizem operaes aritmticas com os dados.
Para converter uma String para um inteiro, voc utiliza a classe Integer, a qual faz
parte das bibliotecas-base do Java e automaticamente importada para o seu
programa. O mtodo parseInt() parte da classe Integer e recebe o parmetro em
forma de string e retorna um valor inteiro.
int eInt = Integer.parseInt(100034);

Para converter uma String para um double, voc utiliza a classe Double, a
qual tambm faz parte das bibliotecas-base do Java e automaticamente importada
para o seu programa. O mtodo parseDouble() parte da classe Doubl, recebe o
parmetro em forma de string e retorna um valor double.
double doubleValor = Double.parseDouble(100.35);

Toda classe implementa o mtodo toString, porque a implementao padro


est na classe Object. Esse recurso tambm permite que se convertam dados de
qualquer tipo primitivo para String.
// Converso: int para String
int i = 10;
Integer intObj = new Integer(i);
String str1 = intObj.toString();

// Converso: String para int


String str = 10;
Integer intObj = new Integer(str);
int i = intObj.intValue();
// ou
String str = 10;
int i = Integer.parseInt(str);

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

73

6 ARRAYS
Como voc j aprendeu, um array uma lista de dados que possuem o
mesmo tipo de dados e esto associados a um mesmo nome na memria. Voc cria
um array da mesma maneira que declara uma varivel em Java, apenas adicionando
os sinais de abertura e fechamento de colchetes.
A declarao de um array em Java deve ser feita usando a seguinte sintaxe:
double[] Vendas = new Double[20];

Essa declarao reserva 20 alocaes de memria para a varivel Vendas.


Os elementos do array em Java so numerados a partir do 0 e, nesse caso, o ndice
correspondente a cada elemento do array usado entre 0 e 19, para o exemplo
acima.
Os trabalhos com array seguem as mesmas regras das variveis em Java e
voc tambm pode utilizar um array, com a definio do elemento a ser utilizado, da
mesma maneira que uma varivel. Por exemplo:
System.out.println(Vendas[15]);

Para inicializar um array, e estabelecer um valor padro para cada elemento,


voc deve utilizar uma lista de valores separados por vrgulas e acompanhados de
chaves, por exemplo:
int[] Idade = {20,15,14,32,45};

Abaixo um exemplo de cdigo Java usando array.


public class Arrays
{
public static void main(String[] args)
{
int[] array1 = { 1, 2, 3, 4, 5 };
int[] array2;
array2 = array1;
for(int i = 0; i < array2.length; i++)
array2[i]++;
for(int i = 0; i < array1.length; i++)

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

74

System.out.println("array1["+i+ "] = "+array1[i]);


}
}

Voc pode declarar arrays que contenham dados dos tipos inteiros e duplos e
tambm pode declarar contedos de qualquer tipo de dados, incluindo objetos.

Sntese
Nesta aula voc avanou um pouco mais e passou a desenvolver programas
Java com o controle de fluxo de execuo. Alm disso, voc aprendeu como
trabalhar com alguns aspectos particulares da OOP com Java, como a sobrecarga
de mtodos.
Voc tambm aprendeu como trabalhar com dados do tipo String e as vrias
formas de trabalho com classes especiais no Java.
Estes

dois

assuntos

tambm

participam

do

ncleo

essencial

de

conhecimentos para a programao Java, e tenha certeza de que voc ir utiliz-los


muito ainda neste mdulo.
Na prxima aula vamos aprender mais alguns detalhes de implementao de
rotinas orientadas a objetos usando Java. Continuamos a nossa jornada na sua
formao.
At a prxima aula.

Exerccios Propostos
1) O que um Wrapper?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

75

2) Quais os tipos de loops suportados pela linguagem Java? Descreva cada um


deles.
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
3) Qual a vantagem em utilizar o modificador protected para uma varivel?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

Aula 4

HERANA
Objetivos da aula
Ao final desta aula, voc dever ser capaz de:

Compreender como a herana em OOP funciona na


linguagem Java;

Implementar herana, usando os vrios elementos da


linguagem Java.

Contedos da aula
Acompanhe os contedos desta aula. Se voc preferir,
assinale os contedos na medida em que for estudando.

Herana;

Herana de mtodos.

SOCIESC Sociedade Educacional de Santa Catarina

76

Programao Aplicada - Java

77

Prezado(a) aluno(a),
Nesta aula voc aprender um pouco mais sobre orientao a objetos
usando a linguagem Java. O foco principal da aula tratar um pouco
sobre o relacionamento entre classes em Java. Quando falamos de herana,
estamos tratando de um assunto que muitas vezes parece assunto complexo, mas
na verdade uma evoluo natural dos assuntos at aqui tratados. Voc ver ainda
que a similaridade com o mundo real muito grande, j que os conceitos de herana
seguem as orientaes com base nas interpretaes que temos hoje sobre o
assunto.
Boa Aula!

1 HERANA
Herana um recurso poderoso da linguagem Java que permite que novas
classes possam ser derivadas de classes existentes. As classes derivadas herdam
a interface da classe base e podem adicionar novos mtodos ou alterar os
existentes, para atender um propsito particular. Qualquer quantidade de classes
pode ser adicionado a um esquema para produzir uma hierarquia de tipos
relacionados. A implementao de herana no Java a base para o polimorfismo, o
qual permite que objetos de diferentes tipos possam ser tratados como se fossem do
mesmo tipo.
1.1 Introduo Herana
Os programadores, trabalhando com linguagens orientadas a objetos,
visualizam classes e seu relacionamento com as demais,usando uma hierarquia de
tipos de relacionamentos. Dessa forma, os programadores generalizam as
caractersticas comuns de tipos similares em uma superclass. Na verdade, como
veremos mais adiante, toda clase base utilizada para a criao de outras classes
considerada uma superclasse. Muitas das principais classes da plataforma Java
esto relacionadas atravs de herana. Veja a figura 23.
Toda classe Java, existente na plataforma ou criada pelo usurio, faz parte da
hierarquia usando herana, a menos que voc explicitamente programe ao contrrio,
SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

78

as suas classes so derivadas de uma classe participante do ncleo da plataforma


Java: a classe Object. A classe object o ancestral comum de todas as classes
Java e a raiz da hierarquia das classes na plataforma. Isso correto dizer porque
todas as classes Java, inclusive as criadas por voc, herdam um conjunto padro de
caractersticas da classe Object.

Figura 23 Herana

1.2 Estendendo uma classe


O processo de definio de uma nova classe, que herda caractersticas de
uma classe existente, chamado de extenso de uma classe. Voc adiciona
campos e mtodos em sua nova subclasse e lhe fornece novas capacidades ou
substitui mtodos herdados da superclasse pela sobreposio, para customizar ou
implementar recursos adicionais. A linguagem Java possui recursos fceis de serem
implementados para se obter herana mltipla, atravs do uso de interfaces. Uma
interface, assim como uma classe, um tipo de dado. Definir uma interface similar
definio de uma classe, exceto que a interface poder conter somente constantes
e mtodos abstratos. Alm disso, uma interface no pode ser instanciada.
Voc pode definir uma classe para ser abstrata. Assim como as interfaces, as
classes abstratas no podem ser instanciadas, mas podem ser estendidas. O uso de
classes abstratas est direcionado para quando voc desejar implementar um
mtodo padro em uma superclasse.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

79

Na programao Java, a implementao de uma extenso da classe feita pela


palavra chave extends. Toda classe Java implicitamente estendida da classe
Object. Um exemplo da declarao da classe estendida:
class Fruta
{
int gramas;
int caloriasPorGrama;
}
class Citros extends Fruta
{
int acidoCitrico;
}

1.3 Classes abstract e final


Para prevenir que uma classe possa ser usada como superclasse, utilize a
palavra reservada final, com isso voc ir garantir que a classe nunca ser
estendida e seus mtodos nunca sobrepostos. Algumas classes da plataforma Java
so final, como por exemplo algumas classes wrapper dos tipos primitivos de dados
do Java.
H uma forma de voc declarar uma classe para que ela sempre seja uma
superclasse e no possa ser instanciada: use a palavra reservada abstract. A partir
desse tipo de classe, voc pode estend-la ou criar outras subclasses a partir dela,
mas no poder utilizar os meios para instanciar uma classe naturalmente. A nica
forma de utilizar uma classe com esta caracterstica estendendo-a.
1.4 Implementando interfaces
Uma interface como um documento de desenho com as caractersticas
externas da classe. Definindo uma interface, voc determina mtodos pblicos que
precisam ser fornecidos pela classe quando estiver implementando-a. Uma interface
pode conter mtodos, mas algumas restries precisam ser observadas:

Todos os mtodos so abstratos;

Voc no pode definir a implementao de mtodos em uma interface;

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

80

Todos os mtodos so pblicos.


Uma interface pode conter campos, mas eles precisam ser static ou final,

somente dessa os dados contidos em uma interface podem ser constantes.


Para que uma classe possa estabelecer o vnculo com a interface criada,
necessrio utilizar a palavra chave implements. Quando uma classe implementa
uma interface, dizemos que a classe instanciou a interface.
public interface ControleRemoto
{
public void ligaTV();
public void desligaTV();
public void mudaCanalTV(int canalNovo);
}
public class TV implements ControleRemoto
{
public void ligaTV() {...}
public void desligaTV() {...}
public void mudaCanalTV(int canalNovo) {...}
}

2 HERANA DE MTODOS
S h um caminho para chamar mtodos herdados, fazendo referncia a
um objeto com a chamada vinculao dinmica, para garantir que o mtodo
chamado pelo objeto seja implementado ou herdado pela classe que o objeto
instanciou.
2.1 Usando construtores
Um objeto superclasse criado na memria antes de um objeto subclasse em
todos os nveis da hierarquia.
Por padro, o JVM chama o construtor da superclasse e no passa qualquer
parmetro para o construtor. Isso significa que a superclasse possui um construtor
sem parmetros. A linguagem Java realiza a inicializao de uma superclasse com

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

81

um mtodo especial chamado super. Funciona como um construtor da superclasse


e permite que, a partir da subclasse, possamos utilizar membros da superclasse.
2.2 Efeitos da Herana
Em Java, mtodos privados da classe base no so herdadas por suas
subclasses, mas todos os demais membros sim.
Alm do uso das palavras reservadas public, private e default, para acessar
membros da classe base, existem mais dois modificadores de acesso que se
aplicam apenas s classes derivadas: Qualquer membro da superclasse declarado
como protected acessvel somente pelas classes que que so derivadas da
classe atual. Qualquer membro que foi declarado com private protected acessvel
somente pela classe que derivada de uma classe que contm o membro. Vamos
considerar o seguinte exemplo:
public Class A
{
protected int x;
private protected int y;
}

O membro X acessvel em qualquer classe que for derivada da classe A,


bem como qualquer classe em um mesmo pacote da classe A. J o membro Y
somente acessvel por qualquer classe que deriva diretamente da classe A
2.3 Sobreposio de mtodos
Quando uma subclasse possui um mtodo com a mesma assinatura de um
mtodo da superclasse, essa situao conhecida como sobreposio de
mtodos.
class Fruta {
int gramas;
int calorias_por_grama;
Fruta()

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

82

{
gramas=55;
calorias_por_grama=0;
}
Fruta(int g, int c)
{
gramas =g;
calorias_por_grama =c;
}
void descascar ()
{
System.out.println(Aqui eu descasco frutas);
}
}

Sntese
Nesta aula voc aprendeu mais uma parte importante da orientao a objetos,
usando a linguagem de programao Java. Voc conheceu os conceitos que esto
associados a este recurso da linguagem e aprendeu como implementar a herana
em cdigo Java.
Conforme ns vimos, a herana parte fundamental do polimorfismo e est
amplamente utilizada na comunicao entre os objetos e classes de um programa
em OOP.
Na prxima aula vamos aprender como trabalhar com Interfaces Grficas
usando Java. Esse um assunto com uma riqueza visual que nos permite construir
solues visualmente confortveis para nossos usurios.
At l.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

83

Exerccios Propostos
1) Qual a necessidade do uso dos modificadores final e abstract?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
2) Qual a vantagem no uso da palavra super?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
3) Qual a finalidade da palavra extends?
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

Aula 5

USANDO SWING E CRIANDO


APPLETS
Objetivos da aula
Ao final desta aula, voc dever ser capaz de:

Conhecer os conceitos sobre o desenvolvimento de


aplicaes com interfaces grficas;

Identificar os componentes da plataforma Java para a


construo de aplicaes grficas;

Detalhes os componentes Swing;

Construir um applet.

Contedos da aula
Acompanhe os contedos desta aula. Se voc preferir,
assinale os contedos na medida em que for estudando.

Interfaces Grficas em Java;

Componentes Swing;

Gerenciadores de Layout;

Applets.

SOCIESC Sociedade Educacional de Santa Catarina

84

Programao Aplicada - Java

85

Prezado(a) aluno(a),
Nesta aula voc aprender um assunto muito exigido nas aplicaes
atuais: as interfaces grficas com o usurio. Na verdade, um assunto
antigo mas foi atravs do advento do Macintosh e do Windows que realmente esse
mtodo de envolvimento com o usurio recebeu toda sua potencialidade. Hoje so
raras as aplicaes que no possuem uma interface grfica, j que a grande maioria
dos computadores esto executando sistemas operacionais Windows ou Linux, alm
do prprio Macintosh. A plataforma Java oferece uma ampla cobertura de recursos
para o suporte na construo de aplicativos com interface grfica, inclusive, com as
ltimas verses do JDK, os programadores receberam mais ateno em tecnologias
atuais que auxiliam na construo de interfaces.
A grande vantagem do Java que a Sun implementou os mesmos
conceitos de portabilidade tambm para as bibliotecas que suportam a construo
de interfaces grficas, o que permite uma aplicao grfica ser executada e
apresentada da mesma forma em vrias plataformas.
Boa Aula!

1 INTERFACES GRFICAS EM JAVA


Trabalhar com uma interface grfica do sistema operacional, como o caso
do Windows e das diversas interfaces disponveis para Linux, uma operao cada
vez mais comum hoje em dia. O principal apelo a facilidade em realizar tarefas que
antes, em modo caractere, era muito mais trabalhoso. Conclumos, ento, que o uso
de recursos grficos nas suas aplicaes ser algo comum nos seus trabalhos como
programador. Antes de aprender como construir aplicaes com recursos grficos,
voc precisa entender algumas orientaes essenciais para esse tipo de
programao. comum encontrarmos programadores que so exmios profissionais
da lgica booleana e de complexos algoritmos, mas com grandes dificuldades em
explorar as potencialidades das interfaces grficas. O objetivo deste tpico
despertar em voc uma viso ampla sobre o assunto e compreender a importncia
em seguir orientaes e melhores prticas, com o objetivo de obter um resultado
superior em suas aplicaes.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

86

Um programa com interface grfica est baseado em um modelo especfico


de programao, chamada orientada a eventos. O usurio executa a maioria dos
eventos movimentando e clicando o mouse ou pressionando as teclas do teclado
(muitas vezes combinando as duas). Observe a figura 24.

Figura 24 Aplicao Java com interface grfica


Cada elemento visual considerado um componente que pode ser
gerenciado a partir de um objeto particular. O termo controle usado para
determinar os componentes que possuem interfaces grficas e esto inseridos em
um contexto visual e de negcio. Controles como caixas de verificao, labels,
barras de rolagem, caixas de texto e caixa de listas so exemplos de componentes.
Alguns componentes, como o boto, so usados individualmente, outros so
chamados de containers, componentes que armazenam outros componentes. As
janelas, os painis e as caixas de dilogo so containers.
Voc pode utilizar uma das bibliotecas principais chamadas gerenciadores
de layout para controlar os arranjos dos componentes em um container. Para cada
container, voc pode selecionar um gerenciador de layout que controlar o tamanho
e a posio dos componentes dentro do container. O obetivo da separao
fornecer liberade para escolher o container que deseja e ento selecionar o
gerenciador de layout em particular.
As bibliotecas Swing e AWT possuem a responsabilidade de como realizar o
desenho das interfaces grficas.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

87

Existem dois tipos de aplicaes grficas que podem ser criadas em Java:

Componentes iniciados a partir de um navegador (applets);

Aplicaes locais iniciadas a partir do sistema operacional.

Ambas capturam eventos do sistema e so desenhadas sobre um contexto


grfico que fornecido pelo sistema e pela JVM.
1.1 Component
A classe Component representa um objeto que tenha uma representao
grfica, como botes, campos de textos, choices, etc. (tabela 11). Essa classe define
o comportamento bsico para a maioria dos componentes visuais do pacote AWT
(todos os mtodos definidos nesta classe estaro disponveis para todos os
componentes visuais do AWT, bem como todos os recipientes).
Tabela 11 Mtodos da classe Component

1.2 Container
Um container uma categoria especial de componente grfico que pode
conter outros componentes ou mesmo outros containers (figura 25). Todos os
containers so componentes, mas nem todos os componentes so containers. Um
applet, uma janela e um painel so exemplos de container. Um container (painel)
pode ser inserido dentro de outro. Cada container possui associado um gerenciador

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

88

de layout para controlar a maneira pela qual seus componentes sero mostrados
(tamanho e posio).

Figura 25 Containers do pacote AWT


1.3 Window
Uma Window uma janela sem barra de ttulo e borda, necessariamente tem
que estar associada com outro objeto da classe Frame (janela) para que possa
existir. A classe Window especializa a classe container, logo, poder conter outros
componentes internamente. A classe Window normalmente utilizada para
implementar janelas pop-up e, quando um objeto da classe Window criado,
automaticamente associado a ele o gerenciador de layout BorderLayout (tabela
12).
O construtor Window responsvel por construir um objeto da classe Window
invisvel que estar vinculado ao objeto Frame (janela) previamente instanciado.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

89

Tabela 12 Mtodos da classe Window

1.4 A biblioteca AWT


Inicialmente, a Sun criou um pacote de classes visuais chamado Abstract
Window Toolkit (AWT), que possui as classes representativas dos objetos de um
programa visual (figura 26).

Esse o antigo conjunto de ferramentas para o

desenvolvimento de interfaces grficas na linguagem Java. A criao de interfaces


grficas AWT consiste:

Na instanciao de objetos do tipo Component (botes, textos etc.);

Na criao de recipientes ou objetos da classe Container (janelas, painis


etc.) para receber os componentes criados;

Na adio dos componentes aos recipientes, com base num sistema de


coordenadas (especificando a localizao da insero) ou via utilizao de
gerenciadores de layouts que se encarregam de definir a localizao e
aspecto visual dos componentes inseridos nos recipientes.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

90

Figura 26 Hierarquia de eventos AWT

1.5 JFC
O Java Foundation Classes (JFC) fornece um poderoso e flexvel suporte
para a criao de aplicaes grficas. O objetivo da JFC simplificar o
desenvolvimento de programas 100% Java para ambientes de rede e estaes
locais. Atravs das classes, voc pode desenhar aplicaes para refletir o sistema
operacional que est armazenando JVM, ou criar sua prpria interface grfica, ou
utilizar o visual dos recursos da plataforma Java e das implementaes da JVM.
So cinco APIs (Application Programming Interface) que compem a JFC: a
API AWC e a Swing API so os elementos fundamentais para a criao de
interfaces grficas. A Java2D API fornece um conjunto de recursos para, atravs da
AWT, permitir que aplicaes avanadas sejam criadas, especificamente para a
manipulao de imagens e desenho em 2D. A Accessibility API fornece uma
interface de programao necessria para apoio s aplicaes voltadas para
tecnologias assistidas, para pessoas com alguma deficincia fsica. A Drag and
Drop API fornecem suporte transferncia de dados entre duas aplicaes Java e
entre uma aplicao Java e uma aplicao nativa do sistema operacional (figura 27).
Para programar uma aplicao grfica ou um applet, voc precisa referenciar
pacote java.awt em sua aplicao. Dentro desse pacote, a AWT encapsula as

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

91

caractersticas especficas da plataforma para a implementao de uma aplicao


grfica Java. Essa classe a ponte entre as particularidades de cada plataforma e
as primitivas grficas da plataforma Java, responsveis pelo desenho das interfaces
grficas.

Figura 27 Java Foundation Classes

1.6 Swing API


O conjunto de componentes fornecidos pela AWT adequado para tarefas
simples, mas possui algumas limitaes. Por exemplo, a dificuldade na criao de
um novo tipo de componente a partir de uma implementao de subclasse
Component, porque ele exige que seja criado por objeto.
Na verso 1.1 da plataforma Java, a AWT introduziu, para a criao leve de
componentes grficos, um framework que estende as classes java.awt.Component
e a java.awt.Container, sem a necessidade de criar componentes nativos. A Swing
API est contruda sobre essa framework e fornece um conjunto de componentes
que so completamente independentes de plataforma e sem a necessidade de gerar
cdigo para uma plataforma em particular.
A Swing API (tabela 13) possui 100% dos componentes da AWT, mais
componentes adicionais que tambm so 100% Java, ou seja, a biblioteca no

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

92

possui nenhum cdigo dependente de plataforma, composta de mais de 250


classes e 75 interfaces agrupadas nas seguintes categorias:

Um componente chamado JComponent, que estende a classe de container


da AWT e o conjunto de componentes que so subclasses

do JComponent. Todos esses componentes possuem em seu nome a letra


inicial J;

Classes de suporte no visveis, que fornecem servios importantes, como


classes de eventos e o modelo de implementao, parte do Swing
responsvel pelo modelo de Design;

Um conjunto de interfaces relacionadas, implementadas pelos componentes


Swing, e classes de suporte da API.

Tabela 13 Componentes Swing

As aplicaes Java que possuem interface grfica, utilizam componentes


Swing e componentes AWT, juntos, em uma mesmoa direo (figura 28). Os
componentes Swing utilizam os mesmos gerenciadores de layout, eventos dos
objetos e interfaces, assim como os componentes AWT.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

93

Figura 28 Hierarquia de classes AWT e Swing

2 Componentes Swing
2.1 JComponent
Fornece uma aparncia que pode ser especificada pelo programador ou
(opcionalmente) selecionada pelo usurio, em tempo de execuo, alm disso,
permite a criao de componentes personalizados. Uma borda que implicitamente
define os limites do componente e possui a habilidade para definir o tamanho
mximo, mnimo e preferido de um componente. Fornece o recurso de ToolTips -descries curtas quando o cursor passa sobre um componente. Tambm fornece o
recurso de Autoscrolling, quando ocorre a rolagem automtica em lista, tabelas ou
rvore, ao arrastar o mouse sobre eles, com o boto pressionado (tabela 14).
Todos os componentes possuem dois modos de cores associados: a de fundo
(background) e a de frente (foreground). A JFC introduz o conceito de um
componente lightweight, com um fundo transparente que permite ver o que est
atrs do componente. O componente transparente no faz uso de cores de fundo. A
classe JComponent possui os mtodos isOpaque, que retorna false, se o
componente for transparente, e setOpaque(boolean b), que permite alterar essa
propriedade.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

94

Tabela 14 Mtodos da classe JComponent

2.2 Frame e JFrame


Uma Frame uma janela com uma barra de ttulo e uma borda. A classe
Frame especializa a classe Window que, por sua vez, especializa a classe container.
A classe Frame implementa a interface MenuContainer, logo, uma frame pode ter
uma barra de menu associada a ela.
Frames so geralmente usadas para construir aplicaes, mas tambm
podem ser usadas com applets. Se uma aplicao tem uma janela dependente de
outra (que desaparece quando a outra iconificada, por exemplo), ento deve-se
utilizar Dialog ou Window para essa janela. A classe Frame, por padro, no fornece
ao usurio mecanismos para ser fechada com o clique do mouse no boto para
fechar a janela (x).
Quando um programa Java inicia com uma Interface Grfica, vemos a janela
onde a aplicao ir fazer as interaes com o usurio, usando o teclado e o mouse.
No Swing, a interface principal da aplicao implementada pelo componente
javax.swing.JFrame. Assim como outros componentes, o JFrame derivado do
controle da AWT e segue a estrutura hierrquica dos componentes AWT e Swing.
Quando criado, o JFrame possui um nico filho, o container, uma instncia da
classe JRootPane que pode gerenciar outros 4 componentes: um JLayeredPane, um
ContentPane, um MenuBar e um GlassPane tabela 15).
JRootPane gerenciado de forma a cobrir a superfcie inteira da JFrame,
exceto a barra de ttulo e o tamanho da barra. A classe MenuBar class encapsula os

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

95

conceitos da plataforma para os limites da barra de menu para uma janela. O


objetivo associar a barra de menu com um objeto Frame, chamando o mtodo
setMenuBar (figura 29).
Tabela 15 Mtodos da classe JFrame

import javax.swing.*;
public class BasicFrame extends JFrame {
public static void main(String[] args) {
BasicFrame bf = new BasicFrame 
("Exemplo de Janela Java");
}
BasicFrame (String title) {
super(title);
setSize(250, 200);
setVisible(true);
}
}

Figura 29 Janela JFrame

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

96

2.3 JPanel
A classe JPanel (painel) uma sub-classe de JComponent. Tem o propsito
de agrupar componentes para serem posteriormente inseridos em outro container e
permitem a criao de layouts sofisticados. Podem conter componentes incluindo
outros painis e utiliza o gerente de layout FlowLayout como padro.
import java.awt.*;
import javax.swing.*;
public class PanelDemo {
private JPanel painelAzul;
private JPanel painelVermelho;
private JFrame janelaDemo;
public PanelDemo()

painelAzul = new JPanel();


painelVermelho = new JPanel();
janelaDemo = new JFrame();
painelAzul.setBackground(Color.blue);
painelVermelho.setBackground(Color.red);
painelAzul.setSize(50,50);
painelVermelho.setSize(100,100);
janelaDemo.getContenPane().setLayout(null);
janelaDemo.setSize(200,200);
janelaDemo.getContentPane().add(painelAzul);
janelaDemo.getContentPane().add(painelVermelho);
painelAzul.setLocation(10,10);
painelVermelho.setLocation(10,70);
janelaDemo.setVisible(true);
}
public static void main(String[] args)
PanelDemo p = new PanelDemo();
}
}

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

97

2.4 JDialog
Um JDialog uma janela com uma barra de ttulo. As caixas de dilogos so em
geral usadas para obter/mostrar informaes do/para o usurio.
O swing fornece um rico conjunto de dilogos que permite interaes bsicas
com o usurio, sem a necessidade de escrever muito cdigo (tabela 16).
Alguns aspectos importantes sobre caixas de dilogo:
Caixas de dilogos podem ser modais ou no-modais;
Caixas modais no permitem que outras janelas sejam acessadas at que a
caixa de dilogo seja fechada;
Caixas no-modais permitem que outras janelas sejam manipuladas
simultaneamente janela de dilogo;
BorderLayout o gerente de layout usado implicitamente por caixas de
dilogos.
Tabela 16 Construtores JDialog

JDialog utiliza uma estrutura de camadas como a classe JFrame (tabela 17. Assim,
ao adicionarmos um componente, devemos utilizar o ContentPane:

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

98

dialog.getContentPane().add(comp1);

Tabela 17 Mtodos da classe JDialog

2.5

JLabel
JLabel uma rea onde textos no editveis e imagens podem ser

mostrados. So rtulos usados para informaes ou instrues textuais na interface


grfica, mostrando um texto no editvel na posio selecionada. Uma vez criado
um rtulo, programas raramente modificam seu contedo.
Os construtores da classe JLabel so:
public JLabel()
public JLabel (String s)
public JLabel (String s, int alignment)
public JLabel(String text,
Icon icon,int horizontalAlignment)
public JLabel(Icon icon, int horizontalAlignment)

Para avaliarmos como implementar uma classe JLabel, avalie o cdigo Java
abaixo:
import java.awt.*;
import javax.swing.*;
public class TesteLabel
{
public static void main(String[] args)
{
JFrame fr = new JFrame();
JLabel lb = new JLabel(Texto em baixo,
new ImageIcon(duke.gif),
SwingConstants.LEFT);
lb.setHorizontalTextPosition(SwingConstants.CENTER);
lb.setVerticalTextPosition(SwingConstants.BOTTOM);
fr.getContentPane().add(lb);

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

99

fr.pack();
fr.setVisible(true);
}
}

2.6 JTextComponent
A classe JTextComponent (tabela 18) uma abstrao de um componente
que recebe inseres de textos do usurio. a super-classe abstrata de duas
classes com funcionalidades em comum: JTextField e JTextArea e seus mtodos e
atributos so compartilhados.
Tabela 18 Mtodos da classe JTextComponent

3 GERENCIADORES DE LAYOUT
Embora seja possvel posicionar objetos em coordenadas fixas (x, y), deve-se
evitar essa prtica em Java. Isso causa problemas de portabilidade: outras JVMs,
GUIs e Window Managers tero fontes e outros elementos em tamanhos e

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

100

propores diferentes. Baseados em regras, os Layout Managers calculam as


coordenadas automaticamente.
H 6 gerenciadores de layout pr-definidos no pacote java.awt.*:

FlowLayout;

GridLayout;

BorderLayout;

CardLayout;

GridBagLayout;

BoxLayout.

Implicitamente, cada container possui um gerenciador de layout default


associado. Assim, se no for declarado nenhum gerenciador de layout para o
container, ser usado o layout default. Um programador pode tambm criar novos
gerenciadores de layout.
Para escolher um gerenciador de layout adequado para suas necessidades,
considere o seguinte:

Se voc precisa mostrar alguns componentes utilizando os seus tamanhos


naturais em uma linha, use o FlowLayout. Se voc precisa mostrar
componentes de mesmo tamanho em linhas e colunas, use o GridLayout;

Se voc precisa mostrar painis alternativamente, use o CardLayout;

Se voc precisa mostrar componentes e espalh-los utilizando todo


espao disponvel, utilize o BorderLayout ou GridBagLayout.

Cada container tem um gerenciador de layout default:

JPanel (incluindo JApplet)  FlowLayout

WindowBorderLayout  BorderLayout

JmenuBar  BoxLayout

Para utilizar um gerenciador de layout diferente do default, voc precisa criar


uma instncia do gerenciador de layout desejado e avisar ao container para us-lo:
aContainer.setLayout(new CardLayout());
// ou
CardLayout meuCardLayout = new CardLayout();
aContainer.setLayout(meuCardLayout);
// ou

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

101

aContainer.setLayout(null); //sem gerenciador

Os mtodos add, remove e removeAll (que adiciona e removem


componentes) podem ser utilizados a qualquer momento, mas se voc muda o
tamanho de um componente indiretamente (por exemplo, mudando a sua Font),
invocar o mtodo invalidate para o componente e, logo aps, invocar o mtodo
validate para o container.
Os mtodos getPreferredSize e getMinimumSize podem retornar valores
sem significado (os seus valores so vlidos somente aps o componente ter sido
mostrado a primeira vez).
4 EVENTOS
Quando o usurio interage com uma interface de aplicativo final (teclado,
mouse etc), provoca o disparo de alguma ao: o evento. Eventos so objetos que
descrevem a ao ocorrida. Qualquer objeto pode ser notificado de um evento.
Existem vrios tipos de classes de eventos para tratar as diversas categorias
de aes desencadeadas pelo usurio final.
necessrio incluir a instruo import java.awt.event.* .
4.1 Como os eventos so processados?
Atravs de um modelo de delegao de eventos, os componentes da AWT
implementam rotinas de manipulao de eventos (listener) com o objetivo de receblos. O componente que gera o evento chamado de fonte do evento (event
source). O componente que trata o evento chamado de manipulador de evento
(event handler) ou ouvinte de evento (event listener).
Normalmente, a manipulao do evento delegada para uma classe separada do
componente-fonte desse evento.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TesteEvento {

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

102

public static void main (String args[])


{
JFrame j = new JFrame("Teste de evento");
JButton b = new JButton("Pressione-me!");
b.addActionListener(new ActionDemo());
j.getContentPane().add(b, BorderLayout.CENTER);
j.pack();
j.setVisible(true);
}
}
class ActionDemo implements ActionListener {
public void actionPerformed (ActionEvent e){
System.out.println("Acao executada");
}
}//classe externa de tratamento do evento

5 APPLETS
Java Applets so mini-programas grficos que executam em um contexto de
outro programa, tambm so conhecidos como containers. A Internet foi a grande
alavancadora da tecnologia, considerando que seu uso ficou mais explorado em
pginas Web. Um applet no uma aplicao convencional em Java. Na verdade
um mini-programa chamado a partir de um programa maior, como um visualizador
de applets ou um navegador compatvel com a tecnologia Applet. Por isso, um
applet precisa de um outro programa, sempre, para que possa ser executado. Isso
significa que o visualizador ou o navegador implementam as funes mais comuns
para applets e fornecem estas funes para o applet, atravs da Java API. o
container que controla a execuo do applet.
Um applet grfico por natureza. Ocupa um painel retangular na janela de
visualizao do container. Os applets podem ser vinculados em uma pgina Web,
assim como uma imagem vinculada a uma pgina.
import java.applet.*;
import java.awt.*;
public class exemploApplet extends Applet
{

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

103

public void paint (Graphics g)


{
g.drawString (Exemplo de Applet, 25, 50);
}
}

Todo applet uma extenso da classe java.applet.Applet. A classe base


Applet fornece mtodos que derivam da classe Applet e que, por sua vez, mantm a
comunicao entre o container e a aplicao.
Os mtodos associados instanciao dentro de um navegador:

Obter parmetros do applet;

Obter a localizao de rede de um arquivo HTML que contm o applet;

Obter a localizao de rede de um applet em um diretrio de classes;

Imprimir na barra de status do navegador;

Preencher e apresentar uma imagem;

Preencher e tocar um arquivo de udio;

Alterar o tamanho do applet.

Alm disso, a classe Applet fornece uma interface na qual o container, no


caso o navegador, obtm informaes sobre o applet, controlando-lhe a execuo.
Dessa forma, quando instanciado no container:

Requisita informaes sobre o autor, verso e copyright do applet;

Requisita uma descrio dos parmetros que o applet reconhece;

Inicializa o applet. Nesse caso, o evento init executado quando o applet


carregado ou recarregado;

A execuo do applet iniciada. Nesse momento o evento start ser


executado aps o mtodo init ou quando a pgina recarregada;

Pra a execuo do applet. quando o evento stop executado. Quando


o usurio muda de pgina, continuando na memria, ou quando a
execuo do browser encerrada;

Finalmente, h o evento destroy executado quando a applet for removido


da memria.

Para chamar um applet de uma pgina Web, o cdigo deve ser o seguinte:

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

104

<html>
<title>Exemplo de uso de applet em pgina HTML</title>
<hr>
<applet code=exemploApplet.class width=320 height=120>
Se o seu navegador compatvel com Java, uma mensagem Exemplo de
Applet dever aparecer aqui.
</applet>
<hr>
</html>

Sntese
Nesta aula voc aprendeu como construir programas com interfaces grficas.
No uma tarefa simples, mas a verso mais atual do Java, oferece um grande
conjunto de melhorias e as instrues necessrias para a construo de aplicaes
grficas est muito facilitado.
Voc viu tambm como trabalhar com Applets. Tipo de aplicao que tem
muita procura a ser atendida, j que atravs deles possvel gerar uma interao
entre um programa convencional Java e recursos de uma pgina Web.
Na prxima aula, vamos falar mais sobre como utilizar objetos com Java para
expandir ainda mais as capacidades de nossas aplicaes.
At l.

Exerccios Propostos
1) Qual a vantagem do uso de gerenciadores de layout nos trabalhos de
construo de interfaces grficas em Java?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

105

2) Diferencie uma aplicao Java de um applet Java?


_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

Aula 6

TRABALHANDO COM OBJETOS


Objetivos da aula
Ao final desta aula, voc dever ser capaz de:

Compreender os desafios do desenvolvimento

corporativo e as solues baseadas em Java que fornecem


suporte s solues;

Identificar a construo de componentes de software

usando Java;

Fazer aplicaes Java, operando em ambientes

distribudos, inclusive na Internet.


Contedos da aula
Acompanhe os contedos desta aula. Se voc preferir,
assinale os contedos na medida em que for estudando.

Introduo ao J2EE;

Usando Java Beans;

Java em rede;

Java Server Pages e Servlets.

SOCIESC Sociedade Educacional de Santa Catarina

106

Programao Aplicada - Java

107

Prezado(a) aluno(a),
medida que as aplicaes Java cresceram em amplitude de uso e
possibilidades de negcios, novas demandas foram surgindo para a
plataforma. O uso do Java em ambiente corporativo gerou exigncias como,
capacidade de gerenciamento de grande volume de dados, regras de negcios
complexas e dinmicas e grande volume de usurios simultneos. O ambiente
transacional de hoje espera tecnologias que atendam questes como segurana,
distribuio, velocidade e resilincia.
Nesta aula, vamos conhecer os componentes da plataforma Java que
oferecem respostas para as mais diversas finalidades nas aplicaes corporativas.
No centro desta aula estar o conceito de objetos distribudos no Java, como
tambm o conceito de aplicaes empresariais que necessitam de alta capacidade
de processamento.
Finalmente, vamos falar um pouco de como a linguagem Java oferece
suporte ao desenvolvimento Web.
Tenha uma boa aula.

1 J2EE
J2EE, ou Java 2 Enterprise Edition, uma plataforma para desenvolvimento
de aplicaes distribudas. Apresenta facilidades para a utilizao dos recursos
computacionais e distribudos tais como acesso a banco de dados, componentes
Web, utilizao de mensagens assncronas, execuo de processos transacionais,
persistentes e outros.
Apresenta uma API, especificada pela Sun MicroSystems, que proporciona
um padro para a implementao dos diversos servios que oferece. Pode ser feito
diferentemente por vrias empresas, de formas distintas, mesmo oferecendo as
mesmas facilidades, por estarem de acordo com as especificaes impostas para a
sua construo. Um programador que j tenha tido contato com a linguagem Java e
suas APIs na J2SE (Java 2 Standart Edition), no ter muitas dificuldades no
entendimento e na utilizao de J2EE. O que precisa entender os detalhes da
arquitetura e onde se encontra cada componente e seus recursos. necessrio
ambientarmo-nos nesse contexto para fazermos uso correto da plataforma.
SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

108

1.1 Arquitetura J2EE


A arquitetura J2EE se apresenta em vrias camadas, cada uma composta
por componentes e servios providos por um container.
Um exemplo o uso de pginas HTML em um Web Browser numa simples
navegao, em um site qualquer. Podemos entender como container, o prprio
navegador que fornece recursos e facilidades para o componente, no caso, as
pginas HTML. O componente, por sua vez, pode oferecer diversos servios ao
usurio, pelo suporte do container, proporcionando facilidades visuais como: botes,
hiperlinks, figuras e tabelas, e o prprio servio de navegao.
Em um servidor J2EE (figura 30), podemos ter diversos containers interagindo
entre si.

Figura 30 Arquitetura J2EE (fonte: Sun)


Camada cliente: acesso por meio de interfaces standalone (aplicaes Java),
pginas HTML ou Applets. Nessa camada, os componentes residem em um
Applet Container, em um HTML container (Web browser) ou em um

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

109

Application Client Container. O Applet container, fornece recursos para um


componente Applet executar e se tornar funcional para o usurio. O Web
Browser apresenta recursos e funcionalidades para o uso de pginas HTML.
Por fim, o Application Client container fornece recursos para a execuo da
classe standalone utilizados pelos usurios para interagirem no sistema;
Camada Web: implementada por JSPs e Servlets, fornecem a lgica para a
camada cliente ( ou de apresentao ) do negcio. JSPs e Servlets residem
no Web Container. JSPs oferecem a facilidade de utilizar algumas lgicas de
apresentao em uma pgina web sem muitas dificuldades tecnolgicas. O
Servlet apresenta-se como um controlador das aes executadas pelos
usurios nas pginas de apresentao e fornece recursos para obter dados
dessas aes e realizar as operaes desejadas. Os componentes Web
residem no Web Container que pode ser um servidor TomCat ou outro similar;
Camada de Negcios: trata da lgica de negcio da aplicao. nela que
implementamos todas as regras de negcio, alocao de recursos,
persistncia de dados, validao de dados, gerncia de transaes e
segurana, providos por componentes conhecidos por EJBs, que residem no
EJB Container;
Camada EIS Enterprise Information System, ou Sistema de informaes
empresariais: nessa camada se encontram os sistemas de banco de dados,
sistemas legados, integrao com outros sistemas no J2EE, etc.
2 USANDO JAVABEANS
O principal objetivo dos programadores integrar componentes de software.
Tornando esssa faanha uma realidade, construiriam aplicaes corporativas de
forma mais rpida e segura. O objetivo de criar componentes de software
reutilizveis e intercambiveis um modelo definitivo na engenharia de software
para aplicaes distribudas. O modelo de componentes JavaBeans fornece um
framework para criar, reutilizar e empacotar componentes de software. Ento, o
principal objetivo em utilizarmos JavaBeans acelerar o processo de construo de
componentes reutilizveis, usando mtodos j disponveis nas classes JavaBeans.
Normalmente, so pequenas aplicaes visuais que tm por finalidade ampliar a
capacidade de construo de software com interface grfica (GUI).
SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

110

Para criar uma classe JavaBeans, voc deve se utilizar dos pacotes
java.beans e java.beans.context, que esto includos no J2SE. importante
observar que no existe uma superclasse que compreenda todas as extenses
JavaBeans e que tambm no apresenta um modelo centralizado de interfaces para
implementar JavaBeans.
Como o objetivo a criao de componentes que sero utilizados em
interfaces grficas, um JavaBean expe membros de sua implementao atravs de
trs elementos importantes:

Mtodos: um mtodo representa alguma ao que pode ser executada


pelo JavaBean;

Propriedades: uma propriedade representa um atributo de um JavaBean,


como a sua cor ou tamanho da fonte;

Eventos: os objetos JavaBean utilizam eventos para notificar outros


objetos sobre algum evento ocorrido. Esses objetos so os mesmos
conceitos que j vimos em orientao a eventos usando Swing.

Para trabalhar com JavaBeans, importante que voc compreenda os


conceitos fundamentais sobre o modelo de desenvolvimento e sua terminologia
(tabela 19). Na verdade, os conceitos se utilizam de muitas informaes sobre a
linguagem Java e por isso, voc no ter muita dificuldade em conhec-los.
Tabela 19 Terminologia JavaBean

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

111

a) Alm da terminologia, importante tambm voc entender como o processo


de desenvolvimento de um JavaBean acontece e qual o seu uso. O principal
usurio de um JavaBean um programador. O objetivo acelerar o processo de
desenvolvimento para um programador, atravs de objetos pr-construdos que
venham a atender uma finalidade especfica (figura 31). Por isso, existem trs
profissionais programadores envolvidos no processo: aquele que cria
ferramentas para o consumo de JavaBeans, aquele que cria um JavaBean e
aquele que consome o JavaBean.
b)

Figura 31 Processo JavaBean


O importante no processo

que, uma vez criado o componente

JavaBean, poder ser reutilizado por vrios programadores e poder ficar disponvel
em qualquer ambiente IDE que seja compatvel com o modelo JavaBean.
Para conhecer mais sobre a especificao JavaBean, acesse o seguinte
endereo:
http://splash.javasoft.com/beans/spec.html
2.1 Enterprise JavaBeans
A especificao Enterprise JavaBeans (EJB) descreve um modelo para
componentes Java que foram construdos para serem instalados e disponibilizados a
partir de um servidor. A conexo entre os componentes EJB e o JavaBeans referemse a um modelo de programao da linguagem Java. Exceto pela similaridade dos
nomes, so poucas as similaridades funcionais entre os dois modelos.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

112

Apesar de estar baseada nos conceitos do JavaBeans, a especificao EJB


no inclui as mesmas regras de programao do JavaBeans. Os componentes EJB
so destinados para o uso em solues trs camadas e em ambientes de redes de
computadores, com a finalidade de compartilhamento de objetos atravs de vrios
sistemas.
Os componentes EJB possuem somente a lgica necessria para um
processo de negcio, ou seja, voc pode desenvolver componentes que possuam
apenas cdigo de programao, que poder ser armazenado em algum servidor da
rede e permitir ser utilizado remotamente por aplicaes nas estaes da rede
local.
a) Normalmente, os componentes EJB so disponibilizados em um servidor por
um software chamado servidor de aplicaes. Os aplicativos em Java se
comunicam com um servidor de aplicaes na rede, que disponibiliza objetos a
serem consumidos de acordo com determinadas condies. No servidor de
aplicaes, os componentes EJB ficam localizados em um container EJB que
controla todos os detalhes para a criao, ativao e destruio das instncias de
um componente EJB. Ele tambm controla as complexas atividades de controle
de transaes e segurana, fazendo com que os componentes distribudos
possam receber funcionalidades essenciais, sem a necessidade de serem
explicitamente implementadas no cdigo do componente.
Para criar uma classe EJB, voc deve definir uma classe que execute uma
determinada regra de negcio e adicionar os mtodos para uma interface EJB. O
servidor precisa fornecer as implementaes que estejam de acordo com a
especificao EJB para ento disponibiliz-lo em um servidor de aplicaes.
3 TRABALHANDO COM JAVA EM REDE
3.1 Trabalhando com URLs
Para muitos programadores, a necessidade para programar solues para a
Internet, mais especificamente para a Web, foi uma das razes para aprender a
linguagem de programao Java. Diferente de muitas outras linguagens, o Java foi
desenhado para atuar com bastante facilidade nas tecnologias da Internet. O J2SE
SDK oferece um pacote java.net, especfico para realizar conexes atravs de uma
rede de computadores e executar comandos de entrada e sada para os
computadores remotamente.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

113

Uma aplicao para esse pacote o uso em URLs. Os endereos de sites na


Web utilizam um protocolo de comunicao, que voc j conhece, chamado HTTP
(Hypertext Transfer Protocol). O pacote java.net contm classes que foram
construdas ao redor dos padres HTTP. As classes essenciais para esta operao
so a URL e a URLConnection. Basicamente, voc obtm acesso ao arquivo que
est sendo transferido atravs do protocolo e pode processar o seu contedo de
acordo com a sua necessidade. Voc tambm pode conectar-se a um servidor URL
e executar uma srie de operaes para a criao e leitura de contedo no site.
a) O caminho mais seguro para a comunicao com o servidor URL pela classe
URLConnection. Realizada a conexo, voc poder requisitar ou enviar
informaes, porm uma URLConnecetion fechada automaticamente aps a
troca de dados ter sido concluda e voc no pode manter uma conexo por um
perodo longo. Dessa forma, voc precisa restabelecer a comunicao com o
servidor a cada necessidade de troca de informaes.
package examples.network;
import java.net.*;
import java.util.Date;
public class ObjetosURL{
public static void main(String[] args){
try{
URL sunPage = new
URL(http://www.sun.com);
URLConnection sunPageConn=sunPage.openConnection();
Date lastModified=new Date(sunPageConn.getLastModified();
System.out.println(sunPage+ foi modificada pela 
ltima vez em +lastModified);
catch(Exception x){
System.out.println(x);
}
}
}

3.2 Usando RMI


O RMI (Remote Method Invocation) uma tecnologia utilizada pelos
programadores para chamar diretamente mtodos de objetos Java, que residem em
SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

114

outros sistemas. Nessa abordagem, voc no precisa estabelecer uma referncia


para um objeto que est em um sistema remoto. Ao invs disso, estabelece uma
referncia para um stub object, substituto local para o objeto remoto. O stub retorna
um objeto local por um ORB (Object Request Broker), em resposta sua solicitao
para localizar um objeto. Um stub object possui os mesmos mtodos suportados
pelo objeto remoto, mas, ao invs de executar mtodos independentemente,
encaminha os parmetros para o objeto remoto e passa de volta qualquer retorno de
valor do mtodo. A tcnica utilizada para encaminhar os parmetros para um objeto
remoto chamada de marshaling. Aps o marshaling, os parmetros so
serializados em um arquivo de bytes e enviados para o sistema remoto, que possui o
objeto, recebe o arquivo e utiliza a tcnica chamada unmarshaling para
desserializar o contedo dos parmetros e, conseqentemente, executar o mtodo.
Caso tenha valor de retorno, ele enviado de volta ao processo original, realizando
as mesmas operaes no caminho inverso. Observe esse processo na figura 32.

Figura 32 Processo RMI


a) Voc pode utilizar uma combinao de classes servidora e cliente para colocar
uma classe remota para funcionar. Essencialmente, o programa servidor criar
um objeto remoto e ir registr-lo como um servio e o programa cliente ir
localizar esses objetos, usando o servio para obter as referncias.
Por padro, os objetos nomeados para os servios so registrados e
disponibilizados atravs de um servio no servidor. O servio de registro abre um
canal de comunicao com os clientes atravs da porta 1099, padro do RMI.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

Exemplo de uma classe servidora RMI:


package examples.network;
import java.rmi.Naming;
import java.rmi.RMISecurityManager;
/** Um programa server-side que cria e registra
* objetos StudentImpl com um registro RMI para uso pelos
* clientes
*/
public class StudentEnrollment {
public static void main( String[] args ) {
if ( System.getSecurityManager() == null ) {
System.setSecurityManager(
new RMISecurityManager() );
}
try {
StudentImpl[] students = {
new StudentImpl( 1001, "Elaine Jones" ),
new StudentImpl( 1002, "Patricia Hartswell" ),
new StudentImpl( 1003, "Darius Smith" ),
new StudentImpl( 1004, "Mary Bagshaw" ),
new StudentImpl( 1005, "Henry Miller" )
};
for ( int i = 0; i < students.length; i++ ) {
int id = students[i].getID();
Naming.rebind( "Student" + id , students[i] );
}
System.out.println( "Student objects bound." );
} catch ( Exception x ) {
x.printStackTrace();
}
}
}

Exemplo de uma classe cliente RMI usando a classe acima:


package examples.network;
import java.rmi.Naming;
import java.rmi.RMISecurityManager;
/** Um programa cliente para acessar e atualizar os

SOCIESC Sociedade Educacional de Santa Catarina

115

Programao Aplicada - Java

116

* objetos no servidor
*/
public class StudentClient {
private static final String HOST_NAME = "localhost";
public static void main( String[] args ) {
if ( System.getSecurityManager() == null ) {
System.setSecurityManager(
new RMISecurityManager() );
}
try {
Student s1001
= (Student) Naming.lookup( "//" + HOST_NAME
+ "/Student1001" );
Student s1005
= (Student) Naming.lookup( "//" + HOST_NAME
+ "/Student1005" );
System.out.println( s1001.getName() );
System.out.println( s1005.getName() );
System.out.println( s1001.getCredits() );
s1001.addCredits( 3 );
s1001.setName( "Elaine Goldman" );
System.out.println( s1001.getName() );
System.out.println( s1001.getCredits() );
} catch ( Exception x ) {
x.printStackTrace();
}
}
}

3.3 Java Server Pages e Servlets


a) A Internet e a linguagem Java j esto muito maduras em seu relacionamento.
A Internet j uma realidade para a disponibilizao de informaes mundiais,
atravs de um mecanismos simples e acessvel grande maioria das pessoas.
Isso fez com que ocorresse uma mudana fundamental na forma como os
programadores constrem aplicaes, pois agora temos uma nova plataforma
para o desenvolvimento das aplicaes e com muitas tecnologias envolvidas. Isto
faz com que o progamador Java precise conhecer um amplo conjunto de
conhecimentos para desempenhar com competncia a construo de aplicaes
para a Web. Neste tpico vamos falar exclusivamente das duas tecnologias Java
que suportam o desenvolvimento Web: pginas JSP e Servlets.
SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

117

3.4 O que um servlet?


Servlets so classes Java, desenvolvidas de acordo com uma estrutura bem
definida, e que podem tratar requisies recebidas de clientes, quando instaladas
junto a um Servidor que implemente um Servlet Container (um servidor que permita
a execuo de Servlets, muitas vezes chamado de Servidor de Aplicaes Java)
(figura 33).
Veja um exemplo de um Servlet:
import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
public class TodayServlet extends HttpServlet {
public void doGet( HttpServletRequest request,
HttpServletResponse response )
throws IOException, ServletException {
response.setContentType( "text/HTML" );
response.setHeader( "Pragma", "no cache" );
response.setHeader( "Cache-Control", "no cache" );
response.setHeader( "Expires", "0" );
PrintWriter out = response.getWriter();
out.println( "<HTML>" );
out.println( "<head>" );
out.println( "<title>Today</title>" );
out.println( "</head>" );
out.println( "<body>" );
out.println(
"<h1>The current date and Time is:</h1>" );
Date today = new Date();
out.println( "<p>" + today + "</p>" );
out.flush();
out.println( "</body>" );
out.println( "</HTML>" );
}

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

118

Para executar um servlet voc precisa de um servidor Web, que precisa ter o
mecanismo de interpretao de servlets. Existem vrios servidores Web de
fabricantes diferentes.

Figura 33 Processo de um Servlet

3.5 Java Server Pages


As pginas JSP, ou Java Server Pages, foram criadas para contornar
algumas das limitaes no desenvolvimento com Servlets: se em um Servlet a
formatao da pgina HTML, resultante do processamento de uma requisio, se
mistura com a lgica da aplicao em si, dificultando a alterao dessa formatao,
em uma pgina JSP essa formatao se encontra separada da programao,
podendo ser modificada sem afetar o restante da aplicao.
Assim, um JSP consiste de uma pgina HTML com alguns elementos especiais, que
conferem carter dinmico pgina. Esses elementos podem tanto realizar um
processamento por si, como podem recuperar o resultado do processamento
realizado em um Servlet, por exemplo, e apresentar esse contedo dinmico junto
pgina JSP. Existe tambm um recurso adicional bastante interessante na utilizao
de pginas JSP: a recompilao automtica, permitindo que alteraes feitas no
cdigo da pgina sejam automaticamente visveis em sua apresentao. Assim, no
necessrio interromper o funcionamento da aplicao para incorporar uma
modificao de layout.
SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

Exemplo:
<HTML>
<HEAD>
<META NAME="Pragma" CONTENT="no-cache">
<META NAME="Cache-Control" CONTENT="no-cache">
<META NAME="Expires" CONTENT="0">
<TITLE>Member Info Update</TITLE>
</HEAD>
<%@ page import="skiclub.*" %>
<BODY

BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#990099" >

<CENTER>
<IMG

SRC="/skiclub/images/SkiClub.gif"

ALT="Near Hills Ski Club " >


<h2>Member Information Update</H2>
</CENTER>
<p>Please complete the form below and press
<strong>Update</strong> to change
the information on our records.
</p>
<CENTER>
<FORM METHOD=POST ACTION=
"http://localhost:8080/servlet/skiclub.UpdateServlet">
<TABLE BORDER=0 BGCOLOR="#DDDDFF" CELLPADDING=5 >
<TR>
<TD><strong>First name</strong></TD>
<TD><INPUT TYPE="text" NAME="FNAME"
VALUE="<%= ( (ClubMember)
session.getValue( "member" ) ).getFirstName() %>"
SIZE=30 MAXLENGTH=30 >&nbsp;</TD>
</TR>
<TR>
<TD><strong>Initials</strong></TD>
<TD><INPUT TYPE="text" NAME="MNAME"
VALUE="<%= ( (ClubMember)
session.getValue( "member" ) ).getMiddleName() %>"
SIZE=30 MAXLENGTH=30 >&nbsp;</TD>
</TR>
<TR>
<TD><strong>Last name</strong></TD>
<TD><INPUT TYPE="text" NAME="LNAME"

SOCIESC Sociedade Educacional de Santa Catarina

119

Programao Aplicada - Java

120

VALUE="<%= ( (ClubMember)
session.getValue( "member" ) ).getLastName() %>"
SIZE=30 MAXLENGTH=30 >&nbsp;</TD>
</TR>
<TR>
<TD><strong>Phone Number</strong></TD>
</TD>
<TD><INPUT TYPE="text" NAME="PHONE"
VALUE="<%= ( (ClubMember)
session.getValue( "member" ) ).getPhoneNumber() %>"
SIZE=10 MAXLENGTH=10 >
<em>digits only</em>
</TD>
</TR>
<TR>
<TD><strong>Address</strong></TD>
<TD><em>For demonstration purposes,
this field is a placeholder</em></TD>
</TR>
<TR>
<TD><strong>Skiing Ability</strong></TD>
<TD>
<%! String[] levels = { "Novice",
"Intermediate",
"Advanced",
"Expert" };
%>
<% String ability = ( (ClubMember)
session.getValue( "member" ) ).getAbility();
out.println( "<SELECT NAME=\"ABILITY\" >" );
for ( int i = 0; i < levels.length; i++ ) {
out.print( "<OPTION VALUE=\"" + levels[i] + "\"");
if ( ability.equals( levels[i] ) ) {
out.print( " SELECTED>" );
} else {
out.print( ">" );
}
out.println( levels[i] + "</OPTION>" );
}
out.println("</SELECT>");
%>

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

121

</TD>
</TR>
</TABLE>
<TABLE BORDER=0 CELLSPACING=20 >
<TR>
<TD><INPUT TYPE="submit" VALUE="
<TD><INPUT TYPE="reset"

Update

VALUE="

Reset

"></TD>
" ></TD>

</TR>
</TABLE>
</CENTER>
<p>If this information is correct, you may:
<ul>
<li><a href="/servlet/skiclub.BookingServlet">
Update ski trip bookings</a></li>
<li><a href="/skiclub/skiclub/memberHome.jsp">
Return to your member home page</a></li>
</ul>
</FORM>
</p>
</BODY>
</HTML>

Sntese
Nesta aula voc conheceu como as principais tecnologias Java se
apresentam para resolver problemas mais complexos, de aplicaes corporativas e
baseadas em objetos distribudos. A plataforma J2EE a proposta mais ampla que a
Sun e seus colaboradores apresentaram para os programadores, considerando todo
o conjunto de tecnologias envolvidas.
Tambm nesse contexto, voc pde perceber que a Internet uma grande
revoluo para os programadores, j que novas necessidades e novos formatos de
aplicaes esto sendo exigidas pelo mercado. Isso gera no progamador a
necessidade de conhecimentos essenciais sobre como as aplicaes na Web
funcionam, incluindo conhecer a linguagem HTML, os protocolos de comunicao

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

122

envolvidos na Internet, o funcionamento em detalhes de um navegador, uso de


servidores de aplicaes e outros.
Na prxima aula voc aprender como implementar banco de dados em suas
aplicaes.
At l.

Exerccios Propostos
1) Qual a diferena entre uma pgina JSP e um Servlet?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
2) Qual a principal finalidade do uso do J2EE?
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

Aula 7

JAVA COM BANCO DE DADOS

Objetivos da aula
Ao final desta aula, voc dever ser capaz de:

Implementar programas Java usando recursos de banco de

dados.
Contedos da aula
Acompanhe os contedos desta unidade. Se voc
preferir, assinale os contedos na medida em que for
estudando.

Introduo a bancos de dados relacionais;

Linguagem SQL;

JDBC.

SOCIESC Sociedade Educacional de Santa Catarina

123

Programao Aplicada - Java

124

Prezado(a) aluno(a),
Nesta ltima aula voc aprender como trabalhar com bancos de dados
em sua aplicao Java. A plataforma Java oferece um conjunto de
classes principais que voc pode utilizar para acessar dados em um banco de dados
relacional, disponibilizado por um SGBD e instalado em seu computador local ou na
rede, e que possua um driver de conexo para que as classes Java possam acesslo.
Desenvolver solues corporativas usando Java, muito comum
necessidade de implementao de uma conexo com banco de dados e o Java
oferece todo o ferramental para que voc possa construir suas aplicaes.
Tenha uma boa aula.

1 INTRODUO A BANCOS DE DADOS RELACIONAIS


Um banco de dados uma coleo organizada de dados e os sistemas
gerenciadores de banco de dados (SGBD) fornecem os mecanismos para organizar,
armazenar, recuperar e modificar os dados pelo usurio.
Em um Banco de Dados relacional, temos uma srie de tabelas com um
conjunto de linhas e colunas. As colunas representam as informaes pertinentes a
uma linha. Desta forma, as linhas devem ser identificadas univocamente por uma
chave primria para que possam ser recuperadas posteriormente suas informaes.
A chave primria pode ser uma coluna que nunca ter seus dados repetidos ou um
conjunto de colunas que, juntas, nunca sero repetidas. Veja a tabela 20.
Tabela 20 Exemplo de tabela
Coluna 1

Coluna 2

Coluna 3

CPF

Nome

DataNascimento

4594545

Jnior da Silva

24-08-2005

9454001

Armort de Souza

31-05-2005

9345400

Tianak da Costa

12-02-2004

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

125

Vrios autores apresentam vantagens no uso de um SGBD:


Vantagem

Descrio
Nos sistemas de arquivos, os dados ficavam

Eliminao da
inconsistncia dos dados

armazenados em locais isolados e s acessados pela


linguagem que lhes deu origem, com isso tnhamos a
mesma informao repetida em locais diferentes. Com
a chegada dos SGDBs, os dados puderam ser
centralizados, evitando esta duplicao e,
conseqentemente, essa inconsistncia.

Facilidade de acesso aos

Devido centralizao dos, puderam ser facilmente

dados

acessados por qualquer ponto da rede.

Prov eficiente segurana

Atravs de critrios de permisses definidos pelo

aos dados

administrador, podemos informar ao servidor quem

Prov restries de

Nos SGDBs voc pode definir regras de integridade

integridade

sobre os campos de uma tabela, com isso, qualquer

Prov ferramentas

Um dos aspectos importantes no uso de SGBDs a

eficientes para backup e

manuteno dos dados. Utilitrios para cpia de

restore

pode acessar o que e quais operaes pode realizar.

valor inserido naquela coluna dever respeitar a regra.

segurana e restaurao de dados so fundamentais


para uma administrao dos dados do SGBD.

Um Sistema Gerenciador de Base de Dados (SGBD) uma coleo de


programas que permite aos usurios criarem e manipularem uma base de dados.
Um SGBD , assim, um sistema de software de propsito geral que facilita o
processo de definir, construir e manipular bases de dados de diversas aplicaes
(figura 34).

Definir uma base de dados envolve a especificao de tipos de dados a


serem armazenados na base de dados;

Construir uma base de dados o processo de armazenar os dados em


algum meio que seja controlado pelo SGBD;

Manipular uma base de dados indica a utilizao de funes como a de


consulta, para recuperar dados especficos, modificao da base de dados

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

126

para refletir mudanas no mini-mundo (inseres, atualizaes e


remoes), e gerao de relatrios.

Figura 34 Aplicao acessando banco de dados

2 LINGUAGEM SQL
Na histria do desenvolvimento dos Bancos de Dados Relacionais, h o
momento em que foi necessrio o desenvolvimento de linguagens destinadas sua
manipulao. Ento o Departamento de Pesquisas da IBM desenvolveu a SQL
(Search and Query Language) como forma de interface para o SGBD denominado
SYSTEM R no incio dos anos 70. Somente em 1986 o American National Standard
Institute ( ANSI ), publicou um padro SQL (Structured Query Language), que se
estabeleceu como linguagem padro de Banco de Dados Relacional.
A SQL pode ser dividida em dois tipos de comandos:

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

127

A DDL (Data Definition Language) - apresenta uma srie de comandos


que permite a definio dos dados. composta, entre outros, pelos
comandos Create, destinado criao do Banco de Dados, das Tabelas
que o compem, alm das relaes existentes entre as tabelas.
Create, Alter e Drop.

Os comandos da srie DML (Data Manipulation Language) - destinados s


consultas, inseres, excluses e alteraes em um ou mais registros de uma
ou mais tabelas de maneira simultnea.
Select, Insert, Update e Delete.
A linguagem SQL um grande padro de banco de dados, devido
simplicidade e facilidade de uso. Ope-se a outras linguagens, visto que uma
consulta SQL especifica a forma e no o caminho para chegar ao resultado. uma
linguagem declarativa, em oposio a outras linguagens procedurais, reduzindo o
ciclo de aprendizado daqueles que se iniciam na linguagem.
Aps estabelecer a comunicao de sua aplicao C# com um SGBD, a forma de
armazenamento, alterao e excluso dos dados se dar com o uso da linguagem
SQL. Esse modelo de aplicao conhecido, hoje, como arquitetura cliente/servidor,
pois as atividades de interface com o usurio (camada de aplicao) e SGBD
(camada de dados) esto fisicamente separados em uma rede de computadores.
medida que o modelo evoluiu, novas camadas foram inseridas, com o objetivo de
aumentar a capacidade de processamento simultneo que a aplicao pode
atender. Dessa forma, as arquiteturas 3-Camadas e N-Camadas, foram batizadas
com uma camada adicional chamada aplicao, ou seja, as classes, mtodos e
funes de uma aplicao, responsveis pela lgica do sistema, podem ficar
armazenadas tambm em um servidor separado. O conceito de N-Camadas surgiu
com o objetivo de representar a capacidade dos sistemas corporativos poderem
escalar horizontalmente, ou seja, para cada camada podemos ter um ou vrios
computadores.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

128

a) O processamento de consulta de dados de uma aplicao at o banco de


dados, envolve uma srie de passos, os quais envolvem software, tecnologia e
informaes. Veja os detalhes na figura 35.

Figura 35 O processo de consulta ao banco de dados usando SQL

Comandos DDL:
Comando

Descrio

CREATE

Permite a criao de tabelas no banco de dados


ou mesmo de sua criao.

DROP

Elimina a definio da tabela, seus dados e


referncias.

ALTER

Permite inserir/eliminar atributos nas tabelas j


existentes

Comandos DML:
Comando

Descrio

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

129

SELECT

Realiza a consulta em um banco de dados

INSERT

Insere dados em uma tabela especfica

DELETE

Exclui dados de uma tabela segundo um critrio

UPDATE

Atualiza os dados em uma tabela

3 JDBC
JDBC (figura 36) uma API (Application Program Interface) para acesso a
SGBDs (Sistemas Gerenciadores de Banco de Dados) relacionais por meio de
comandos SQL (Structured Query Language).

Figura 36 JDBC
A API para programao do sistema a mesma para qualquer SGBD. Por
isso, no h necessidade de se desenvolverem aplicaes voltadas para um SGBD
especfico, pois elas no esto atreladas a uma arquitetura proprietria. Com isso,
fica assegurada a independncia de plataforma de Java. A biblioteca JDBC tambm
permite a construo de pginas WWW dinmicas que acessem banco de dados.
A grande vantagem do modelo JDBC que nenhuma configurao
requerida no lado cliente.
Os Passos para conexo JDBC so os seguintes:
a) Incluir no programa: import java.sql.*;
b) Carregar corretamente o driver desejado;
c) Conectar com o banco de dados;
d) Criar o comando JDBC;
e) Enviar comandos SQL.

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

130

Como voc pode perceber, o primeiro passo para iniciar a comunicao com
o banco de dados o uso de um driver, o software responsvel pela comunicao
entre a aplicao, usando JDBC e o sistema de banco de dados envolvido. Cada
fabricante de banco de dados possui seu prprio driver e sempre prefervel utilizar
o driver nativo do fabricante. A linguagem Java suporta quatro tipos de drivers:
1. Ponte com ODBC: o tipo provido pela Sun. Apropriado para uso
experimental e para situaes em que no haja outro driver disponvel;
2. Driver independente de SGBD: converte chamadas JDBC em chamadas
API do cliente para Oracle, Sybase, Informix, DB2 ou outro SGBD;
3. Acesso ao driver nativo: a API JDBC chama procedimentos do driver
nativo do SGBD instalado na mquina local ou no servidor para as
aplicaes distribudas;
4. Driver com protocolo proprietrio escrito em Java: a comunicao
entre o cliente e o SGBD d-se no protocolo do BD, contudo, como o
driver escrito em Java, dispensa a instalao ou configurao do driver
no cliente.
A abertura da conexo (sesso) feita pelo mtodo getConnection da classe
DriverManager (o servio bsico para gerenciamento de um conjunto de drivers
JDBC) e o mtodo retorna um objeto do tipo Connection. A URL de acesso
composta de protocolo:subprotocolo:subnome e o DriverManager tenta conectar
com o primeiro driver carregado; se no consegue, tenta o driver seguinte e se no
localizar, lanada uma exceo SQLException.
Vamos a um exemplo:
import java.sql.*;
java.util.Properties props = new Properties();
props.put("user", objAccessManager.getConta());
props.put("password", objAccessManager.getSenha());
String url = "jdbc:odbc:temp//"+ "fava" +":6024/" +
bancoDeDados;
try
{
// carrega o driver da ponte jdbc-odbc
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

131

// abre conexao com o banco de dados


Connection con = DriverManager.getConnection(url, props);
// Este banco no aceita autocommit
//con.setAutoCommit( false ); //se o BD lida com transao
}
catch(ClassNotFoundException e) //Class.forName()
{
System.out.println("Classe do Driver JDBC no encontrada");
}
catch(SQLException e)

//DriverManager.getConnection()

{
System.out.println(
"Falha na conexo com o banco de dados:" );
System.out.println(e.getMessage();
}

envio

de

um

comando

SQL

feito

por

intermdio

dos

mtodos

executeQuery(String s) e executeUpdate(String s) de um Statement, da seguinte


forma:
executeQuery:
ResultSet rs = stmt.executeQuery (SELECT * FROM Alunos);

executeUpdate:
stmt.executeUpdate (CREATE TABLE Alunos(nome VARCHAR(32), 
idade INTEGER););
stmt.executeUpdate (INSERT INTO Alunos VALUES(Jonas, 18););

Vamos avaliar um exemplo completo de conexo com banco de dados


usando JDBC.
package skiclub;
import java.sql.*;
import java.util.*;
public class SkiClubDB {
static Connection connection = null;

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

static final String dbDriver =


"COM.ibm.db2.jdbc.app.DB2Driver";
static final String dbUrl= "jdbc:DB2:SKICLUB";
static final String dbName = "SKICLUB";
// Definindo o usurio para criar o banco de dados
static final String dbOwner = "USERID";
// associando o usurio no Windows
static final String dbUser = "USERID";
// Informando a senha do usurio
static final String dbPassword = "PASSWORD";
static final String memberTable = "MEMBERS";
static final String tripTable = "SKITRIPS";
static final String bookTable = "BOOKINGS";
synchronized static Connection getConnection()
throws DBopException
{
if ( connection == null ) {
try {
Class.forName( dbDriver );
connection = DriverManager.getConnection(
dbUrl, dbUser, dbPassword);
} catch ( ClassNotFoundException e ) {
throw new DBopException (
"Cannot load database driver: for DB2, " +
"your classpath must include " +
"SQLLIB\\JAVA\\DB2JAVA.ZIP." );
} catch ( SQLException e ) {
throw new DBopException (
"Cannot connect to database: for DB2, " +
"check that DB2 is running and the SKICLUB "
+ "database exists." );
}
}
return connection;
}
synchronized static ResultSet getAllColumns(
String[] tables, String condition )
throws DBopException
{

SOCIESC Sociedade Educacional de Santa Catarina

132

Programao Aplicada - Java

133

String[] columns = {"*"};


return getSelectedColumns( columns, tables,
condition );
}
synchronized static ResultSet getSelectedColumns(
String[] columns, String[] tables,
String condition )
throws DBopException
{
String select = "SELECT ";
try {
Statement query = getConnection().
createStatement();
for ( int i = 0; i < columns.length; i++ ) {
select += columns[i];
select += i + 1 < columns.length ? "," : " ";
}
select += "FROM ";
for ( int i =0; i < tables.length; i++ ) {
if ( dbOwner.length() > 0 ) {
select += dbOwner + ".";
}
select +=

tables[i];

select +=

i + 1 < tables.length ? "," : " ";

}
select += condition;
System.out.println( select );
return query.executeQuery( select );
} catch ( SQLException e ) {
throw new DBopException (
"Cannot extract data with SQL statement:\n "
+ select );
}
}

synchronized static public int getNextId( )


throws SQLException, DBopException
{
Statement query = getConnection().createStatement();

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

ResultSet result = query.executeQuery(


"SELECT MAX(ID) FROM " +
( dbOwner.length( ) > 0 ? dbOwner + "." : "" ) +
memberTable );
int newId = 1;
if(result.next()==true) {
newId = result.getInt(1) + 1;
}
return newId;
}
synchronized static public void addMember(
ClubMember member )
throws SQLException, DBopException
{
int rowInserted = 0;
Statement insert = getConnection().
createStatement();
String addrecord = "INSERT INTO " +
( dbOwner.length( ) > 0 ? dbOwner + "." : "" ) +
memberTable + " VALUES (" + member.getId() +
",'" + member.getFirstName() + "','" +
member.getMiddleName() + "','" +
member.getLastName() + "','" +
member.getPhoneNumber() + "','" +
member.getAbility() + "')" ;
System.out.println( addrecord );
rowInserted = insert.executeUpdate(addrecord);
if ( rowInserted != 1 ) {
throw new DBopException(
"Unable to add new member to database" );
}
return;
}
synchronized static public void updateMember(
ClubMember member )
throws SQLException, DBopException
{
Statement update = getConnection().createStatement();
String changeRecord = "UPDATE " +

SOCIESC Sociedade Educacional de Santa Catarina

134

Programao Aplicada - Java

( dbOwner.length( ) > 0 ? dbOwner + "." : "" ) +


memberTable + " SET " +
"FNAME = '" + member.getFirstName() + "'," +
"MNAME = '" + member.getMiddleName() + "'," +
"LNAME = '" + member.getLastName() + "'," +
"PHONENUM = '" + member.getPhoneNumber() + "'," +
"ABILITY = '" + member.getAbility() + "'" +
"WHERE ID = " + member.getId();
System.out.println( changeRecord );
int changed = update.executeUpdate( changeRecord );
if ( changed < 1 ) {
throw new DBopException(
"No changes made to databare" );
} else if ( changed > 1 ) {
throw new DBopException(
"More than one member's data was affected: "
+ changed + "records changed." );
}
return;
}
synchronized static public ClubMember
getMemberByID ( int id )
throws SQLException, DBopException,
BadDataException
{
String[] tables = { memberTable };
ResultSet result = getAllColumns( tables,
"WHERE ID = " + id );
if ( ! result.next() ) {
return null;
}
ClubMember member = new ClubMember();
member.setId( result.getInt( "ID" ) );
member.setFirstName(
result.getString( "FNAME" ).trim() );
member.setMiddleName(
result.getString( "MNAME" ).trim() );
member.setLastName(
result.getString( "LNAME" ).trim() );
member.setPhoneNumber(

SOCIESC Sociedade Educacional de Santa Catarina

135

Programao Aplicada - Java

result.getString( "PHONENUM" ).trim() );


member.setAbility(
result.getString( "ABILITY" ).trim() );
if ( result.next( ) ) {
throw new DBopException (
"Duplicate Member ID: " + id );
}
return member;
}
synchronized static public ClubMember getMemberByName (
String firstName, String lastName )
throws SQLException, DBopException, BadDataException
{
String[] tables = { memberTable };
ResultSet result = getAllColumns( tables,
" WHERE FNAME = '" + firstName +
"' AND LNAME = '" + lastName + "'" );
if ( ! result.next() ) {
return null;
}
ClubMember member = new ClubMember();
member.setId( result.getInt( "ID" ) );
member.setFirstName(
result.getString( "FNAME" ).trim() );
member.setMiddleName(
result.getString( "MNAME" ).trim() );
member.setLastName(
result.getString( "LNAME" ).trim() );
member.setPhoneNumber(
result.getString( "PHONENUM" ).trim() );
member.setAbility(
result.getString( "ABILITY" ).trim() );
if ( result.next( ) ) {
throw new DBopException (
"Duplicate member name: "
+ firstName + " " + lastName );
}
return member;
}

SOCIESC Sociedade Educacional de Santa Catarina

136

Programao Aplicada - Java

137

synchronized static public Vector retrieveTrips( )


throws DBopException
{
Vector trips = new Vector();
try {
String[] tables = { tripTable };
ResultSet result = getAllColumns( tables,
"ORDER BY ID" );
while( result.next() ) {
SkiTrip trip = new SkiTrip();
trip.setId( result.getInt( "ID" ) );
trip.setWeek( result.getInt( "WEEK" ) );
trip.setDay( result.getString( "DAY" ).trim() );
trip.setCapacity( result.getInt( "CAPACITY" ) );
trip.setBooked( result.getInt( "BOOKED" ) );
trips.addElement(trip);
}
} catch ( SQLException e ) {
throw new DBopException (
"Error reading Table: " + tripTable);
}
return trips;
}

synchronized static public Vector getSkierTrips(


int skierID )
throws DBopException
{
String[] tables = { tripTable, bookTable };
String condition = "WHERE " +
( dbOwner.length( ) > 0 ? dbOwner + "." : "" ) +
tripTable + "."

+ "ID" + "=" +

( dbOwner.length( ) > 0 ? dbOwner + "." : "" ) +


bookTable + "." + "TRIPID" +
" AND " +
( dbOwner.length( ) > 0 ? dbOwner + "." : "" ) +
bookTable + "." + "MEMBERID=" + skierID;
Vector trips = new Vector();
try {

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

ResultSet result = getAllColumns(


tables, condition );
while( result.next() ) {
SkiTrip trip = new SkiTrip();
trip.setId( result.getInt( "ID" ) );
trip.setWeek( result.getInt( "WEEK" ) );
trip.setDay( result.getString( "DAY" ).trim() );
trip.setCapacity( result.getInt( "CAPACITY" ) );
trip.setBooked( result.getInt( "BOOKED" ) );
trips.addElement(trip);
}
} catch ( SQLException e ) {
throw new DBopException (
"Error reading Table: " + tripTable);
}
return trips;
}

synchronized static public Vector retrieveBookings(


int skierID )
throws DBopException
{
Vector trips = new Vector();
try {
String[] tables = { bookTable };
String[] columns = { "TRIPID" };
ResultSet result = getSelectedColumns( columns,
tables, " WHERE MEMBERID = " + skierID +
" ORDER BY TRIPID" );
while( result.next() ) {
trips.addElement( new Integer
( result.getInt( "TRIPID" ) ) );
}
} catch ( SQLException e ) {
throw new DBopException (
"Error reading Table: " + bookTable);
}
return trips;
}

SOCIESC Sociedade Educacional de Santa Catarina

138

Programao Aplicada - Java

synchronized public static void updateTrip(


SkiTrip trip )
throws DBopException, SQLException
{
Statement update =
getConnection().createStatement();
String doChange = "UPDATE " +
( dbOwner.length( ) > 0 ? dbOwner + "." : "" ) +
tripTable + " SET " +
"BOOKED = " + trip.getBooked() +
" WHERE ID = " + trip.getId();
System.out.println( doChange );
int changed = update.executeUpdate( doChange );
if ( changed != 1 ) {
throw new DBopException(
"Error updating booked count for trip "
+ trip.getId() );
}
return;
}

synchronized public static void addBooking(


Booking booking)
throws DBopException, SQLException
{
int rowInserted = 0;
Statement insert = getConnection().createStatement();
String addrecord = "INSERT INTO " +
( dbOwner.length( ) > 0 ? dbOwner + "." : "" ) +
bookTable + " VALUES (" + booking.getMemberId() +
"," + booking.getTripId() + ")";
System.out.println( addrecord );
rowInserted = insert.executeUpdate(addrecord);
if ( rowInserted != 1 ) {
throw new DBopException(
"Problem adding booking for trip" +
booking.getTripId() );
}
return;

SOCIESC Sociedade Educacional de Santa Catarina

139

Programao Aplicada - Java

synchronized public static void dropBooking(


Booking booking)
throws DBopException, SQLException
{
int rowDeleted = 0;
Statement delete = getConnection().
createStatement();
String addrecord = "DELETE FROM " +
( dbOwner.length( ) > 0 ? dbOwner + "." : "" ) +
bookTable + " WHERE MEMBERID="+
booking.getMemberId() +
" AND TRIPID=" + booking.getTripId();
System.out.println( addrecord );
rowDeleted = delete.executeUpdate(addrecord);
if ( rowDeleted != 1 ) {
throw new DBopException(
"Problem dropping booking for trip" +
booking.getTripId() );
}
return;
}

public static void main( String [] args )


throws SQLException, DBopException,
ClassNotFoundException
{
System.out.println( "Getting Database driver" );
Class.forName( dbDriver );
System.out.println( "Getting Database connection" );
getConnection();
System.out.println( "Database ready" );
return;
}
}

SOCIESC Sociedade Educacional de Santa Catarina

140

Programao Aplicada - Java

141

Sntese
Nesta aula voc aprendeu como trabalhar com banco de dados em suas
aplicaes e quais os principais componentes da plataforma Java que suportam as
operaes de banco de dados.
Com esta aula terminamos o mdulo de Programao Aplicada usando Java. Espero
que voc tenha obtido resultados satisfatrios com o contedo apresentado e que
esteja motivado para continuar a construir aplicaes usando a plataforma Java.
Desejo-lhe boa sorte e no pare seus estudos em Java, pois um mundo de
oportunidades que est em constante crescimento e hoje, est cada vez, permite
que profissionais realizem melhor o seu trabalho.
Um grande abrao!

Exerccios Propostos
1) Qual a funo do JDBC no Java?
______________________________________________________________
______________________________________________________________
______________________________________________________________
2) possvel executar um comando SQL atravs de uma conexo SQL? Caso
positivo, explique os componentes Java envolvidos nesta operao.
______________________________________________________________
______________________________________________________________
______________________________________________________________

SOCIESC Sociedade Educacional de Santa Catarina

Programao Aplicada - Java

REFERNCIAS
MORGAN, M..; Java 2 para programdores profissionais. Sams Books, 2000.
RODRIGUES FILHO, Renato; Desenvolva aplicativos com Java 2. rica, 2005.
GOSLING, James; A linguagem de programao Java. Bookman, 2007.
CADENHEAD, Rogers; Aprenda em 21 dias Java 2. Campus, 2005.
LINDEN, Peter; Simplesmente Java2. Alta Books, 2005.

SOCIESC Sociedade Educacional de Santa Catarina

142

Вам также может понравиться