Você está na página 1de 68

Captulo 01 O que o O Java : * Uma liguagem de programao; * Um ambiente de desenvolvimento; * Um ambiente de aplicao; O Java resultado de uma busca por

or uma linguagem de programao ue pudesse !ornecer uma ligao com o C""# mas com segurana$ Os primeiros ob%etivos alcanados com desenvolvimento desta nova linguagem !oram: * Criao de uma linguagem orienta a ob%etos; * &ornecimento de um ambiente de desenvolvimento por dois motivos: * 'elocidade no desenvolvimento ( eliminando o ciclo de compilar(lin)ar(carregar( testar; * *ortabilidade do C+digo ( com um interpretador ue especi!ica a !orma do nvel do sistema operacional$ , *ode rodar em ual uer tipo de sistema operacional-; * .o tem acesso a ponteiros do sistema operacional; * &ornece dinamismo durante a manuteno de programas; Garbage Collection (Libera uma coleo) O Java no segura /reas de mem+ria ue no esto sendo utili0adas# isto por ue ele tem uma alocao din1mica de mem+ria em tempo de e2ecuo$ .o C e C"" ,e em outras linguagens- o programa desenvolvido respons/vel pela alocao e desalocao da mem+ria$ 3urante o ciclo de e2ecuo do programa o Java veri!ica se as vari/veis de mem+ria esto sendo utili0adas# caso no este%am o Java libera automaticamente esta /rea ue no esta sendo utili0ada$ Java ?

Segurana no Cdigo Os ar uivos do Java so compilados e so convertidos de ar uivos te2to para um !ormato ue contm blocos independentes de b4tes codes ,C+digo 5ntermedi/rio-$ 6m tempo de e2ecuo estes b4tes codes so carregados# so veri!icados atravs do 74te Code 'eri!ier ,uma espcie de segurana-# passam asseguir para o interpretador e so e2ecutados$ Caso este c+digo se%a acionado diversas ve0es# e2iste um passo c8amado J59 Code :enerator# ue elimina o utili0ao por demasia do tr/!ego da rede$
Class Loader Javac T1.java

Byte Code Verifer

T1.class

Runtime

hardware

;bra o .otepad e crie o seguinte programa$ <alve(o como Prog 1 1.java class *rog0101 = public static void main ,<tring arg >?= int a @ A# b @ 10; a @ a " A; <4stem$out$println,BCeu *rimeiro *rogamaB-; <4stem$out$println,B O valor da variavel a @ B " a-; D D ;p+s terminar o programa compile(o e e2ecute(o:

C:F$$$$$FJavac *rogr0101$%ava C:F$$$$$F Java *rog0101

Captulo 0E Comentrio 6stes so os trHs tipos permitidos de comntarios nos programas !eitos em Java: II coment/rio de uma lin8a I* coment/rio de uma ou mais lin8as *I I** coment/rio de documentao *I ,;r uivos de documentao!onto e v"rgula# $loco e o e %ao em branco * .o %ava# os comandos so terminados com o sinal de ponto e vrgula ,;* Um bloco tem inco e tem o seu !im representados pelo uso das c8aves =D; * O uso do espao em branco permite uma mel8or visuali0ao dos comandos e em conse uencia !acilita a sua manuteno$ &denti'icadore .a linguagem Java um identi!icador startado com uma letra# undersco , J -# ou sinal de d+lar ,K-# e e2iste uma di!erenciao entre letras maiLsculas e minLsculas:

5denti!icadores v/lidos: * identi!ier * user.ame * UserJname * Js4sJvar1 *Kc8ange (i%o $ ico no Java .o Java e2istem oitos tipos b/sicos e um tipo especial$ Tipo Lgico ( boolean: on e o!!; true e !alse ou 4es e no$ Tipo Textual ( c8ar e <tring

Um caracter simples usa a representao do tipo c8ar$ O tipo c8ar representa na !orma Unicode um caracter de 1M(bit$
N

O literal do tipo c8ar pode ser representado com o uso do ,O O-$ OFnP Q nova lin8a OFrP Q enter OFuRRRRP Q especi!ica um caracter Unicode o Se2adecimal$ OFtP Q tabulao OFFP ( F OFT TP ( UT

ual representado na !orma

O tipo <tring# como no primitivo# usado para representar uma se VHncia de caracteres$

Palavras Reservadas
abstract boolean breaa) b4te case catc8 c8ar class continue de!ault do double else e2tends !alse !inal !inall4 !loat !or i! implements import instanceo! int inter!ace long native neW null pac)age private protected public return s8ort static super sWitc8 s4nc8roni0ed t8is t8roW t8roWs transient true tr4 void volatile W8ile

Tipo Integral byte, short, int e long 62istem uatro tipos de integral: 9aman8o da 5ntegral X bits 1M bits GE bits MN bits .ome ou 9ipo b4te s8ort int long 6spao (EY $ $ $ $ EY ( 1 (E1A $ $ $ $ E1A ( 1 (EG1 $ $ $ $ EG1 ( 1 (EMG $ $ $ $ EMG ( 1

Tipo Ponto Flutuante Uma vari/vel do tipo ponto !lutante pode ser declarada usando a palavar float ou double$ G$1N M$0E6EG E$Y1X! 1EG$N6"G0M3 Conveno de Cdigo no Java Class ( .omes de classes podem ser maiLsculas ou minLsculas ou misturado ,maiLsculas e minLsculas-# mas "or conven#$o o nome das classes come#am "or letra mai%scalas$; Interfaces ( .omes de 5nter!aces suportam nomes iguais aos das classes; !todos ( .omes de mtodos podem ser verbos# podendo misturar entre maiLsculas e minLsculas# sendo entretando a "rimeira letra mai%scula; Constantes ( .omes de constantes podem ser maiLsculas# minLsculas# misturadas# separadas com underscores$ "ari#veis ( 9odas as instancias# classes e vari/veis globais suportam maiLsculas e minLsculas$ Controles de $struturas( Convencionou(se o uso de = D ,c8aves-; $spa%os ( Convencionou(se o uso de uatro espaos para identaZes; Co&ent#rios ( Use os coment/rios para e2plicar os segmentos de c+digo ue no so obvios$ Um ponto !lutuante simples; Um valor de ponto !lutuante largo; Um valor de ponto !lutuante simples; Um valor de ponto !lutuante usando o tipo double$

$xerc'cios( 62erccio 01 class *rog0E01 = public static void main ,<tring arg >?= int a @ A# b @ 10; a @ a " A; II b @ b*E; <4stem$out$println,U'alor da variavel a: U " a-; <4stem$out$println,U 'alor da variavel b: T " b-; D D 62erccio 0E class *rog0E0E = public static void main ,<tring arg >?= int a @ A# b @ 10; a @ a " A; b @ b*E; <4stem$out$println,U'alor da variavel a: U " a-; <4stem$out$println,U 'alor da variavel b: T " b-; D D

Captulo 0G )arivei e (em%o de vida 'ocH tem dois meios para descrever vari/veis: usando o tipo simples de ligao int e float ou usando tipos de classes de!inidas pelo programa$ 'ocH pode declarar vari/veis de duas !ormas# uma dentro de um mtodo e a outra dentro da classe a ual este mtodo est/ includo$ &niciali*ao de varivei .o Java no permitido o uso de vari/veis inde!inidas$ 'ari/veis de!inidas dentro do mtodo so c8amadas de vari/veis autom/ticas# locais# tempor/rias ou est/ticas e devem ser iniciali0adas antes do uso$ [uando um ob%eto criado# as vari/veis membro so iniciali0adas com os seguintes valores em tempo de alocao: Valor inicial 0 !alse Tamanho X bits

Ti"o de vari&vel
b4te

7oolean O%eradore .o Java os operadores so muito similares ao estilo e !uncionalidade de outras linguagens como por e2emplo o C e o C""$ *r(incremento: 2 @ 10; 2 @ 2 " 1; O valor da vari/vel 2 11 ou 2 @ 10;

""2 O valor da vari/vel 2 11$ *+s(5ncremto: 2 @ 10; 2 @ 2 " 1; O valor da vari/vel 2 11 ou 2 @ 10; 2"" O valor da vari/vel 2 11$ 3i!erena entre o *r(5ncremento e o *+s(5ncremento: 2 @ 10 ""2 @\ neste e2ato momento a vari/vel a vale 11 2 @10 2"" @\ neste e2ato momento a vari/vel 2 vale 10 <eparadores: $ >? ,- ; #

Operadores:

'"eradores
@@ 5gualdade ou

(escri#$o

]]

Concatenao
O operador " utili0ado para concatenar ob%etos do tipo <tring# produ0indo uma nova <tring: <tring *rimeiro.ome @ U;ntonioT; <tring <egundo.ome @ UCarlosT; <tring .ome @ *rimeiro.ome " <egundo.ome;
^

Ca ting ( Conver o de ti%o ) ; linguagem Java no suporta conversZes arbitr/rias de tipos de vari/veis$ 'ocH deve e2plicitar a converso entre tipos de vari/veis$ 62emplo: long bigval @ M; II Operao v/lida int smallval @ ^^_; II Operao inv/lida por ue so de tipos di!erentes !loat 0 @ 1E$N1N&; !loat 0p @ 1E$N1N; Convertendo _ong big'alue @ ^^_; 5nt s uas8ed @ ,int-,big'alue-; II Operao v/lida II Operao inv/lida por ue esta tentando atribuir um valor double$

Controle de +lu,o 3eclaraZes de &lu2os


&'# el e i! ,e2pressoII e2presso cu%o retorno um valor do tipo boolean = 3eclaraZes ou blocos D else II caso a condio anterior no se%a satis!eita = 3eclaraZes ou blocos D -itc. sWitc8 ,e2presso- II 6sta e2presso deve ser do tipo int ou c8ar = case cond01: declaraZes; brea); II usado para sair do case$ case cond0E: declaraZes; brea); case cond0G: declaraZes;
10

brea); D 'or Loo% !or ,e2prJinicial; condioJboolean; incremento= 3eclaraZes ou blocos; D W.ile Loo% W8ile,condioJboolean= 3eclaraZes ou blocos; D do Loo% do = 3eclaraZes ou blocos; D W8ile,condioJboolean-;

11

$xerc'cios

62erccio 01 public class *rog0G01


= public static void main,<tring arg> ?= int 2 @ ,int-,Cat8$random,-*100-; int 0 ; int 4 ; i! ,2 \ A0= 4 @ ^; D 0 @ 4 " 2; D D

62erccio 0E public class *rog0G0E


= public static void main,<tring arg> ?= int 2 @ ,int-,Cat8$random,-*100-; int 0 @ 0; int 4 @ 0; i! ,2 \ A0= 4 @ ^; D else
1E

= <4stem$out$println,UO valor de 2 menor ue A0T-; 4 @ ,int-,Cat8$random,- * ,G$1N--; D 0 @ 4 " 2; <4stem$out$println,UO valor da vari/vel 2 @ T " 2-; <4stem$out$println,UO valor da vari/vel 4 @ T " 4-; <4stem$out$println,UO valor da vari/vel 0 @ T " 0-; D D

62erccio 0G
public class *rog0G0G = public static void main,<tring arg>?= int valor @ ,int-,Cat8$random,-*A-; sWitc8,valor= case 0: <4stem$out$println,B*rimeira Opo ,'alor igual a 0ero-B-; brea); case 1: <4stem$out$println,B<egunda Opo ,'alor igual a um-B-; brea); de!ault: <4stem$out$println,BOutras OpZes ,'alor maior ue um-B-; brea); D D D

62erccio 0N
public class *rog0G0N = public static void main,<tring arg>?= int valor @ ,int-,Cat8$random,-*A-; W8ile,valor `\ 0= valor @ ,int-,Cat8$random,-*A-;
1G

<4stem$out$println,B'alor igual a B " valor-; D D D

1N

Captulo 0N

( ;rra4s

/eclarao de 0rra1 c8ar s > ?; *oint p > ?; 6m Java um ;rra4 uma classe$ Criando um 0rra1 'ocH pode criar arra4s# ligando(o a todos os ob%etos# usando a palavra neW# da seguinte !orma: s @ neW c8ar>E0?; p @ neW *oint>100?; <tring names> ?; names @ neW <tring>N?; names>0?@ U:eorginaT; names>1?@UJenT; names>E?@U<imonT; names>G?@ U9omT; ou <tring names> ?; names @ neW <tring>N?; <tring names > ? @ = U:eorginaT# UJeanT# U<imonT# U9omTD; 0rra1 2ulti3dimencionai Java no possui arra4s multi(dimencionais# mas ele permite declarar um arra4 ue baseado em um outro arra4$ int tWo3im > ? > ? @ neW int >N? > ? ; tWo3im>0? @ neW int >A? ; tWo3im>1? @ neW int >A? ;

1A

4,erc"cio classe *rog0N01 = t8is;rra4 int; t8at;rra4 int; public static void main ,<tring args > ?= int> ? t8is;rra4 @ =1#E#G#N#A#M#Y#X#^#10D !or ,int i @0; i ` t8is;rra4$lengt8; i""= <4stem$out$println, U ConteLdo do ;rra4 U " t8is;rra4>i?-; D D D class *rog0N0E = public static void main,<tring arg> ?= int ;>? @ neW int>G?; ;>0? @ A0; ;>1? @ 100; ;>E? @ 1A0; <4stem$out$println,B9aman8o do vetor @ B " ;$lengt8-; int conta; !or,conta @ 0; conta` ;$lengt8 ; conta""=<4stem$out$println,Bindice @ B " conta " B valor@ B " ;>conta? -;D D D

1M

Captulo 0A (

Classes e Ob%etos

Ve)culos
1a .vel

Ve)culos de Trans"orte Ve)culos de Passeio


Ea .vel

!a*ricante
Ga .vel

n +)veis

0b trao de (i%o de /ado [uando itens de dados so compostos para tipos de dados# semel8ante a uma data# vocH pode de!inir um nLmero de bits de programas ue especi!ica a operao do tipo de dados$ 6m Java vocH pode criar uma associao entre o tipo data e a operao tomorroW a seguir: public class 3ate = private int da4# mont8# 4ear; public void tomorroW, = II c+digo ue incrementa o dia D D

1Y

/e'inio de 2todo 6m Java# mtodos so de!inidoss usando uma apro2imao ue muito similar b usada em outras linguagens# como por e2emplo C e C""$ ; declarao !eita da seguinte !orma: ` modi!iers \ ` tipo de retorno \ ` nome \ , ` lista de argumentos \ - ` bloco \ ` modi!iers \ (\ segmento ue possue os di!erentes tipos de modi!icaZes inclundo public# protected e private$ ` tipo de retorno \ (\ indica o tipo de retorno do mtodo$ ` nome \ (\ nome ue identi!ica o mtodo$ ` lista de argumentos \ (\ todos os valores ue sero passados como argumentos$ public void add3a4s ,int da4s-

!a agem de )alore 6m Java o Lnico argumento passado Ub4(valueT; este um argumento &ay not be changed do mtodo c8amado$ [uando um ob%eto criado# passado um argumento para o mtodo e o valor deste argumento uma re!erHncia do ob%eto$ O conteLdo do ob%eto passvel de alterao c8amado do mtodo# mas o ob%eto re!erenciado %amais alterado$ 0 5e'er6ncia (.i c aplicado a mtodos no est/ticos$ O Java associa automaticamente a todas as vari/veis e mtodos re!erenciados com a palavara this$ *or isso# na maioria dos casos torna(se redundante o uso em todas as vari/veis da palavra this$ 62istem casos em se !a0 necess/rio o uso da palavar this$ *or e2emplo# vocH pode necessitar c8amar apenas uma parte do mtodo passando uma inst1ncia do argumento do ob%eto$ ,C8amar um classe de !orma locali0ada-; 7irt8da4 b3a4 @ neW 7irt8da4,t8is-; Ocultando /ado Usando a palavra private na declarao de da4# mont8 e 4ear na classe 3ate# vocH impossibilitar/ o acesso a estes membros de um c+digo !ora desta classe$ 'ocH no ter/ permisso para atribuir valores# mas poder/ comparar valores$
1X

4nca% ulamento c uma proteo adicional dos dados do ob%eto de possveis modi!icaZes impr+prias# !orando o acesso a um nvel mais bai2o para tratamento do dados$ Sobre crevendo 2todo O Java permite ue vocH ten8a mtodos com o mesmo nome# mas com assinaturas di!erentes$ 5sto permite a reusabilidade dos nomes dos mtodos$ public void print, int i public void print, !loat ! public void print, <tring s[uando vocH escreve um c+digo para c8amar um desses mtodo# o mtodo a ser c8amado ser/ o ue coincidir com tipos de dados da lista de par1metros$ Con trutore O mecanismo de iniciali0ao do Java autom/tico# ou se%a se no inciali0armos um construtor# o Java o iniciali0ar/ automaticamente$ Cas e2istem casos ue se !a0 necess/rio a declarao e2plicita dos construtores$ *ara escrever um mtodo ue c8ama um construtor# vocH deve seguir duas regras: 1d O nome do mtodo precisa ser igual ao nome da classe$ Ed .o deve retornar um tipo declarado para o mtodo$ Subcla e (5elacionada ) .a classe *ai vocH deve declarar os ob%etos comun a todos# e nos sub(nveis ,<ubclasses-# vocH declara as particulariedades: public class 6mplo4ee = private <tring name; private 3ate 8ire3ate; private 3ate dateO!7irt8; private <tring %ob9itle; private int grade; $$$$$$$
1^

Subcla e (4,ten 7e ) 6m linguagens de orientao a ob%etos# um mecanismo especial !ornecido para ue permita ao programa de!ina classes e termos previstas na de!inio de outras classes$ 6sta ar uitetura em Java usa a palavra e2tends$ public class 6mplo4ee = private <tring name; private 3ate 8ire3ate; private 3ate dateO!7irt8; private <tring %ob9itle; private int grade; D public class Canager e2tends 6mplo4ee = private <tring departament; private 6mplo4ee > ? subordinates; $$$$$$$$$$$ D 8erana Sim%le 6m Java no e2iste 8erana mLltipla$ 6m Java os Construtores no so 8erdados$ Java permite ue uma classe e2tenda uma outra classe# com isso esta classe 8erda as caractersticas da outra classe$ !olimor'i mo ; idia de polimor!ismo a de muitas !ormas# onde eu posso utili0ar uma classe de diversas maneiras e !ormas possveis$

E0

public class 6mplo4ee e2tends Ob%ect and public class Canager e2tends 6mplo4ee 0rgumento de 2todo e Cole7e 8eterogenea Usando esta apro2imao vocH pode escrever mtodos ue aceitam um ob%eto genrico$ O uso do polimor!ismo !ornece uma srie de !acilidades$ public 9a2eate !ind9a2eate, 6mplo4ee e- = Canager m @ neW Canager, -; $$$$$$$ 9a2eate t @ !ind9a2eate,m-; 5sto possvel por ue um :erente um empregado$ Uma coleo 8eterogHnea uma coleo de coisas di!erentes$ 6m linguagem orientada a ob%etos# vocH pode criar uma coleo de coisas ue tem uma classe de antepassados comuns$ ;ssim n+s poderemos !a0er isso$ 6mplo4ee > ? sta!! @ neW 6mplo4eee > 10EN ?; sta!!> 0 ? @ neW Canager , -; sta!!> 1 ? @ neW 6mplo4ee , -; 6 assim sucessivamente nos podemos escrever um mtodo de tipos ue pZe empregados ordenados por idade ou em ordem salarial sem ter ue se preocupar com a ordem de insero$ O O%erador in tanceo' &ornece o dado ue vocH ad uiriu atravs da passagem de par1metros$ Caso vocH receba um ob%ect por re!erHncia do tipo 6mplo4ee# esta re!erHncia poderia no ser mostrado para Canager$ <e vocH uiser testar isso use instanceo!$ public void met8od,6mplo4ee e- = i! ,e instanceo! Canager- = D else i! , e instanceo! Contractor- = D else =

E1

D D Ob9eto Lanado 6m circunst1ncias onde vocH recebeu uma re!erHncia para uma classe pai# e vocH determinou ue o ob%eto de !ato uma subdiviso de classe particular usando o operador de instanceo!# vocH pode restabelecer a !uncionalidade completa do ob%eto lanado$ Sobre3e crevendo 2todo O Java permite ue vocH declare mtodos na classe pai e no desenvolva nen8uma l+gica dentro desses mtodos# permitindo com isso ue o desenvolvimento desses mtodos ven8a a ser trabal8ados dentro das sub(classes posteriores$ Class &uncionario, ler, Class Cotorista, ler , <uper$ler, (\ ee!erencia o mtodo da classe pai

Com%arando Java com outra Linguagen 6m C"" vocH pode ad uirir este comportamento# desde ue vocH mar ue o mtodo como virtual na !onte$ Cla e e agru%ando 3 !acote

Java provH o mecanismo de pacotes como um modo de se agrupar classes relacionadas$ 9o longe# todos nossos e2emplos pertencem b !alta ou pacotes no mencionados$

EE

; f

a b a onde: f ( *acote ( letra ,a# b $$$- ( classe 7 f 7 b c ( 7$e

0 declarao im%ort 6m Java# uando vocH uer usar instalaZes de pacotes# vocH usa a declarao de importao para contar para o compilador onde ac8ar as classe ue vocH vai usar$ ; declarao de importao ,import- deve preceder a declarao de todas as classes$

EG

4,erc"cio class *rog0A01 = public static void main,<tring arg> ?= int a# b@10# c@G; a @ !unc,b#b"c-; IIc8amada de !uncao$ O retorno passado para a vari/vel a <4stem$out$println,Bvalor de a @ B " a-; D II ; de!inicao da !uncao esta logo abai2o public static int !unc,int 2# int 4= int ret; ret @ 2"4; return ret; D D

EN

Captulo 0M (

62ception na _inguagem Java

O que uma 4,ce%tion ? 6m Java# a classe de 62ceo de!ine condiZes de erro moderados ue seus programas podem encontrar$ 6m ve0 de vocH dei2ar o programa terminar# vocH pode escrever um c+digo para tratar as e2ceZes e continuar a e2ecuo do programa$ ; linguagem Java implementa C"" nomeando e2ceZes para poder construir um c+digo el/stico$ [uando um erro acontece em seu programa# o c+digo ue ac8a o erro pode UdispararT uma e2ceo$ 3ispara uma e2ceo o processo de sinali0ar o processo corrente atual de ue um erro aconteceu$ 'ocH enlata a captura da e2ceo e uando possvel recupera a conduo das pr+2imas rotinas$ 2ani%ulao de 4,ce%tion 3eclaraZes tr4 e catc8 Uma maneira de manipular possveis erros# usando as declaraZes tr4 e catc8$ ; declarao tr4 indica a parte do c+digo aonde poder/ ocorrer uma e2ception# sendo ue para isso vocH dever/ delimitar esta parte do c+digo com o uso de c8aves$ .a declarao catc8 vocH coloca o c+digo a ser e2ecutado caso ven8a a ocorre uma e2ception$ tr4 = II c+digo ue pode ocasionar uma e2ception D catc8= II tratamento do erro D 3eclarao !inall4 ; declarao !inall4 utili0ada para de!inir o bloco ue ir/ ser e2ecutado tendo ou no uma e2ception# isto ap+s o uso da declarao de tr4 e catc8$ tr4 = II c+digo ue pode ocasionar uma e2ception D catc8= II tratamento do erro D !inall4 = II c+digo D 62ceptions mais comuns
EA

,rithmetic-.ce"tion ( int i @ 1E I 0 +ullPointer-.ce"tion ( ocorre uando utili0o um ob%eto ue no !oi instanciado$ +egative,rray/i0e-.ce"tion ( ocorre uando atribuido um valor nulo para um arra4$ ,rray1nde.'ut'fBounds-.ce"tion ( ocorre uando tento acessar um elemento do arra4 ue no e2iste$ Categoria de 4,ce%tion S/ trHs grandes categorias de e2ceZes em Java$ 3e !ato# a classe Java$lang$98roWable age como uma classe pai # para ue todos os ob%etos disparados possam ser pegos nas e2ceptions$ 3eve(se evitar usar a classe 98roWable# procure usar uma das trHs classes descritas b seguir: * 6rro ( indica um problema srio de recuperao di!cil# se no impossvel; * euntime62ception ( problema ocorrido durante a implementao; * Outra e2ceo ( indica uma di!iculdade durante a implementao ue pode acontecer ra0oavelmente por causa de e!eitos ambientais e pode se manipulado$ /eclare ou 2ani%ule a ua 4,ce%tion .a construo de um c+digo em Java# o programador deve prever mtodos para tratar possveis erros$ 62istem duas maneiras de o programador satis!a0er esta e2igHncia$ ; primeira com o uso da declarao tr4 e catc8# como !oi visto anteriormente# e a segunda maneira indicando ue a e2ceo no dirigida para este mtodo# sendo ento %ogado para o mtodo c8amador$ public void troublesome, - t8roWs 5O62ception

EM

4,erc"cio class *rog0M01 = public static void main ,<tring args> ?= int i @ 0; int scap @ 0; <tring greetings > ? @ = USello WordT # U.o# 5 mean itgT# US6__O hOe_3gTD; h8ile ,i ` N= tr4 = <4stem$out$println,greetings>i?-; D catc8,;rra45nde2OutO!7ounds62ception e= scap""; <4stem$out$println,U'alor do indice !oi re!i2ado T " scap-; i! ,scap ` A= i @ (1; D D catc8,62ception e= <4stem$out$println,e$to<tring,--; D !inall4 = <4stem$out$println,U6sta mensagem ser/ sempre impressa$T-; D i""; D D D

EY

Captulo 0Y (

Construindo :uis no Java

O !acote 9ava:a-t .o pacote %ava$aWt contm as classes para a gerao de componentes :ui$ Os componentes :ui geralmente so de aspectos visveis# como butZes ou labels$ !o io do com%onente ; posio dos componentes no container determinado pelo gerente de la4out$ O taman8o dos componentes tambm de responsabilidade do gerente de la4out$ O mtodo main() c respons/vel pela criao da inst1ncia de ob%etos e pela iniciali0ao do mtodo go,-$ O ne- +rame Cria uma inst1ncia da classe %ava$aWt$&rame$ O &rame no %ava o nvel mais alto da %anela# aonde !icam por e2emplo o barra de ttulos$ O etLa1out() Cria uma inst1ncia do !lu2o do gerente de la4out# aonde colocado o &rame$ O ne- $utton() Cria uma inst1ncia da classe %ava$aWt$7utton$ O boto o local na %anela aonde empurrado para ue se ten8a uma ao$

O add() cste mtodo adiciona elementos ,butZes# cai2as de te2to# etc$- ao !rame$ O %ac;() 6ste mtodo !i2a o taman8o dos elementos no !rame$ O et)i ible()
EX

6ste mtodo torna os elementos visveis no !rame$ O +lo- La1out 2anager O !loW la4out para posicionar componentes em uma determinada lin8a ou con%unto de lin8as$ ; cada instante uma nova lin8a !ica c8eia e uma nova lin8a comeada$ O $order La1out 2anager c mais comple2o do ue o &loW _a4out Canager# pois !ornece componentes ue possibilitam manusear o posicionamento do elemento dentro do container$ O Grid La1out 2anager 'ocH pode criar lin8a e colunas dentro de seu container$ O CardLa1out *ermite vocH criar duas inter!aces semel8antes a butZes# sendo entretanto o painel completo$ +rame c uma armao aonde so inseridos diversos elementos como: botZes# labels# etc$ !anel <o recipientes aonde so inseridos diversos elementos como: botZes# labels# etc$

E^

4,erc"cio 62ercco 01 import %ava$aWt$*; class *rog0Y01 = public static void main ,<tring >? arg= &rame ! @ neW &rame,-; 7utton b1 @ neW 7utton,-; 7utton bE @ neW 7utton,-; 7utton bG @ neW 7utton,-; 7utton bN @ neW 7utton,-; !$set_a4out,neW &loW_a4out,--; !$add,b1-; !$add,bE-; !$add,bG-; !$add,bN-; !$set<i0e,E00#E00-; !$set'isible,true-; D D 62erccio 0E import %ava$aWt$*; class *rog0Y0E = public static void main ,<tring >? arg= &rame ! @ neW &rame,-; 7utton b1 @ neW 7utton,-; 7utton bE @ neW 7utton,-; 7utton bG @ neW 7utton,-; 7utton bN @ neW 7utton,-; 7utton bA @ neW 7utton,-; *anel p @ neW *anel,-; p$set_a4out,neW &loW_a4out,--; !$set_a4out,neW 7order_a4out,--; p$add,b1-; p$add,bE-; !$add,B.ort8B#p-; !$add,BCenterB#bG-; !$add,BhestB#bN-; !$add,B6astB#bA-; !$set<i0e,E00#E00-;
G0

!$set'isible,true-; D D 62erccio 0G import %ava$aWt$*; class *rog0Y0G e2tends &rame = <tring 2 @ B*ara voltar# ola mundo B; IIconstrutor *rog0Y0G,<tring 2= super,2-; D public void paint ,:rap8ics g= g$setColor,Color$red-; g$draW<tring,2#A0#A0-; D public static void main ,<tring arg >?= II instancia o !rame com um ttulo *rog0Y0G W @ neW *rog0Y0G,BJanela do *rog0Y0G B-; W$set<i0e,E00#E00-; W$set'isible,true-; D D

G1

Captulo 0Y O !acote 9ava:a-t .o pacote %ava$aWt contm as classes para a gerao de componentes :ui$ Os componentes :ui geralmente so de aspectos visveis# como butZes ou labels$ !o io do com%onente ; posio dos componentes no container determinado pelo gerente de la4out$ O taman8o dos componentes tambm de responsabilidade do gerente de la4out$ O mtodo main() c respons/vel pela criao da inst1ncia de ob%etos e pela iniciali0ao do mtodo go,-$ ne- +rame Cria uma inst1ncia da classe %ava$aWt$&rame$ O &rame no %ava o nvel mais alto da %anela# aonde !icam por e2emplo o barra de ttulos$ etLa1out() Cria uma inst1ncia do !lu2o do gerente de la4out# aonde colocado o &rame$ ne- $utton() Cria uma inst1ncia da classe %ava$aWt$7utton$ O boto o local na %anela aonde empurrado para ue se ten8a uma ao$ add() cste mtodo adiciona elementos ,butZes# cai2as de te2to# etc$- ao !rame$ %ac;() 6ste mtodo !i2a o taman8o dos elementos no !rame$

GE

et)i ible() 6ste mtodo torna os elementos visveis no !rame$ +lo- La1out 2anager O !loW la4out para posicionar componentes em uma determinada lin8a ou con%unto de lin8as$ ; cada instante uma nova lin8a !ica c8eia e uma nova lin8a comeada$ $order La1out 2anager c mais comple2o do ue o &loW _a4out Canager# pois !ornece componentes ue possibilitam manusear o posicionamento do elemento dentro do container$ Grid La1out 2anager 'ocH pode criar lin8a e colunas dentro de seu container$ CardLa1out *ermite vocH criar duas inter!aces semel8antes a butZes# sendo entretanto o painel completo$ +rame c uma armao aonde so inseridos diversos elementos como: botZes# labels# etc$ !anel <o recipientes aonde so inseridos diversos elementos como: botZes# labels# etc$

GG

4,erc"cio
62erccio 01 import %ava$aWt$*; import %ava$aWt$event$*; class *rog0Y01 e2tends &rame implements ;ction_istener= <tring 2; public void paint,:rap8ics g=i! ,2 g@ nullg$draW<tring,2#100#100-; D public void action*er!ormed,;ction6vent e= 2@B9e;965 O 6'6.9O 36 7O9;OB; repaint,-; D public static void main ,<tring arg >?=*rog0Y01 ! @ neW *rog0Y01,-; 7utton 7 @ neW 7utton,-; !$set_a4out,neW &loW_a4out,--; !$add,7-; 7$add;ction_istener,!-; !$set<i0e,G00#G00-; !$s8oW,-; D D 62erccio 0E import %ava$aWt$*; import %ava$aWt$event$*; class *rog0Y0E e2tends &rame implements ;ction_istener= <tring 2; 7utton b; 7utton c; public void paint,:rap8ics g=i! ,2 g@ null-

GN

g$draW<tring,2#100#100-; D public *rog0Y0E,= set_a4out,neW &loW_a4out,--; b @ neW 7utton,-; c @ neW 7utton,-; add,b-; add,c-; b$add;ction_istener,t8is-; c$add;ction_istener,t8is-; set<i0e,G00#G00-; s8oW,-; D 62erccio 0G import %ava$aWt$*; import %ava$aWt$event$*; class *rog0Y0G e2tends &rame implements 5tem_istener= C8ec)bo2 b; C8ec)bo2 c; public *rog0Y0G,= set_a4out,neW &loW_a4out,--; b @ neW C8ec)bo2,BoneB#null#true-; c @ neW C8ec)bo2,BtWoB-; add,b-; add,c-; b$add5tem_istener,t8is-; c$add5tem_istener,t8is-; set<i0e,G00#G00-; s8oW,-; D public void item<tateC8anged,5tem6vent e= i! ,e$get<ource,-$e uals,b-= <4stem$out$println,BCli uei no botao bB-; <4stem$out$println,BO estado do botao b e: B " b$get<tate,- -; D else i! ,e$get<ource,-$e uals,c-= <4stem$out$println,BCli uei no botao cB-; <4stem$out$println,BO estado do botao c e: B " c$get<tate,- -; D D
GA

public static void main ,<tring arg >?= neW *rog0Y0G,-; D D

GM

Captulo 0X O que um evento? [uando o usu/rio e2ecuta uma ao b inter!ace de usu/rio# isto causa um evento a ser emitido$ 6ventos so ob%etos ue descrevem o ue aconteceu$ '/rios tipos di!erentes de classes de evento e2istem para descrever categorias gerais di!erentes de ao de usu/rio$ +onte de evento Uma !onte de evento ,ao nvel de inter!ace de usu/rio- o resultado de alguma ao de usu/rio em um componente de ;h9$ *or e2emplo# um trinco de rato em um componente de boto gerar/ ,!onte- um ;ction6vent$ 2ani%uladore de evento [uando um evento acontece# o evento recebido pelo componente com o ue o usu/rio interagiu; por e2emplo# o boto# slider# campo de te2to# e assim por diante$ Um manipulador de evento um mtodo ue recebe o ob%eto de 6vento de !orma ue o programa pode processar a interao do usu/rio$ Como o %roce ado 4vento 6ntre J3j 1$0 e J3j 1$1# 8ouve mudanas signi!icantes do modo ue so recebidos eventos e so processados$ J/< =:> Contra J/< =:= 2odelo de 4vento J3j 1$0 usa um modelo de evento de 8ierar uia# e J3j 1$1 usa um modelo de evento de delegao$ 6n uanto este curso cobre o J3j 1$1# importante recon8ecer como estes dois modelos de evento comparam$ 2odelo de .ierarquia (J/< =:>) O modelo de evento de 8ierar uia baseado em 8ierar uia de reteno$ 6ventos ue no so dirigidos ao componente continuaro propagando ao recipiente do componente automaticamente$

2odelo de delegao (J/< =:=) O J3j 1$1 introdu0iu um modelo de evento novo# c8amou(o de evento de delegao$ .o modelo de evento de delegao# so enviados eventos a componente# onde cada componente registrar uma rotina de manipulao de eventos ,c8amado de ouvinte- para receber o evento$ 3este modo o manipulador de eventos pode estar em uma classe separada do componente$ ; manipulao do evento delegada ento b classe separada$
GY

)antagen do 2odelo de delegao * .o so dirigidos eventos acidentalmente; no modelo de 8ierar uia possvel para um evento propagar a um recipiente e dirigido a um nvel ue no esperado$ * c possvel criar !iltro ,adaptador- de classes para classi!icar aZes de evento$ * O modelo de delegao muito mel8or para a distribuio de trabal8o entre classes$ * O modelo de evento novo provH apoio por !ei%Zes de Java$ /e vantagen do 2odelo de delegao * c mais comple2o# pelo menos inicialmente# entender$ * ; migrao do J3j 1$0 para o J3j 1$1 no !/cil$ k 6mbora o J3j atual ap+ia o J3j 1$0# os modelos podem ser misturados$

GX

Ca")tulo 2 3 's Com"onentes da Bi*lioteca ,4T

* eecon8ea os componentes c8aves da biblioteca ;h9$ * Use os componentes da ;h9 para construir inter!aces de usu/rio para programas reais$ k Controle as cores e mananciais usados por um componente de ;h9

5nstalaZes do ;h9
O ;h9 provH uma variedade larga de instalaZes standards$

Buttons
c uma das inter!aces b/sicas# ue ativa ap+s ser precionada$

Chec5*o.es
C8ec)bo2e !ornece uma inter!ace simples# aonde as opZes possveis so UonIo!!T$

Chec5*o.6rou"s
C8ec)bo2:roups um tipo de C8ec)bo2e especial# di!erenciando do anterior pelo sinal de seleo# no caso uma bolin8a# e aonde apenas uma opo poder/ ser marcada$

Choice
O C8oice !ornece uma seleo simples dentro de uma lista de opZes$

Canvas
Canvas uma tela de !undo ,papel de parede- aonde iro ser adicionados componentes$

La*el
_abel um ob%eto simples ue mostra uma lin8a simples de te2to$

G^

Te.t!ield
9e2t&ield um ob%eto simples ue permite a digitao dentro dele$

Te.t,rea
9e2t;rea um ob%eto mais completo ue permite a digitao de v/rias lin8as dentro dele$

List
O _ist um tipo de C8oice# mas ue permite a seleo mLltipla dentro da lista de opZes$

N0

4,erc"cio import %ava$aWt$*; import %ava$aWt$event$*; class *rog 0X01 e2tends &rame implements 5tem_istener= C8ec)bo2:roup cgb @ neW C8ec)bo2:roup,-; C8ec)bo2 one @ neW C8ec)bo2,BoneB#cgb#!alse-; C8ec)bo2 tWo @ neW C8ec)bo2,BtWoB#cgb#!alse-; C8ec)bo2 t8ree @ neW C8ec)bo2,Bt8reeB#cgb#true-; public *rog0X01,= set_a4out,neW &loW_a4out,--; add,one-; add,tWo-; add,t8ree-; one$add5tem_istener,t8is-; tWo$add5tem_istener,t8is-; t8ree$add5tem_istener,t8is-; set<i0e,G00#G00-; s8oW,-; D public void item<tateC8anged,5tem6vent e= i! ,e$get<ource,-$e uals,one-= <4stem$out$println,BCli uei no botao oneB-; <4stem$out$println,BO estado do botao one e: B " one$get<tate,- -; D else i! ,e$get<ource,-$e uals,tWo-= <4stem$out$println,BCli uei no botao tWoB-; <4stem$out$println,BO estado do botao tWo e: B " tWo$get<tate,- -; D i! ,e$get<ource,-$e uals,t8ree-= <4stem$out$println,BCli uei no botao t8reeB-; <4stem$out$println,BO estado do botao t8ree e: B " t8ree$get<tate,- -; D D public static void main ,<tring arg >?= neW *rog0X01,-; D D 62erccio 0E

N1

import %ava$aWt$*; import %ava$aWt$event$*; class *rog0X0E e2tends &rame implements 5tem_istener= C8oice cgb @ neW C8oice,-; public *rog0X0E,= set_a4out,neW &loW_a4out,--; cgb$add5tem,BoneB-; cgb$add5tem,BtWoB-; cgb$add5tem_istener,t8is-; add,cgb-; set<i0e,G00#G00-; s8oW,-; D public void item<tateC8anged,5tem6vent e= i! ,e$get<ource,-$e uals,cgb-<4stem$out$println,cgb$get<elected5tem,--; D public static void main ,<tring arg >?= neW *rog0X0E,-; D D 62erccio 0G import %ava$aWt$*; import %ava$aWt$event$*; class *rog0X0G e2tends &rame implements ;ction_istener= 9e2t&ield b; public *rog0X0G,= set_a4out,neW &loW_a4out,--; b @ neW 9e2t&ield,E0-; add,b-; b$add;ction_istener,t8is-; set<i0e,G00#G00-; s8oW,-; D public void action*er!ormed,;ction6vent e= i! ,e$get<ource,-$e uals,b-= <4stem$out$println,b$get9e2t,--; D
NE

D public static void main ,<tring arg >?= neW *rog0X0G,-; D D 62erccio 0N import %ava$aWt$*; import %ava$aWt$event$*; class *rog0X0N e2tends &rame implements ;ction_istener= 9e2t;rea b; 7utton a; public *rog0X0N,= set_a4out,neW &loW_a4out,--; a @ neW 7utton,-; b @ neW 9e2t;rea,A#A-; add,a-; add,b-; a$add;ction_istener,t8is-; set<i0e,G00#G00-; s8oW,-; D

NG

Captulo 0^

!rame
&rame uma armao aonde sero inseridos ob%etos$

Panel
*anel um tipo de container aonde sero inseridos ob%etos$

(ialog
Um 3ialog semel8ante ao &rame# nisso uma %anela parada gr/tis com algumas decoraZes$ .o so !eitos 3ialog normalmente visvel para o usu/rio uando eles so criados primeiro$

!ile(ialog
&ile3ialog um tipo de implementao ue permite ao usu/rio selecionar pastas dentro de uma lista de opZes$

/crollPane
<croll*ane so as barras de rolagens de um panel$

7enus
Cenu uma srie de opZes disponvel$ Um !ator importante da criao de menus no Java a respeito do Selp$ O 8elp pode ser deslocado para !icar o mais a direita possvel dos demais itens$ O Cenu7ar um tipo de menu 8ori0ontal$ O Cenu5tem so os itens do menu$

NN

Chec5*o.7enu1tem
c uma variao dos tipos de menu# aonde o usu/rio seleciona uma das opZes e esta opo selecionada !ica marcada com U ui ueT$

Po"u"7enu
c um tipo de menu acionado a partir de ual uer posio na tela$

Controlando ,s"ectos Visuais

Colors
62istem dois mtodos para controlar as cores: k <et&oreground,k <et7ac)ground,&onts c utili0ado para controlar os tipos de !ontes$

Printing
&rame ! @ neW &rame,U*rint testT$$$

NA

4,erc"cio
62erccio 01 import %ava$aWt$*; import %ava$aWt$event$*; class *rog0^01 e2tends &rame implements ;ction_istener= _ist lst @ neW _ist,N#!alse-; public *rog0^01,= set_a4out,neW &loW_a4out,--; lst$add,BaB-; lst$add,BbB-; lst$add,BcB-; lst$add,BdB-; lst$add,BeB-; lst$add,B!B-; lst$add;ction_istener,t8is-; add,lst-; set<i0e,G00#G00-; s8oW,-; D public void action*er!ormed,;ction6vent e= i! ,e$get<ource,-$e uals,lst-<4stem$out$println,lst$get<elected5tem,--; D public static void main ,<tring arg >?= neW *rog0^01,-; D D 62erccio 0E import %ava$aWt$*; import %ava$aWt$event$*; class *rog0^0E e2tends &rame implements ;ction_istener= 7utton a @ neW 7utton,-; <tring vet>?; _ist lst @ neW _ist,N#true-;

NM

public *rog0^0E,= set_a4out,neW &loW_a4out,--; lst$add,BaB-; lst$add,BbB-; lst$add,BcB-; lst$add,BdB-; lst$add,BeB-; lst$add,B!B-; a$add;ction_istener,t8is-; add,lst-; add,a-; set<i0e,G00#G00-; s8oW,-; D public void action*er!ormed,;ction6vent e= i! ,e$get<ource,-$e uals,a-vet@lst$get<elected5tems,-; !or ,int i@0; i ` vet$lengt8;i""= <4stem$out$println,vet>i?-; D D public static void main ,<tring arg >?= neW *rog0^0E,-; D D 62erccio 0G import %ava$aWt$*; import %ava$aWt$event$*; class *rog0^0G e2tends &rame implements hindoW_istener = *rog0^0G,= addhindoW_istener,t8is-; set<i0e,G00#G00-; set'isible,true-; D public void WindoW;ctivated,hindoW6vent e= D public void WindoWClosed,hindoW6vent eNY

= D public void WindoWClosing,hindoW6vent e= <4stem$e2it,0-; D public void WindoW3eactivated,hindoW6vent e= D public void WindoW3eiconi!ied,hindoW6vent e= D public void WindoW5coni!ied,hindoW6vent e= D public void WindoWOpened,hindoW6vent e= D static public void main,<tring agr>?= neW *rog0^0G,-; D D 62erccio 0N import %ava$aWt$*; class *rog0^0N = public static void main ,<tring >? arg= &rame ! @ neW &rame,-; 7utton b1 @ neW 7utton,-; 7utton bE @ neW 7utton,-; 7utton bG @ neW 7utton,-; 7utton bN @ neW 7utton,-; !$set_a4out,neW &loW_a4out,--; !$add,b1-; !$add,bE-; !$add,bG-; !$add,bN-; !$set<i0e,E00#E00-; !$set'isible,true-; D D 62erccio 0A import %ava$aWt$*; import %ava$aWt$event$*;
NX

class *rog0^0A e2tends &rame implements ;ction_istener= Cenu7ar mb @ neW Cenu7ar,-; Cenu m1 @ neW Cenu,B&ileB-; Cenu mE @ neW Cenu,B6ditB-; Cenu mG @ neW Cenu,BSelpB-; Cenu5tem mi11 @ neW Cenu5tem,B<aveB-; Cenu5tem mi1E @ neW Cenu5tem,BOpenB-; Cenu5tem mi1G @ neW Cenu5tem,B62itB-; public *rog0^0A,= set_a4out,neW &loW_a4out,--; m1$add,mi11-; m1$add,mi1E-; m1$add<eparator,-; m1$add,mi1G-; mb$add,m1-; mb$add,mE-; mb$add,mG-; mi11$add;ction_istener,t8is-; mi1E$add;ction_istener,t8is-; mi1G$add;ction_istener,t8is-; setCenu7ar,mb-; set<i0e,G00#G00-; s8oW,-; D public void action*er!ormed,;ction6vent e= i! ,e$get<ource,-$e uals,mi11-= <4stem$out$println,B5ten <elecionado: mi11 B -; D D public static void main ,<tring arg >?= neW *rog0^0A,-; D D

N^

Captulo 10

' 8ue 9 um ,""let:


Um applet um pedao de c+digo de Java ue corre em um ambiente de broWser$ 3i!ere de uma aplicao do modo ue e2ecutado$ Uma aplicao comeada uando seu mtodo main,- c8amado$ ;travs de contraste# o ciclo de vida de um applet um pouco mais comple2o$ 6ste m+dulo e2amina como um applet corrido# como carregar isto no broWser# e como escrever o c+digo para um applet$ Carregando um 0%%let 'ocH tem ue criar um ar uivo de S9C_ ue conta para o broWser o ue carregar e como correr isto$ 'ocH ento BapontaB o broWser ao Ue_ ue especi!ica a uele ar uivo de S9C_$

<egurana e eestriZes nos ;pplet


62istem <eguranas e eestriZes nos ;pplets por ue applets so pedaos de c+digo ue so carregados em cima de arames# eles representam um prospecto perigoso; imagine se algum escrever um programa malicioso ue lH seu ar uivo de contra(sen8a e envia isto em cima da 5nternetR O modo ue Java previne isto est/ contido na classe de <ecurit4Canager ue controla acesso para uase toda c8amada de sistema(nvel no Java C/ uina 'irtual ,J3j-$ *ortanto ;pplets no !a0 c8amadas ao seu sistema operacional$

Ctodos de ;pplet c8aves


6m uma aplicao# no programa entrado ao mtodo main,-$ 6m um applet# porm# este no o caso$ O primeiro c+digo ue um applet e2ecuta o c+digo de!inido para sua iniciali0ao# e seu construtor$ 3epois ue o construtor completado# o broWser c8ama um mtodo no applet c8amado init ,-$ O mtodo init ,- e2ecutar iniciali0ao b/sica do applet $ 3epois de init ,- completado# o broWser c8ama outro mtodo c8amado start ,-$

A0

;pplet 3ispla4
'ocH pode pu2ar sobre a e2ibio de um applet criando um mtodo paint,-$ O mtodo paint,- c8amado pelo ambiente de broWser sempre ue a e2ibio do applet precise ser re!rescado$ *or e2emplo# isto acontece uando a %anela de broWser aparecida depois de ser minimi0ado$

4,erc"cio
62erccio 01 import %ava$aWt$*; import %ava$applet$*; public class *rog1001 e2tends ;pplet = public void init,= <4stem$out$println,B62ecutando o 5nitB-; D public void start,= <4stem$out$println,B62ecutando o <tarB-; D public void stop,= <4stem$out$println,B62ecutando o <topB-; D public void destro4,= <4stem$out$println,B62ecutando o destro4B-; D D 62erccio 0E import %ava$aWt$event$*; import %ava$aWt$*; import %ava$applet$*; public class *rog100E e2tends ;pplet implements eunnable#;ction_istener = 9e2t&ield b1#bE; <tring 2; 98read );

A1

public void init,= set_a4out,neW &loW_a4out,--; b1 @ neW 9e2t&ield,10-; bE @ neW 9e2t&ield,10-; b1$add;ction_istener,t8is-; bE$add;ction_istener,t8is-; add,b1-; add,bE-; ) @ neW 98read,t8is-; )$start,-; D public void paint,:rap8ics g= i! , 2 g@ nullg$draW<tring,2#A0#A0-; D public void run,= int cont @ 0; W8ile,true= cont @ cont " 1; b1$set9e2t,BB"cont-;D D public void stop,= )$stop,-; D public void start,= )$resume,-; D public void action*er!ormed,;ction6vent e= 2 @ bE$get9e2t,-; repaint,-; D
AE

AG

Captulo 11

AN

4,erc"cio
import %ava$util$*; public class *rog1101 e2tends 'ector = public *rog1101,= super,1#1-; D public void add5nt,int i= add6lement,neW 5nteger,i--; D public void add&loat,!loat != add6lement,neW &loat,!--; D public void add<tring,<tring s= add6lement,s-; D public void addC8ar;rra4,c8ar a >?= add6lement,a-; D public void print'ector,= Ob%ect o; int lengt8 @ si0e,-; <4stem$out$println,B.umero de elementos do vetor B " lengt8 " B e eles sao: B-; !or ,int i @ 0; i ` lengt8; i""= o @ element;t,i-; i! ,o instanceo! c8ar >?= <4stem$out$println,<tring$cop4'alueO!,,c8ar>?- o--; D else <4stem$out$println,o$to<tring,--; D D public static void main,<tring args >?= *rog1101 v @ neW *rog1101,-; int digit @ A;

AA

!loat real @ G$1N!; c8ar letters>? @ =lal# lbl# lcl# ldlD; <tring s @ neW <tring,BSi t8ereB-; v$add5nt,digit-; v$add&loat,real-; v$add<tring,s-; v$addC8ar;rra4,letters-; v$print'ector,-; D D

AM

Captulo 1E Q 9rabal8ando com <e uHncia de 6ntrada e <ada de ar uivos


/errame +undamento Um !lu2o ou uma !onte de b4tes ou um destino para b4tes$ ; ordem signi!icante$ *or e2emplo# um programa ueira ler de um teclado pode usar um !lu2o# a ordem de entrada dos dados ser/ a ordem do !lu2o$ &ntrodu*a 2todo de +lu,o 6stes trHs mtodos provHem acesso para os dados do tubo$ O mtodo lido simples devolve um tipo int ue ou contm um b4te lido do !lu2o ou (1 ue indica o !im de condio de ar uivo$ 2todo do +lu,o de %roduo 6stes mtodos escrevem ao !lu2o de produo$ Como com a entrada# vocH tentar escrever dados no bloco pr/tico maior$ close ,3everiam ser !ec8ados !lu2os de produo uando vocH terminou com eles$ .ovamente# se vocH tem uma pil8a e !ec8a o topo um# isto !ec8a o resto dos !lu2os$ !lus8 ,O leitore e 4 critore Unicode Java usa Unicode por representar !ios e caracters# e a verso 1M bits provH pedao de !lu2os para permitir tratar car/ter similares$ 6sta verso c8amada de os leitores e escritoras# e como com !lu2os# uma variedade deles est/ disponvel no pacote %ava$io$ 74te e ConversZes de Car/ter ;travs de !alta# se vocH constr+i um leitor simplesmente ou o escritor conectou a um !lu2o# ento as regras de converso mudaro entre b4tes ue usam o car/ter de plata!orma de !alta ue codi!ica e Unicode$ O _eitor de 7u!!ered e 6scritor *or ue convertendo entre !ormatos como outras operaZes de 5IO# e!ica0mente e2ecutadas em pedaos grossos grandes# ue geralmente uma idia boa para encadear um 7u!!eredeeader ou 7u!!eredhriter sobre o !im de um 5nput<treameeader ou 5nput<treamhrite$

AY

0rquivo ;ntes de vocH uerer e2ecutar operaZes de 5IO em um ar uivo# vocH tem ue obter in!ormao b/sica sobre a uele ar uivo$ ; classe de ;r uivo provH v/rias utilidades para lidar com ar uivos e obter in!ormao b/sica sobre estes ar uivos$

AX

4,erc"cio
62erccio 01 import %ava$io$*; class *rog1E01 = public static void main,<tring arg>?- t8roWs 5O62ception = int b; int count@0; W8ile, ,b @ <4stem$in$read,-- g@ ,int-lFnl= count""; <4stem$out$println, ,c8ar- b-;D <4stem$out$println,Bcontagem @ B " count-; D D 62erccio 0E import %ava$io$*; class *rog1E0E = public static void main,<tring arg>?= int b @ ,int-l&l ; <4stem$out$Write,b-; <4stem$out$!lus8,-; D D 62erccio 0G import %ava$io$*; class *rog1E0G = public static void main,<tring ar>?- t8roWs 5O62ception = <tring 2 @ BCurso de JavaB; b4te>? a @ neW b4te>10?; 2$get74tes,0#Y#a#0-; <4stem$out$Write,a-; D D

A^

62erccio 0N import %ava$io$*; class *rog1E0N = public static void main,<tring ar>?- t8roWs 5O62ception =int car; &ile5nput<tream ar ; tr4= ar @ neW &ile5nput<tream,Bteste$t2tB-; W8ile, ,car @ ar $read,- - g@(1 <4stem$out$Write,car-; D catc8,&ile.ot&ound62ception e- = <4stem$out$println,Bnao e2isteB-; D D D 62erccio 0A import %ava$io$*; class *rog1E0A = public static void main,<tring ar>?- t8roWs 5O62ception = int car; &ileOutput<tream ar ; tr4= ar @ neW &ileOutput<tream,Bteste1$t2tB-; W8ile, ,car @ <4stem$in$read,-- g@ (1ar $Write,car-; ar $!lus8, -; D catc8,&ile.ot&ound62ception e- = <4stem$out$println,Bnao e2isteB-;D D D 62erccio 0M import %ava$io$*; class *rog1E0M = public static void main,<tring arg>?- t8roWs 5O62ception = &ileOutput<tream ar 1 @ neW &ileOutput<tream,B61$t2tB-; &ileOutput<tream ar E @ neW &ileOutput<tream,B6E$t2tB-; 3ataOutput<tream d1 @ neW 3ataOutput<tream,ar 1-; 3ataOutput<tream dE @ neW 3ataOutput<tream,ar E-; d1$Write74te,,int- lal-; d1$Write74te,,int- lal-; d1$Write74te,,int- lal-; dE$WriteC8ar,,int- lal-; dE$WriteC8ar,,int- lal-;
M0

dE$WriteC8ar,,int- lal-; D D 62erccio 0Y import %ava$io$*; class *rog1E0Y = public static void main,<tring arg>?- t8roWs 5O62ception = &ileOutput<tream ar 1 @ neW &ileOutput<tream,Bdado$binB-; 3ataOutput<tream d1 @ neW 3ataOutput<tream,ar 1-; d1$Write5nt,10-; d1$Write5nt,E0-; d1$Write5nt,GNA-; &ile5nput<tream ar E @ neW &ile5nput<tream,Bdado$binB-; 3ata5nput<tream dE @ neW 3ata5nput<tream,ar E-; tr4= W8ile,true- <4stem$out$println,dE$read5nt,--;D catc8,6O&62ception e- = <4stem$out$println,Bacabou o ar uivoB-;D D D 62erccio 0X import %ava$io$*; class *rog1E0X = public static void main,<tring arg>?- t8roWs 5O62ception = <tring str @ B;7C36&B; &ileOutput<tream ar 1 @ neW &ileOutput<tream,Bsaida1B-; 3ataOutput<tream d1 @ neW 3ataOutput<tream,ar 1-; &ileOutput<tream ar E @ neW &ileOutput<tream,BsaidaEB-; 3ataOutput<tream dE @ neW 3ataOutput<tream,ar E-; d1$Write74tes,str-; dE$WriteC8ars,str-; D D

M1

Captulo 1G

ME

Captulo 1G Q 98reads ,_in8as(.read e (.reading no Java ' 8ue s$o Linhas: Uma viso simplista de um computador a ue tem uma C*U ue manipula os dados# uma mem+ria eOC ue contm o programa ue o C*U e2ecuta# e e;C ue segura os dados nos uais o programa opera$ .esta viso simples# um trabal8o e2ecutado de cada ve0$ (.read e t.read %ara re'erenciar a ideia de e,ecuo$ Tr;s Partes de uma Linha Uma lin8a inclui trHs partes principais$ *rimeiro# 8/ o C*U virtual$ <egundo# 8/ o c+digo ue esta C*U est/ e2ecutando$ 9erceiro# 8/ os dados no ue o c+digo trabal8a$ Criando a Linha 3emos uma ol8ada no modo ue uma lin8a criada# e discuta como os argumentos de construo so usados para prover o c+digo e dados para a lin8a uando corre$ Come#ando a Linha 6mbora n+s criamos a lin8a# no comea correndo imediatamente$ *ara comear isto# n+s usamos o mtodo start , -$ 6ste mtodo est/ na classe de _in8a# to determinado nosso esboo prvio ue n+s simplesmente di0emos$ Thread /heduling 6mbora a lin8a se torna runnable# necessariamente no comea imediatamente$ Claramente em uma m/ uina ue de !ato tem s+ uma C*U# pode estar !a0endo s+ uma coisa de cada ve0$ Testando uma Linha ms ve0es possvel para uma lin8a estar em um estado descon8ecido$ c possvel in uirir se uma lin8a ainda vi/vel atravs do mtodo is;live , -$ Pondo Linhas em Ca*o <Putting Threads on =old> '/rios mecanismos e2istem ue podem parar a e2ecuo de uma lin8a temporariamente$ <eguindo este tipo de suspenso# e2ecuo pode ser retomada como se nada tivesse interrompido sua e2ecuo# a lin8a aparece ter e2ecutado uma instruo muito lentamente simplesmente$

MG

O mtodo sleep !oi introdu0ido na primeira seo e !oi usado para deter uma lin8a para um perodo de tempo$ ms ve0es apropriado suspender e2ecuo de uma lin8a inde!inidamente em ual caso alguma outra lin8a ser/ respons/vel para retomar a e2ecuo$ Um par de mtodos de _in8a est/ disponvel para isto$ 6les so c8amados suspend ,- e resume ,-$ O mtodo %oin , - causa a lin8a atual para esperar at a lin8a em ual o mtodo %oin c8amado termina$ 'utros modos "ara criar linhas .+s discutimos criando _in8a por uso de uma classe separada eunnable$ 3e !ato# esta no a Lnica possvel apro2imao$ ?sando sincroni0aram em Java ' Pro*lema 5magine uma classe ue representa uma pil8a$ ;dvertHncia ue a classe no !a0 nen8um es!oro para dirigir transbordamento ou under!loW da pil8a# e ue a capacidade de pil8a est/ bastante limitada$ 6stes aspectos no so pertinentes a nossa discusso$ , Bandeira de !echadura de '*jeto <The '*ject Loc5 !lag> 6m Java# toda inst1ncia de ual uer ob%eto tem um !lag ,bandeira- associado com isto$ 6sta bandeira pode ser pensada de como uma B bandeira B de !ec8adura$ Um palavra sincroni0ado provido para permitir interao com esta bandeira$ Reunindo isto Como !oi sugerido# o mecanismo sincroni0ador ,- s+ trabal8a se o programador pZe as c8amadas nos lugares corretos$ Paralisa#$o com"leta 6m programas onde lin8as mLltiplas esto competindo para acesso a recursos mLltiplos# pode 8aver uma possibilidade de uma condio con8ecida como paralisao completa$ 5sto acontece uando uma lin8a est/ esperando por uma !ec8adura segurada por outra lin8a# mas a outra lin8a %/ est/ esperando por uma !ec8adura segurada pela primeira lin8a$ ue implementa

MN

4n'ie &nterao ((.read &nteraction> ' Pro*lema *or ue duas lin8as poderiam precisar interagirR , /olu#$o 9oda inst1ncia de ob%eto em Java tem duas tranas de lin8a associadas com isto$ O primeiro usado por lin8as ue uerem obter a bandeira de !ec8adura# e !oi discutido na seo$ ; segunda trana usada para implementar os mecanismos de comunicao de Wait ,- e noti!4 ,-$

MA

4,erc"cio 62erccio 01 class *rog1 e2tends 98read = int a @ 0; public void run,-= !or,int r@0;r`Y;r""= a @ a"1; <4stem$out$println,get.ame,-"B D D class *rogE e2tends 98read = int b @ 0; public void run,-= !or,int r@0;r`Y;r""= b @ b"1; <4stem$out$println,get.ame,-"B D D

B"a-;D

B"b-;D

class *rog1G01 = public static void main,<tring arg>?= *rog1 2 @ neW *rog1,-; *rogE 4 @ neW *rogE,-; 2$set.ame,B*auloB-; 4$set.ame,BCarioB-; 2$start,-; 4$start,-; !or ,int i @0; i`G; i""<4stem$out$println,Be2ecutando o CainB-; I*tr4=2$%oin,-; 4$%oin,-;D catc8,5nterrupted62ception e-=D *I D D 62erccio 0E class *rogG e2tends 98read = public void run,= int a @ 0; !or,int r@0;r`Y;r""= a @ a"1; <4stem$out$println,get.ame,-"B D D D

B" a-;

class *rog1G0E = public static void main,<tring arg>?MM

= *rogG 2 @ neW *rogG,-; *rogG 4 @ neW *rogG,-; 2$set.ame,B*auloB-; 4$set.ame,BCarioB-; 2$start,-; 4$start,-; tr4= 2$%oin,-; 4$%oin,-;D catc8,5nterrupted62ception e-=D D D

MY

Captulo 1N Q Java com eede 5ede com Java /oc5ets <oc)ets o nome de um modelo de programao particular# para o vnculo de comunicao entre processos$ *or causa da popularidade deste modelo de programa# o nome soc)et !oi usada de novo em outras /reas inclusive Java$ 7ontando a Cone.$o *ara montar a cone2o# uma m/ uina tem ue estar correndo um programa ue est/ esperando por uma cone2o# e o outro !im tem ue tentar alcanar o primeiro$ 5sto semel8ante a um sistema de tele!one; uma !esta tem ue !a0er a ligao de !ato# en uanto a outra !esta tem ue estar esperando pelo tele!one uando a uela ligao !eita$ -nviando a Cone.$o [uando !a0emos um tele!one c8amar# nos precisamos saber o nLmero de tele!one para discar$ [uando !a0emos uma cone2o de cadeia# nos precisamos saber o endereo ou o nome da m/ uina distante$ +%meros de "orto .Lmeros de porto em sistemas de 9C*I5* so 1M nLmeros de pedao e esto no alcance 0(MAAGA$ 6m pr/tica# nLmero de porto debai2o de 10EN reservado para servios prede!inidos# e vocH no os deveria usar a menos ue vocH dese%e comunicar com um desses servios$ ' 7odelo de Rede no Java .o idioma de Java# so implementadas cone2Zes 9C*I5* com classes no %ava$pacote l uido$ /oc5ets de ?(P Onde 9C*I5* um protocolo cone2o(orientado# o Usu/rio *rotocolo de 3atagram um protocolo de Bconnectionless B$ Contudo# um modo simples e elegante para pensar nas di!erenas entre estes dois protocolos a di!erena entre o tele!one c8amada e correio postal$ (atagramPac5et 3atagram*ac)et tem dois constructors: um para dados receptores e o outro por enviar dados$

MX

Você também pode gostar