Beruflich Dokumente
Kultur Dokumente
Pg.
Apresentao
Carssimos, com grande prazer que aqui propomos este mini-curso sobre a linguagem de
programao JAVA.
Por que o ttulo Java, programando rumo ao futuro!? Porque pretendemos dar uma viso geral da
linguagem e inter-los desse novo paradigma de programao atual e como este novo paradigma
pode simplificar a vida dos programadores poupando-lhes tempo, trabalho e, principalmente,
dinheiro.
Esta linguagem de programao oferece muitas vantagens em relao a outras linguagens tais como
o C++, Pascal... Algumas destas vantagens so: portabilidade, grande quantidade de pacotes para a
soluo de vrios problemas, entre as quais: threads e sockets, interfaces grficas, sintaxe simples,
orientao a objetos, compiladores e interpretadores gratuitos.
Outra vantagem relevante do JAVA que esta uma linguagem compilada e interpretada. Isto ,
um programa JAVA compilado para uma linguagem composta por bytecodes. O bytecode um
cdigo de mquina idealizado pelos criadores da linguagem. A maioria dos computadores no
entende os bytecodes, sendo necessrio executar o programa JAVA sobre uma mquina virtual JVM
(Java Virtual Machine). Um programa executado na mquina real capaz de interpretar os bytecodes.
Obviamente, como nem tudo perfeito, algumas desvantagens existem tais como sua baixa
performance em relao a C justamente devido ao fato de usar bytecodes.
Todavia, produtos como Code Generator e Java Caf, da Sun e Symantec geram a partir da
linguagem JAVA um assembly para a mquina real evitando os bytecodes.
Pg.
1 Roteiro
1. Roteiro .................................................................................................................................... 2
2. Contexto histrico da linguagem JAVA ................................................................................... 4
3. Ambiente e configurao de ambiente ...................................................................................... 4
4. Introduo aos aplicativos JAVA ............................................................................................. 5
5. Introduo aos applets JAVA .................................................................................................. 9
6. Estruturas de controle .............................................................................................................. 12
6.1. A estrutura de seleo if ............................................................................................ 12
6.2. A estrutura de seleo if-else ..................................................................................... 12
6.3. A estrutura de repetio while .................................................................................... 13
6.4. A estrutura de repetio for ....................................................................................... 15
6.5. A estrutura de seleo mltipla switch ........................................................................ 15
6.6. A estrutura repetio do-while ................................................................................... 17
6.7. As instrues rotuladas break e continue ................................................................... 17
7. Mtodos e recursividade .......................................................................................................... 18
7.1. Introduo ................................................................................................................. 18
7.2. Durao dos identificadores ....................................................................................... 18
7.3. Regras de escopo ....................................................................................................... 19
7.4. Recurso ................................................................................................................... 19
7.5. Sobrecarga de mtodo ............................................................................................... 19
8. Vetores (arrays) ...................................................................................................................... 19
8.1. Introduo ................................................................................................................. 19
8.2. Arrays multidimensionais ........................................................................................... 20
9. Orientao a objeto (OO) ......................................................................................................... 21
9.1. Introduo ................................................................................................................. 21
9.2. Superclasses e subclasses ........................................................................................... 21
9.3. Modificadores ............................................................................................................ 22
9.3.1. Modificadores de atributos .......................................................................... 22
9.3.2. Modificadores de mtodos ........................................................................... 22
9.3.3. Modificadores de classes ............................................................................. 23
9.4. A referncia super ...................................................................................................... 23
9.5. Sobrescrita (override) de mtodos ............................................................................. 23
9.6. O operador instanceof ............................................................................................... 24
9.7. Construtores e finalizadores ....................................................................................... 24
9.7.1. Construtor ................................................................................................... 24
9.7.2. Finalizador .................................................................................................. 24
9.8. Polimorfismo ............................................................................................................. 24
9.8.1. Introduo ................................................................................................... 24
9.8.2. Vinculao dinmica de mtodo .................................................................. 24
9.8.3. Superclasses abstratas e classes concretas .................................................... 25
9.8.4. Interfaces .................................................................................................... 25
9.9. Definio de classe interna ......................................................................................... 25
9.9.1. Introduo ................................................................................................... 25
9.9.2. Notas sobre definio de classe interna ........................................................ 26
9.10. Classes invlucro de tipo para tipos primitivos ......................................................... 26
9.11. Exemplo .................................................................................................................. 26
10. Componentes bsicos de uma interface grfica (GUI) ............................................................. 27
10.1. Introduo ............................................................................................................... 27
10.2. Container ................................................................................................................ 27
10.3. JLabel ..................................................................................................................... 27
Pg.
Pg.
Historicamente sabe-se que, por volta de 1990 tudo indicava que a revoluo do futuro em
tecnologia seria trazida pelos dispositivos eletrnicos inteligentes destinados ao consumidor final.
Reconhecendo isso, em 1991, a Sun Microsystems iniciou uma pesquisa corporativa interna com o
codinome Green. O projeto resultou numa linguagem baseada no C e C++ que seu criador, James
Gosling, chamou de Oak (carvalho), em homenagem a uma rvore que dava para a janela de seu
escritrio na Sun. Contudo, descobriu-se mais tarde que j existia uma linguagem de programao
com tal nome. Futuramente, em uma visita a uma cafeteria local, o nome Java (cidade de origem de
um tipo de caf importado) foi sugerido e pegou.
O grande impulso dado linguagem foi devido revoluo da WWW (World Wide Web) a partir de
1993. Este impulso foi devido viso do grupo desenvolvedor da linguagem de utilizar o Java para
criar pginas da Web com o chamado contedo dinmico. Comeou-se a a revoluo do mundo
Java.
Pg.
Para WIN(x)
! "#
"#" $
! % $ & $ '
( ! (
( ! (
OBS.: No LINUX e outros sistemas UNIX o path e o classpath j so automticos no sendo
necessrios configur-los na maioria das vezes. Entretanto h casos conhecidos em que isto
necessrio. Neste caso sugerimos uma consulta ao guia de referncia de seu sistema. A primeira
linha acima indica que voc poder executar algum comando do J2SDK a partir de qualquer
diretrio no modo texto. A segunda linha indica o caminho dos seus arquivos .java para o J2SDK.
O arquivo de script descrito acima pode ser de extenso bat no WIN(x) sh no LINUX. Nos
WIN(x) toda vez que voc for programar deve-se executar anteriormente este arquivo de script.
Caso ache isso tedioso coloque as duas linhas acima dentro do arquivo autoexec.bat do sistema.
Finalmente, abra um terminal e/ou console DOS e acesse o diretrio criado e d os comandos:
$ ) $ " ! * ( +, ) - $ ) $
para compilar o programa e
/H
/ 0 dois
213, tipos
"4 " de
! comentrios,
5( 2 !3% ' $ os de linha e os de bloco.
/ 6 0 213, "4 " ! 5(
!3 % 6 /
Vamos analisar o programa abaixo:
/ / ( 7( $" $3% 8., - $ ) $
& , % 9 % $ % 8.,
:
& , % $ ) ." $ ; < ( 72$( 7 = > ?
:
< ! "3 , & ( % ; @ A ! "#B ) $ ."#, 3- $ ) $ C ?
D
D
AloMundo.java
Pg.
No programa acima a primeira linha denota um comentrio. A segunda linha denota a visibilidade
da classe sendo implementada, nesse caso pblica. Obrigatoriamente o nome de classe aparecendo
aqui deve ser o mesmo nome do arquivo gravado no disco sem a extenso java". Isto quer dizer
que, se o arquivo tem o nome de disco teste1.java ento esta linha teria que ser: public class
teste1.
A linha public static void main(String args[]) deve estar presente na classe principal de todo
programa Java. Isto quer dizer que seu programa ter apenas uma vez este mtodo independente do
nmero de classes que voc esteja utilizando. Este mtodo o principal (main) por onde o
interpretador comea a executar o seu programa. O modificador void quer dizer que este mtodo
no retorna nenhum valor. J o modificador static quer dizer que este mtodo esttico, ou seja,
no mudar durante a execuo do programa.
Os parmetros dentro dos parnteses String args[] padro, ou seja, o modo que o programador
tem de passar algum argumento para um programa Java via linha de comando. Isto ser visto em
mais detalhes em momento mais propcio.
//
Pg.
O programa acima produz o mesmo efeito do anterior, entretanto, a sada agora feita atravs de
uma caixa de dilogo message dialog. O primeiro campo da mensagem acima indica que esta
janela no tem um componente pai da a primitiva null.
Toda vez que se for utilizar componentes no padres da linguagem, como os componentes grficos
deve-se importar os pacotes necessrios para o seu funcionamento. Isto feito pela instruo
import xxx onde xxx o nome do pacote a ser importado.
#
< , ($
8., % & % $
* )
8%, , %
! "
#$
B'
A 8
* +
#" 3<
%#&$
)('
A 6 8
* /
.- + <
Correspondncia Aritmtica
/
0 !1
0 !1
% &
/
5
2
/
6
7
5
2
&
6
7
6
7
2
/
* 2 +
* /
% 2 +
* 6 +
* 7
* 6 ++
* 7 +
3 !2 4
2
* 13 7, $% $
* 1# ! ( ! !#+ ! +
3 !2 4
2
* 13" $ (+, ! +
* 13" ! (+, !
* 13" $ (,3 7+ , $% $ +
* 13" ! (,3 7, $% $ +
Pg.
0
#%#
BB
#
3
* #%#
* BB
* 3#
* B
* 6
* /
B
6
/
3 * ! 2 *4 #
* * (
* * #
* * #(
* * 6
* * /
Tipos em Java:
0 ! ( B . "#& % !
A !
0 ! ( B "#& % !
< ' (
0
0 ! (
B "#& % !
0 ! (
7
B "#& %
% $
% , , $ !
B
, % !
% , , $ !
B
$
B
.$ 1
$
$
B
$ .$ 1
$ $
$
B
$ .$ 1
$ $
$
$$ .$
1
$
$ $ $
No existem especificadores de tipos como unsigned, todos os tipos inteiros tm sinal. Valores
literais: O que voc v nem sempre o que voc tem: Um valor como 299792458 considerado int
como padro, se voc quer atribuir esta constante a um long, faa o type cast explicitamente:
72$
3; % 7 ?
$ / / $.( ! ! !2 0
Ou ento use uma terminao em L para indicar que o nmero deve ser representado como long:
% 72$ 9
$
/ / , "# , %
Para indicar valores octais anteceda-os com um zero: 0444 , j para valores hexadecimais antecedaos com 0X ou 0x, exemplo: 0xBCD4.
Para finalizar esta seo vamos ver como se poderia passar argumentos para um aplicativo Java via
linha de comando.
Exemplo de passagem de trs argumentos de linha de comando para um programa Java:
$ ) $3 ! !#@ ! C
" !
Interrompa sua leitura agora e experimente passar argumentos para um dos programas criados
anteriormente, os argumentos obviamente sero ignorados pelo programa e este se comportar da
mesma forma que antes.
Pg.
O vetor de Strings o argumento do mtodo main que normalmente chamvamos de String args[]:
& , % $ ) ." $ 3 2 !
! /
$( 7 = > ?
MostraArgumentos.java
( 7,
" ! 2
$ $
( 7,
" !
( 7,
" ! 3
$( 7,
" ! 3
O termo args.length retorna o comprimento do vetor de Strings, este valor usado para iterar sobre
os argumentos que so Strings armazenadas em args[i]. Perceba que as aspas fazem com que nomes
separados por espaos sejam considerados um s argumento.
Os argumentos passados para seu programa so gravados em um vetor de Strings, para usar o
argumento 3 que ficou armazenado como String, na forma de inteiro, preciso primeiro convert-lo
para inteiro. Isto pode ser feito, no caso do nosso exemplo, atravs de uma chamada a:
0 ! 7 ! ( & $( ! 0 ; $( 7 = > ?
Pg.
10
Para falar em applets temos que dar uma noo rpida antes de orientao a objetos.
Bom, retornando aos applets vamos analisar um inicialmente e, logo aps, introduzir os conceitos
baseados nesse exemplo:
As instrues import ... dizem ao compilador onde encontrar as classes exigidas para compilar
esse applet Java. Essas linhas especficas dizem ao compilador que a classe JApplet est no
pacote javax.swing.
Toda vez que houver a necessidade de desenhar retas, crculos, retngulos, ovais, strings de
caracteres... deve-se importar o pacote Graphics.
A linha public class PrimeiroApplet extends JApplet diz que esta classe ser uma applet. Toda vez
que voc desejar fazer um applet deve-se estender tal classe.
Pg.
11
mtodo init deve-se declarar as variveis, no start inicializ-las e no paint executar as operaes
e/ou transformaes desejadas.
Deve-se observar que em qualquer applet o mtodo paint substitui o mtodo public static void
main obrigatrio em todos os aplicativos. Portanto, colocar em um applet o mtodo main pode
trazer erros a no ser que voc esteja desenvolvendo um aplicativo-applet. Nesse caso, isto deve ser
desenvolvido segundo alguns critrios.
O mtodo drawString(xxx, 25, 35) diz que deve-se desenhar a string xxx nas coordenadas
(X = 25, Y = 35). Lembrando que em qualquer applet a posio ( X = 0, Y = 0) fica na parte
superior esquerda.
Como dito, todo applet precisa de um arquivo html para cham-lo execuo. Segue o arquivo
capaz de chamar o applet PrimeiroApplet.java" anteriormente explicado:
7 ' "#% 6
7 $& & % ! ! C ( " ! ( & & % ! % $ C ' ' ! 7' 9 6
7 / $& & % ! 6
7 / ' "#% 6
PrimeiroApplet.html
//
"#& ( $ ) $ 7 - & & % ! / / "#& ( $2$2 % $ ! - & & % !
"#& ( $ ) $ $ 2( $& ' / / "#& ( $2$2 % $ !2( $& '
& , % 9 % $
:
& , % ) .&
:
7 ( $ !
7 ( $ !
7 ( $ < (
D
D
Pg.
12
6 Estruturas de controle
Normalmente, instrues em um programa so executas uma aps a outra na ordem em que so
escritas. Isso chamado de execuo seqencial. Vrias instrues de Java que discutiremos a
seguir permitem que o programador especifique que a prxima instruo a ser executada pode ser
outra que no a prxima na seqncia. Isso chamado de transferncia de controle.
; $ * , $ ! 6 ?
< ! "3 , & ( % ; @ & ( ) $ C ?
6.2. A estrutura de seleo if-else
A estrutura de seleo if executa uma ao indicada somente quando a condio avaliada como
verdadeira (true); de outro modo a ao pulada. A estrutura de seleo if-else permite ao
programador especificar que uma ao diferente ser executada quando a condio for verdadeira e
quando a condio for falsa. Por exemplo, a instruo em pseudocdigo:
< 2
! ; ?$. $2 2$% , 213" $ ( 2+, !#,3 7, $% $
0 "#& ( " $2@ & ( ) $ C
< ! ;! % ! ?
0 "#& ( " $2@
! & ( ) $ C
imprime Aprovado se a nota do aluno for maior do que ou igual a 60 e imprime Reprovado se a
nota do aluno for menor do que 60. Nos dois casos, depois que ocorre a impresso, a prxima
instruo em pseudocdigo na seqncia executada.
A estrutura if-else em pseudocdigo anterior pode ser escrita em Java da seguinte maneira:
; $* , $ ! 6 ?
< ! "3 , & ( % ; @ & ( ) $ C ?
! % !
< ! "3 , & ( % ; @
! & ( ) $ C ?
Pg.
13
Quando for necessrio colocar mais de uma instruo dentro do corpo de um if ou else esta deve vir
entre chaves.
Outra observao importante refere-se ao fato de muitos programas precisarem de muitas instrues
if-else aninhadas. Isto permitido em Java, entretanto o programador deve prestar ateno que os
elses so casados com os ifs mais prximos. Veja o exemplo em pseudocdigo abaixo:
< !#$. $2 2$% , 213" $ ( 2+, !#,3 7, $% $
0 "#& ( " $2@ C
< ! 3< !#$. $2 2$% , 213" $ ( 2+, !#,3 7, $ %
$
0 "#& ( " $2@ A C
< ! 3< !#$. $2 2$% , 213" $ ( 2+, !#,3 7, $ %
$ $
0 "#& ( " $2@ 'C
< ! 3< !#$. $2 2$% , 213" $ ( 2+, !#,3 7, $ %
$
0 "#& ( " $2@ *C
< !
0 "#& ( " $2@ .
(
! & ( ) $ C
Se a nota do aluno for maior do que ou igual a 90, as primeiras quatro instrues sero verdadeiras,
mas somente a instruo Imprima A do primeiro teste ser executada. Depois disso a estrutura
seno mais externa ser pulada e o programa continuar a partir da prxima instruo. O
pseudocdigo acima pode ser escrito em Java da seguinte maneira:
; $* % ,
< ! "3 , &
! % !3 ; $*
< ! "3 , &
! % !3 ; $*
< ! "3 , &
! % !3 ; $*
< ! "3 , &
! % !
< ! "3 , &
(
% ,
(
% ,
(
% ,
(
% ;@
% ;@
% ;@
% ;@
?
C ?
6 ?
A C ?
6 $?
'C ?
6 ?
*C ?
( % ; @
#B
! & ( ) $ C ?
Pg.
14
interessante observar que no colocar no corpo do while uma ao que por fim far com que a
condio nunca se torne falsa um erro de lgica e normalmente esta estrutura entrar em loop
infinito, ou seja, nunca terminar.
Para exemplificar o uso do while em Java considere um programa para imprimir na tela os nmeros
pares de 1 a 10:
, " ! (
Pg.
15
(
A estrutura for dividida da seguinte forma for (1;2;3) {4}. A parte 1 responsvel por declarar e
inicializar a varivel de controle. A parte 2 a condio de trmino. A parte 3 o incremento ou
decremento do lao. E, finalmente, a parte 4 que representa o corpo da estrutura ou lao.
!
! !
! !
! !
'
'
'
'
Pg.
16
7 ( $
! ; #4 6 #4 6
#4 6 #4 6 2?
( ! $
$ !
7 ( $
.) $% ; #4 6 #4 6
#4 6 #4 6 2?
( ! $
! $, %
- & $ ! ' 82! $ 7 ! * $% 7; , % % ! ( $ $213 ) 5% $ ?
D
D
D
TesteSwitch.java
No programa anterior, aninhada na estrutura for existe a estrutura switch que desenha formas
baseadas no valor de um inteiro dado como entrada. Quando o fluxo de controle alcana a estrutura
switch, a expresso de controle (opcao, neste exemplo) que segue a palavra-chave switch entre
parnteses avaliada. O valor dessa expresso (que deve ser avaliada como uma expresso integral
tal como byte, shor, char ou int) comparado com cada rtulo case. Suponha que o usurio digitou
o inteiro 2 como sua opo. Assim, 2 comparado com cada rtulo case no switch. Se uma
coincidncia ocorre (case 2:), as instrues para esse case so executadas.
A instruo break faz com que o fluxo de controle do programa prossiga com a primeira instruo
depois da estrutura switch. Portanto, esquecer de colocar o break aps instrues dentro de um case
pode levar a erros lgicos em seu programa.
Finalmente, caso no haja nenhuma coincidncia entre o valor testado no switch e os cases
equivalentes a clusula default ser executada.
Pg.
17
O mesmo vlido para instrues do tipo continue. Este tipo de instruo serve para pular um
passo e continuar a partir do prximo. Por exemplo o cdigo:
; 4 7 #%#?
:
; 2 ?
, !
< ! "3 , & ( % ; ?
D
(
imprimir na tela apenas os nmeros 1,2,4 e 5, pois caso encontre i = 3 este passo ser pulado
(continue).
J o cdigo:
; 4 7 #%#?
:
; 2 ?
( ! $
< ! "3 , & ( % ; ?
D
(
imprimir na tela apenas os nmeros 1 e 2 dado que ir parar (break) quando i for igual a 3.
Pg.
18
7 Mtodos e recursividade
7.1. Introduo
A experincia mostrou que a melhor maneira de desenvolver e manter um programa grande
constru-lo a partir de pedaos pequenos e simples, ou mdulos.
H trs maneiras de retornar o controle para o ponto em que o mtodo foi invocado. Se o mtodo
no retornar um resultado, o controle retornado quando a chave direita de final de mtodo
alcanada ou executando a instruo return;. Se o mtodo retornar um resultado, a instruo
return expresso; retorna o valor da funo ao chamador.
Variveis e referncias de durao esttica existem a partir do ponto em que a classe que as define
carregada na memria para execuo, at a trmino do programa.
Pg.
19
7.4. Recurso
Um mtodo recursivo um mtodo que chama a si prprio direta ou indiretamente, atravs de outro
mtodo. Para a recurso so necessrios dois itens: um caso base (caso em que o mtodo retorna
uma resposta) e um passo de recurso (passo onde o mtodo se chama). Ver anexo 7- II.
8 Vetores (arrays)
8.1. Introduo
Um array um conjunto de posies na memria que possuem o mesmo nome e o mesmo tipo.
Qualquer um desses elementos pode ser referenciado fornecendo-se o nome do array seguido pelo
nmero da posio do elemento particular entre colchetes ( [ ] ). O primeiro elemento em cada
array o zero-simo elemento.
Cada array em Java conhece seu prprio comprimento, que sabido pela expresso
" ! ) ! ( % ! 7 '
1
Pg.
20
Arrays podem conter qualquer tipo de dados. importante lembrar que em um array do tipo de
dados primitivo cada elemento contm um valor do tipo de dados declarado do array. Entretanto,
em um array do tipo de dado no primitivo, cada elemento do array uma referncia a um objeto
do tipo de dados do array. Ver anexo 8 - I.
Um array multidimensional com o mesmo nmero de colunas em cada linha pode ser alocado
dinamicamente. Por exemplo, um array 3 por 3 alocado como segue:
= > = >
! = 2> = 2>
Pg.
21
O cdigo precedente cria um array bidimensional com duas linhas. A linha 0 tem cinco colunas e a
1 tem trs colunas. Ver anexo 8 - II.
Herana uma forma de reutilizao de software em que novas classes so criadas a partir de
classes existentes, absorvendo seus atributos e comportamentos e sofisticando-os com as
capacidades que as novas classes exigem.
O polimorfismo permite-nos escrever programas de uma forma geral para tratar uma ampla
variedade de classes relacionadas existentes e ainda a serem especificadas, tornando mais fcil
adicionar novos recursos a um sistema.
Com a herana simples, uma classe derivada de uma superclasse. Java no suporta herana
mltipla, mas suporta a noo de interfaces.
Pg.
22
Cada objeto de uma subclasse tambm um objeto da superclasse dessa subclasse. Entretanto, o
contrrio no verdadeiro os objetos de superclasse no so objetos das subclasses dessa
superclasse.
9.3. Modificadores
Os modificadores so usados para identificar os nveis de acesso de um atributo. Em Java, deve ser
declarado um modificador para variveis, mtodos e classes.
private: o atributo pode ser acessado somente por mtodos que esto dentro da prpria
classe a qual foi declarada.
protected: o atributo pode ser acessado pela prpria classe e pelas classes que dela
derivam.
static: os atributos declarados como static possuem apenas uma cpia para todos os
objetos da classe.
Padro (em branco): o atributo pode ser acessado pela prpria classe e por classes
criadas dentro do pacote do qual esta classe pertence.
private: o mtodo pode ser acessado somente por mtodos que esto dentro da prpria
classe declarada.
protected: o mtodo pode ser acessado pela prpria classe e pelas classes que dela
derivam.
static: o mtodo declarado como static possui apenas uma cpia para todos os objetos da
classe.
Padro (em branco): o mtodo pode ser acessado pela prpria classe e por classes criadas
dentro do pacote do qual esta classe pertence.
native: o mtodo foi feito em outra linguagem (uma linguagem nativa da mquina).
Pg.
23
synchronized: garante que o mtodo ser executado de uma nica vez. Este modificador
bastante utilizado para garantir sincronizao de linhas de execuo, em programao
multithread.
private: a classe s pode ser acessada dentro do arquivo fonte no qual foi codificada.
public: permite que classes em arquivos fontes diferentes possam acessar a classe
public. S pode haver uma classe public por arquivo fonte.
A referncia super, seguida pelo operador ponto ( . ), pode ser utilizada para acessar a verso
original da superclasse desse mtodo da subclasse.
Pg.
24
9.7.2. Finalizador
Cada classe em Java pode ter um mtodo finalizador, que retorna recursos para o sistema. O mtodo
finalizador para um objeto assegura que ser chamado para realizar uma limpeza de terminao no
objeto exatamente antes de o coletor de lixo reivindicar a memria para o objeto. O mtodo
finalizador de uma classe sempre tem o nome finalize, no recebe parmetros e no retorna valor.
Uma classe deve ter apenas um mtodo finalize.
9.8. Polimorfismo
9.8.1. Introduo
A programao polimrfica pode eliminar a necessidade da lgica de switch. O programador pode
utilizar o mecanismo de polimorfismo de Java para realizar a lgica equivalente automaticamente,
evitando assim os tipos de erro geralmente associados com lgica switch.
Pg.
25
O nico propsito de uma classe abstrata fornecer uma superclasse apropriada da qual as outras
classes podem herdar interfaces e/ou implementao. As classes da qual os objetos podem ser
instncias so chamadas de classes concretas.
9.8.4. Interfaces
Uma interface geralmente utilizada em lugar de uma classe abstract quando no h
implementao padro a herdar isto , sem variveis de instncia e sem implementaes de
mtodo padro. Assim como as classes abstract public, as interfaces so, em geral, tipos de dados
public.
Uma definio de interface iniciar com a palavra-chave interface e contm um conjunto de mtodos
public abstract. As interfaces tambm podem conter dados static final public. Para utilizar uma
interface, uma classe deve especificar que ela implementa (implements) a interface e a classe deve
definir cada mtodo na interface com o nmero de argumentos e o tipo de retorno especificado na
definio da interface.
Para implementar mais de uma interface, fornea simplesmente uma lista de nomes de interface
separados por vrgulas depois da palavra-chave implements na definio da classe.
Pg.
26
Como uma classe interna annima no tem nome, um objeto da classe interna annima deve ser
criado no ponto onde a classe definida no programa.
cada
classe.
As
classes
com
nomes
tm
nome
de
arquivo
'
" ! *$ 9% $ !
5. Uma classe interna pode ser declarada static. Uma classe static interna no requer um objeto
de sua classe externa para ser definida (ao passo que uma classe no-static, sim). Uma classe
static interna no tem acesso a membros no-static da classe externa.
Pg.
27
10.2. Container
Um Container uma coleo de componentes relacionados. A classe Container define o conjunto
de mtodos que podem ser aplicados a um objeto de qualquer subclasse de Container.
10.3. JLabel
Os rtulos fornecem instrues de texto ou informaes sobe uma GUI e so com a classe JLabel
subclasse de JComponent. Um rtulo exibe uma nica linha de texto de leitura.
10.4. JTextField
Um JTextField uma rea de uma nica linha em que o texto pode ser inserido via teclado pelo
usurio ou o texto pode ser simplesmente exibido. Quando o usurio digita os dados e pressiona a
tecla Enter, um evento disparado.
10.5. JButton
Um boto um componente em que o usurio clica para acionar uma ao especfica e definido
pela classe JButton.
10.6. JCheckBox
A classe JCheckBox define uma caixa de seleo, que um boto que possui dois estados:
selecionado ou no.
10.7. JRadioButton
A classe JRadioButton define botes de rdio, que diferem de caixas de seleo pelo fato de apenas
um boto do grupo poder ser selecionado por vez.
Pg.
28
10.8. JList
Uma lista exibe uma srie de itens em que o usurio pode selecionar um ou mais destes. As listas
so criadas com a classe JList , que herda da classe JComponent. A classe JList suporta listas de
uma nica seleo e listas de seleo mltipla.
seleo
contnua
de
intervalo
como
descrito
para
uma
lista
A classe JList no fornece automaticamente uma barra de rolagem se houver mais itens na lista que
o nmero de linhas visveis. Nesse caso, um JScrollPane utilizado para fornecer a capacidade de
rolagem automtica para a JList.
10.9. JFrame
A classe JFrame fornece os atributos e comportamentos bsicos de uma janela.
10.11. Painis
GUIs complexas exigem que cada componente seja colocado em uma localizao exata. Elas
consistem, freqentemente, em mltiplos painis com os componentes de cada painel organizados
em um leiaute especfico. Os painis so criados com a classe JPanel.
Pg.
29
Um objeto ouvinte de eventos ouve tipos especficos de eventos gerados no mesmo objeto ou por
outros objetos em um programa. Um tratador de eventos um mtodo que automaticamente
chamado em resposta a um tipo de evento em particular. Cada interface ouvinte de eventos
especifica um ou mais mtodos de tratamento de evento que devem ser definidos na classe que
implementa a interface ouvinte de eventos.
11 Tratamento de excees
11.1. Introduo
O tratamento de excees permite lidar com as condies anormais de funcionamento de seu
programa. Fazer uso deste recurso tornar seu software mais robusto, seguro e bem estruturado. So
exemplos de condies anormais: acesso a um ndice invlido de um vetor, tentativa de uso de um
objeto no inicializado, falha na transferncia de uma informao, uma falha no prevista, etc.
Sem as facilidades oferecidas pela linguagem seria muito difcil lidar com essas condies
anormais, isto pode ser observado nos deficientes meios de tratamento de erros usados em
linguagens que no fornecem exception handling, tratamento de excees.
Nesse sentido, Java uma linguagem que faz forte uso do conceito de tratamento de excees. Em
algumas linguagens que implementam esse tratamento perfeitamente possvel programar sem usar
esse recurso, mas em Java no. Isto pode ser comprovado pela necessidade de alguns blocos de
cdigo try {} catch {} em muitos programas.
Um dos motivos de o programador Java ter que saber tratamento de excees que os mtodos de
classes definidas na linguagem podem gerar excees e na maioria das vezes o compilador nos
obriga a escrever tratadores (blocos try{} catch{}) para chamadas destes mtodos.
Pg.
30
Quando voc for estruturar seu cdigo dessa forma, haver duas aes bsicas que devem ser
tomadas: levantar (jogar) uma exceo e tratar uma exceo. Uma exceo ser levantada quando
for verificada uma condio anormal de funcionamento do programa, ento o mtodo que est
sendo executado imediatamente terminado e o controle passa para o mtodo que o chamou, onde
pode ocorrer um tratador da exceo ou no. Se ocorrer um tratador, na maioria dos casos a exceo
pra de se propagar ali mesmo. Se no ocorrer um tratador outras chamadas de mtodos so
desfeitas, encerradas, podendo culminar no trmino do programa se toda a cadeia de chamada de
mtodos foi desfeita at chegar em main sem que se ache um tratador para esta exceo. Existem
vrios modelos de tratamento de excees. O modelo adotado por Java recebe o nome de:
termination model, justamente por essas terminaes de mtodos.
!
&
As excees geradas pela linguagem pertencem a uma hierarquia cujo topo a classe Throwable,
imediatamente estendida por Error e Exception. No prximo exemplo voc ver que os tratadores
de exceo so escolhidos comparando a classe da exceo jogada e a classe de excees que o
tratador diz tratar. Assim sendo o tratador:
(
:
/ 6 $% 7 2+, !3& $27 ! ( $(, " $2! ! $ 6 /
D
$ '2; 2 ! ( ( ?
:
/ 6 $ ! ! ( $ $" ! 2 2! ( ( 2 " & ) ! % " ! !3 ) $3 ! $ ) $2 !#! ! ,
" ! ' $" $
6/
D
Tratamento de exceo
Seria capaz de tratar todas as excees que estejam abaixo de Exception (na hierarquia) geradas em
try { }. Dispondo mais de um tratador (bloco catch) em seqncia onde os primeiros s tratam as
Pg.
31
classes excees mais baixas da hierarquia, possvel escolher que cdigo de tratamento usar com
cada tipo de exceo gerada.
Por sorte, das excees levantadas pela linguagem, voc como programador s precisar tratar as da
hierarquia
de
Exception.
seguir
iremos
forar
acontecimento
da
exceo
(
$ = > .
/ / % ' $2$ " $27 ! ( $2! ! !
) 5% 2+, $ (
/ / +, $% +, ! ( , 7 2! ( 2$ +, ; ! & #
! $ = > . ?
/ / , $3 ! ( 52! ! , $
D
$ '
:
//
//
D
< !
; ! & #$ ! ?
Em projetos grandes, para tratar excees de uma maneira uniforme em todo o projeto.
Pg.
32
Pg.
12 Bibliografia
[1] DEITEL, H. M.; Deitel, P. J. Java, como programar. Editora Bookman, Porto Alegre - 2001
[2] CHAN, Mark C.; Griffith, Steven W.; Iasi, Anthony F. Java, 1001 dicas de programao.
Editora Makron Books, So Paulo 1999.
33
13 Anexos
Captulo 7
I. Escopo
/ / ! "#& % 2 !#! &
"#& ( $ ) $ $ ' $ ! (
"#& ( $ ) $ 7 6
; ?
A ; ?
; ?
A ; ?
//
" !
/ / " !
/ / " !
// )
#
; ? ! " " 3) $( $ ) ! % % $% $, " $ $
A ; ?, % $2$3) $( $ ) ! % !3 $ $
; ?( ! $2$3) $( $ ) ! % % $% $, " $ $
$( $ ) ! % !3 $ $9( ! ! " ! , ) $% (
@ C?
#
@ C?
#%#)
#
@ $& ,
$ (
#
#
6
$( ! $ < $ $ $& & ! ; @ $( 5 ) ! % !3 $ $) $% !#C#
Pg.
34
( ! $ ! ; ? ?
< ! "3 , & ( % ; @ , " ! ( . $3 ! +, ! $2 ! $
C#
$ ; , " ? #
@ C?
Pg.
35
//
"#&
"#&
& ,
:
Pg.
36
Captulo 8
I. usando arrays.
/ / 0 $% $2$( ( $ 93& $( $2 ! ( & $( ! !
$3
"#& ( $ ) $ 7
& , % 9 % $ 0 $ ( ( $
:
& , % $ ) ." $ ; < ( 72$( 7 = > ?
:
$% $"9( ( $ #
/ /
! ! ( ! $.& $( $2$( ( $ !3
= >
< ( 73 $ $ 4@ C
Pg.
37
/ / $22$& & % !
& , % ) . ; ?
:
' $ ! (347 ! ' ! $ ! ; ?
$ ; $( ! $ < $ $3?
$( ( $ = > = > :#:2
D : D#D
$( ( $
= > = > :#:2
D : D : D#D
$( ! $ < $ $ ! ! ; @ $% ( ! 2$( ( $ & (% ' $3
C ?
( $ < $ $; $( ( $ 9?
$( ! $ < $ $ ! ! ; @ $% ( ! 2$( ( $
& (% ' $3 C?
( $ < $ $; $( ( $
.?
D
$ => => ?
7 ' #%# ?
$ = > % ! 7 ' #%# ?
Captulo 9
I. Hierarquia de cilindro, ponto e crculo com uma interface Forma.
( " $
Pg.
38
& , % 9 % $ 9
2! ! ! "#& % !
" ! ( " $
:
& ( ! ! . / / ' ( ! $ $
/ / ' ( , ( ! "4$( 7, " !
& , % # ; ?
:
$ , $ ; 2?
D
/ / ' ( , (
& , % # ; $ #?
:
$ , $ ; $ #?
D
//
, $2$ ( ! $ $
!
& , % ) 2$ , $ ; $ #?
:
#4$2#
D
/ / ! 7 $2$2 ( ! $ $
& , % & ! 7 $ * ; ? : ( ! , (
D
/ / ! 7 $2$2 ( ! $ $3
& , % ! 7 $ ; ? : ( ! , ( D
/ /
! ( $23) % , " !
& , % 9 , % ! ) % , " ! ; ?
:
( ! , ( #
D
/ /
! ( $2. " !# $2 % $ !
& , % < ( 7.& ! 7 $ " ! ; ?
:
( ! , (
D
Parte 2 de 5
Pg.
39
//
* ! $ 2 2
$ % $ !'9 ( , %
/ / ! ( $2 !2
& , % 9 % $ '9 ( , % 2! ! 9
:
& ( ! ! 2 , % !3( $
/ / ' ( , ( ! "4$( 7, " !
& , % .'9 ( , % ; ?
:
/ / '9' $" $. "#& % $2$ 2 ( , ( $3 , & ! ( % $ !#$ ! !#$ +,
$ , $
$ ; 2?
D
/ / ' ( , (
& , % .'9 ( , % ; , % !3( $ #?
:
, & ! ( ; $ #? / / '9' $" $22 ( , ( $3 , & ! ( % $ !
$ , $
$ ; ( ?
D
//
, $2.( $ 2 %'9 ( , %
& , % ) 2$ , $
$ ; , % !3( ?
:
( $ ; ( 6 4#(
2
?
D
/ / ! 7 $2.( $ 2 %'9 ( , %
& , % 9 , % !3& ! 7 $
$ ; ?
:
( ! , ( 3( $
D
/ / '$% , % $2$2$( ! $2 %'9 ( , %
& , % 9 , % !#$( ! $; ?
:
( ! , ( #82$ ' 0 6 ( $ 6 ( $
D
$
/ /
! ( $2. " !# $2 % $ !
& , % < ( 7.& ! 7 $ " ! ; ?
:
( ! , ( '9 ( , %
D
Parte 3 de 5
Pg.
40
//
* ! $ 2
$2 % $ !'9 % (
& , % 9 % $ '9 % ( 2! ! '9 ( , %
:
& ( ! ! 2 , % !#$% , ( $ / / % , ( $2 %'9 % (
$% , ( $
/ /
! ( $2. " !# $2 % $ !
& , % < ( 7.& ! 7 $ " ! ; ?
:
( ! , ( '9 % (
D
Parte 4 de 5
Pg.
41
Parte 5 de 5
Pg.
42
Captulo 10
I. JCheckBox
"#& ( $ ) $ $ 6
"#& ( $ ) $ $ ! ) ! 6
"#& ( $ ) $ 7 6
?
! '9' ! A
$ % ! ( ; ?
! 7( $ 0 ! " ! ! ( ; ' $ % ! ( ?
$% $ 0 ! " ! ! ( ; ' $ % ! ( ?
! < ! ;
$ 2?
' ; ?
$& % $ ! ! ( ;
! $& ! ( ; ? :
& , % ) 3 '9% 7;
:
< ! "3 ! ; 2?
D
D
?
) ! ! ?
& ( ) $ #
! % $ '9' ! A
$ % ! ( "#& % ! " ! 0 ! "
& ( ) $ !3 ) $% ! 7( 0
& ( ) $ !3 ) $% 0 $% 0
& , % ) . ! "9< $ ! 9
' ' $ 7 ! ; 0 ! "
:
)!
! ?
! ! ( :
Pg.
43
; ! 7 ! < , ( !
; ! 7 ! < $ !
) $% ! 7(
! % !
) $% ! 7(
; ! 7 !
; ! 7
) $% 0
! % !
) $% 0
0
0! "
)!
<
'
* ?
)!
<
'
* ?
0
! ;
! ; " !
" $
( ! & $ ; ?
) $% 0 $%
.? ?
II. JRadioButton
"#& ( $ ) $ $ 6
"#& ( $ ) $ $ ! ) ! 6
"#& ( $ ) $ 7 6
& , % 9 % $
& ( ) $ ! - !
& ( ) $ !
! "#& %
$ A , #! ! - ( $" !2:
! % 3
! ( " $% ! ! 7(
! 0 $% ! 0 $ % ! 7(
& ( ) $
! -
$ A , 3 ( " $% ! 7( $% ! 7( 0 $%
& ( ) $ 2
! A , 2( , &2( $ 2( , &
& , % ! "#& %
$ A , ; ?
:
, & ! ( ; ! "#& % 2 !
$ A , ?
'
/ / '9( $3-
$ A ,
( " $% ! -
$ A
$ ; ( " $% ?
! 7( ! -
$ A
$ ; ! 7( 3?
$% ! -
$ A ,
$ ; $% 3?
! 7( 0 $% ! -
( , ! ?
$% ! ?
$% ! ?
/ /
! 7 ( $2! ) !
% ! (
' $ % !
' $ % !
$ % ! (
$% ! ?
!
$ A , $ % ! ( ; ?
( ?
( ?
?
Pg.
44
'9( $.( ! % $ $
2( , &
2( , & $
2( , & $
2( , & $
2( , & $
.%
!
;
;
;
;
$ A ,
! $& % 3 ! ! "#& %
$ A , ; ?
$& % $ ! ! ( ;
! $& ! ( ; ? :
& , % ) 3 '9% 7;
:
< ! "3 ! ; 2?
D
D
?
) ! ! ?
& ( ) $ #
! % $
$ A , $ % ! ( "#& % ! " ! 0 ! "
:
& , % ) . ! "9< $ ! '9' $ 7 ! ; 0 ! " ) ! ! ?
:
; ! 7 ! < , ( ! ; ?2 ( " $% ?
! ; ! ( " $% ?
! % !3 ; ! 7 ! < , ( ! ; ?2 ! 7( 3?
! ; ! ! 7( 3?
! % !3 ; ! 7 ! < , ( ! ; ?2 $% 3?
! ; 0 $% 3?
! % !3 ; ! 7 ! < , ( ! ; ?2 ! 7( 0 $% 3?
! ; ! 7( 0 $% 3?
( ! & $ ; ?
D
D
! ! (
Pg.
45
"#& ( $ ) $ 7 6
"#& ( $ ) $ $ 6
"#& ( $ ) $ $ ! ) ! 6
& , % 9 % $ ! "#& % 8., % & % ! < ! % ! ! ! - ( $" !2:
& ( ) $ ! - % $*! '( ! % $*! '& $
& ( ) $ ! - A , # & $
& ( ) $ ! < ( 7. " ! *$ '( ! = >
: ( ! , % '9 $ '9 $2! , ( '9 $
! ( ! '9 $2 % $( 82$ 7 ! $ $( $ $
$
! ( " ! % ' A ( $ " $( ! % D
& , % ! "#& % 8., % & % ! < ! % ! ; ?
:
, & ! ( ; ! "#& % 2 3
! % $
! ! % ! ." % & % $ ?
'
%
%
%
%
/
?
$ ; & $3?
$*! '&
$*! '&
$*! '&
$*! '&
$*! '&
< ! %!
$ ; !
%
%
%
%
%
$ ! - ; ?
$ ! % !
', ; 2?
$ ! ! '! % % ' ; 2?
$ ! ! '! % % ! 7' ; 2?
$ ! < ! % ! 82 ! ;
0
<
82 ! % < 0
- < ( % % $ ! ; % $*! '& $3? ?
' 0
?
Pg.
46
?
) ! ! ?
IV. JPanel
"#& ( $ ) $ $ 6
"#& ( $ ) $ $ ! ) ! 6
"#& ( $ ) $ 7 6
'
(
D
?
$& % $ ! ! ( ;
! $& ! ( ; ? :
& , % ) 3 '9% 7;
:
< ! "3 ! ; 2?
D
D
?
) ! ! ?
Pg.
47
V. Tratamento de Eventos
"#& ( $ ) $ 7 6
"#& ( $ ) $ $ ! ) ! 6
"#& ( $ ) $ $ 6
& , % 9 % $ 9 (! ! - ( $" !2:
& ( ) $ !3 ) $ % ( *! * B ) $% ( *!
B
& , % # ( ; ?
:
, & ! ( ; " "#& % ! & ( 7( $" $2 !# ! ! ' ?
7 ! ' ! $ ! ; ? $ ;
! $ ! % ; '9% +, #
! !#$( ( $ !#." , !3& $( $2 ! ! ' $( ?
A ( ! ( $ , < ?
$ 82, ! 82 ! ! ( ;
! 82, ! 82 $& ! ( ; ? :
& , % ) ." , ! *( $ 7 7 ! ; 82, ! ) ! ! ?
:
) $% ( *! * 4! 7 ! * ; ?
) $% ( *! 4! 7 ! ; ?
+
( ! & $ ; ? +
D
D
?
+ .?
$& % $ ! ! ( ;
! $& ! ( ; ? :
& , % ) 3 '9% 7;
:
< ! "3 ! ; 2?
D
D
?
) ! ! ?
Pg.
48
Captulo 11:
I. Tratamento de excees padres
& , % 9 % $ ! $
:
& , % $ ) ." $ ; < ( 72$( 7 = > ?
:
( ; 6 4 B .?
:
(
:
% $ # /
< ! "3 , & ( % ; @
! , % $ 2
! . ) .
& (C#4# @!
C# ?
D
$ '2; ( ' " ! ! & #! ?
:
< ! "3 , & ( % ; * ) $ .& ( ! ( . 3 , & ( $ $ ?
D
D
D
D
& ( !
:
<
//
//
//
D
!
&
% $ '$ $ % ! (
:
& ( ) $ !3 ! , % $
'$ $ % !
:
D
! , % $ 4
Pg.
49
Pg.
50
$ 2
' ; $ , '! , % $ ! ?
:
! "#& ( " ! ( ( ; ?
D
D
& ( ) $
! ) .( ! ( $ '! , % $ ; ! 3?
:
! , % $ ! , % $ (3 !
D
$ ( $
% ! $
( ! $
!
$ !
$ '
' $(
%$
, !
, % !
! % !
! !
$% !
$%
$% %
% $
(
& $ $ 7 !
"#& % ! " !
"#& (
$ !
! ($ !
% 7
$ ) !
!
, %%
'
& ( ) $ !
& ( ! !
& , %
(! , (
' (
$
, & ! (
'
' ( !
' (
' (
( $ !
(, !
(
)
) % $ % !
' % !
! $, %
13.3. Wrappers
Cada tipo primitivo da linguagem Java, exceto short e byte, possui uma classe correspondente
declarada no pacote java.lang. Essas classes que empacotam esses tipos primitivos e alguns
mtodos e constantes so denominados wrappers. Assim temos as seguintes classes wrappers:
Integer, Boolean, Long, Double, Float e Character.
identificador
nome
_variavel1
$mudanca21
Pg.
51