Java Apostila

Published on July 2016 | Categories: Documents | Downloads: 46 | Comments: 0 | Views: 362
of 68
Download PDF   Embed   Report

Comments

Content

Capítulo 01 O que é o O Java é: * Uma liguagem de programação; * Um ambiente de desenvolvimento; * Um ambiente de aplicação; O Java é resultado de uma busca por uma linguagem de programação ue pudesse !ornecer uma ligação com o C""# mas com segurança$ Os primeiros ob%etivos alcançados com desenvolvimento desta nova linguagem !oram: * Criação 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 nível do sistema operacional$ , *ode rodar em ual uer tipo de sistema operacional-; * .ão tem acesso a ponteiros do sistema operacional; * &ornece dinamismo durante a manutenção de programas; Garbage Collection (Libera uma coleção) O Java não segura /reas de mem+ria ue não estão sendo utili0adas# isto por ue ele tem uma alocação din1mica de mem+ria em tempo de e2ecução$ .o C e C"" ,e em outras linguagens- o programa desenvolvido é respons/vel pela alocação e desalocação da mem+ria$ 3urante o ciclo de e2ecução do programa o Java veri!ica se as vari/veis de mem+ria estão sendo utili0adas# caso não este%am o Java libera automaticamente esta /rea ue não esta sendo utili0ada$ Java ?

1

Segurança no Código Os ar uivos do Java são compilados e são convertidos de ar uivos te2to para um !ormato ue contém blocos independentes de b4tes codes ,C+digo 5ntermedi/rio-$ 6m tempo de e2ecução estes b4tes codes são carregados# são veri!icados através do 74te Code 'eri!ier ,uma espécie de segurança-# passam asseguir para o interpretador e são e2ecutados$ Caso este c+digo se%a acionado diversas ve0es# e2iste um passo c8amado J59 Code :enerator# ue elimina o utili0ação 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:

E

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

G

Capítulo 0E Comentário 6stes são os trHs tipos permitidos de coméntarios nos programas !eitos em Java: II coment/rio de uma lin8a I* coment/rio de uma ou mais lin8as *I I** coment/rio de documentação *I ,;r uivos de documentação!onto e v"rgula# $loco e o e %aço em branco * .o %ava# os comandos são terminados com o sinal de ponto e vírgula ,;* Um bloco tem iníco e tem o seu !im representados pelo uso das c8aves =D; * O uso do espaço em branco permite uma mel8or visuali0ação dos comandos e em conse uencia !acilita a sua manutenção$ &denti'icadore .a linguagem Java um identi!icador é startado com uma letra# undersco , J -# ou sinal de d+lar ,K-# e e2iste uma di!erenciação 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 Lógico ( boolean: on e o!!; true e !alse ou 4es e no$ Tipo Textual ( c8ar e <tring

Um caracter simples usa a representação 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 tabulação OFFP ( F OFT TP ( UT

ual é representado na !orma

O tipo <tring# como não é 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 6spaço (EY $ $ $ $ EY ( 1 (E1A $ $ $ $ E1A ( 1 (EG1 $ $ $ $ EG1 ( 1 (EMG $ $ $ $ EMG ( 1

A

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 Convenção de Código 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 métodos 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 espaços para identaçZes; Co&ent#rios ( Use os coment/rios para e2plicar os segmentos de c+digo ue não são 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$

M

$xerc'cios( 62ercício 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 62ercício 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

Y

Capítulo 0G )ariávei e (em%o de vida 'ocH tem dois meios para descrever vari/veis: usando o tipo simples de ligação int e float ou usando tipos de classes de!inidas pelo programa$ 'ocH pode declarar vari/veis de duas !ormas# uma dentro de um método e a outra dentro da classe a ual este método est/ incluído$ &niciali*ação de variávei .o Java não é permitido o uso de vari/veis inde!inidas$ 'ari/veis de!inidas dentro do método são 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 são iniciali0adas com os seguintes valores em tempo de alocação: Valor inicial 0 !alse Tamanho X bits

Ti"o de vari&vel
b4te

7oolean O%eradore .o Java os operadores são 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;

X

""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!erença 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

]]

Concatenação
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 não suporta conversZes arbitr/rias de tipos de vari/veis$ 'ocH deve e2plicitar a conversão entre tipos de vari/veis$ 62emplo: long bigval @ M; II Operação v/lida int smallval @ ^^_; II Operação inv/lida por ue são de tipos di!erentes !loat 0 @ 1E$N1N&; !loat 0p @ 1E$N1N; Convertendo _ong big'alue @ ^^_; 5nt s uas8ed @ ,int-,big'alue-; II Operação v/lida II Operação inv/lida por ue esta tentando atribuir um valor double$

Controle de +lu,o 3eclaraçZes de &lu2os
&'# el e i! ,e2pressãoII e2pressão cu%o retorno é um valor do tipo boolean = 3eclaraçZes ou blocos D else II caso a condição anterior não se%a satis!eita = 3eclaraçZes ou blocos D -itc. sWitc8 ,e2pressão- II 6sta e2pressão deve ser do tipo int ou c8ar = case cond01: declaraçZes; brea); II usado para sair do case$ case cond0E: declaraçZes; brea); case cond0G: declaraçZes;
10

brea); D 'or Loo% !or ,e2prJinicial; condiçãoJboolean; incremento= 3eclaraçZes ou blocos; D W.ile Loo% W8ile,condiçãoJboolean= 3eclaraçZes ou blocos; D do Loo% do = 3eclaraçZes ou blocos; D W8ile,condiçãoJboolean-;

11

$xerc'cios

62ercício 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

62ercício 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

62ercício 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 Opção ,'alor igual a 0ero-B-; brea); case 1: <4stem$out$println,B<egunda Opção ,'alor igual a um-B-; brea); de!ault: <4stem$out$println,BOutras OpçZes ,'alor maior ue um-B-; brea); D D D

62ercício 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

Capítulo 0N

( ;rra4s

/eclaração 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 não 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

Capítulo 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 tração de (i%o de /ado [uando itens de dados são compostos para tipos de dados# semel8ante a uma data# vocH pode de!inir um nLmero de bits de programas ue especi!ica a operação do tipo de dados$ 6m Java vocH pode criar uma associação entre o tipo data e a operação 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'inição de 2étodo 6m Java# métodos são de!inidoss usando uma apro2imação ue é muito similar b usada em outras linguagens# como por e2emplo C e C""$ ; declaração é !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!icaçZes incluíndo public# protected e private$ ` tipo de retorno \ (\ indica o tipo de retorno do método$ ` nome \ (\ nome ue identi!ica o método$ ` lista de argumentos \ (\ todos os valores ue serão 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 método c8amado$ [uando um ob%eto é criado# é passado um argumento para o método e o valor deste argumento é uma re!erHncia do ob%eto$ O conteLdo do ob%eto passível de alteração é c8amado do método# mas o ob%eto re!erenciado %amais é alterado$ 0 5e'er6ncia (.i c aplicado a métodos não est/ticos$ O Java associa automaticamente a todas as vari/veis e métodos 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 método 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 declaração de da4# mont8 e 4ear na classe 3ate# vocH impossibilitar/ o acesso a estes membros de um c+digo !ora desta classe$ 'ocH não ter/ permissão para atribuir valores# mas poder/ comparar valores$
1X

4nca% ulamento c uma proteção adicional dos dados do ob%eto de possíveis modi!icaçZes impr+prias# !orçando o acesso a um nível mais bai2o para tratamento do dados$ Sobre crevendo 2étodo O Java permite ue vocH ten8a métodos com o mesmo nome# mas com assinaturas di!erentes$ 5sto permite a reusabilidade dos nomes dos métodos$ public void print, int i public void print, !loat ! public void print, <tring s[uando vocH escreve um c+digo para c8amar um desses método# o método a ser c8amado ser/ o ue coincidir com tipos de dados da lista de par1metros$ Con trutore O mecanismo de iniciali0ação do Java é autom/tico# ou se%a se não inciali0armos um construtor# o Java o iniciali0ar/ automaticamente$ Cas e2istem casos ue se !a0 necess/rio a declaração e2plicita dos construtores$ *ara escrever um método ue c8ama um construtor# vocH deve seguir duas regras: 1d O nome do método precisa ser igual ao nome da classe$ Ed .ão deve retornar um tipo declarado para o método$ Subcla e (5elacionada ) .a classe *ai vocH deve declarar os ob%etos comun a todos# e nos sub(níveis ,<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^

D

Subcla e (4,ten 7e ) 6m linguagens de orientação a ob%etos# um mecanismo especial é !ornecido para ue permita ao programa de!ina classes e termos previstas na de!inição 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 8erança Sim%le 6m Java não e2iste 8erança mLltipla$ 6m Java os Construtores não são 8erdados$ Java permite ue uma classe e2tenda uma outra classe# com isso esta classe 8erda as características da outra classe$ !olimor'i mo ; idéia de polimor!ismo é a de muitas !ormas# onde eu posso utili0ar uma classe de diversas maneiras e !ormas possíveis$

E0

public class 6mplo4ee e2tends Ob%ect and public class Canager e2tends 6mplo4ee 0rgumento de 2étodo e Coleç7e 8eterogenea Usando esta apro2imação vocH pode escrever métodos ue aceitam um ob%eto genérico$ O uso do polimor!ismo !ornece uma série de !acilidades$ public 9a2eate !ind9a2eate, 6mplo4ee e- = Canager m @ neW Canager, -; $$$$$$$ 9a2eate t @ !ind9a2eate,m-; 5sto é possível por ue um :erente é um empregado$ Uma coleção 8eterogHnea é uma coleção de coisas di!erentes$ 6m linguagem orientada a ob%etos# vocH pode criar uma coleção 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 método de tipos ue pZe empregados ordenados por idade ou em ordem salarial sem ter ue se preocupar com a ordem de inserção$ O O%erador in tanceo' &ornece o dado ue vocH ad uiriu através da passagem de par1metros$ Caso vocH receba um ob%ect por re!erHncia do tipo 6mplo4ee# esta re!erHncia poderia não 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 Lançado 6m circunst1ncias onde vocH recebeu uma re!erHncia para uma classe pai# e vocH determinou ue o ob%eto é de !ato uma subdivisão de classe particular usando o operador de instanceo!# vocH pode restabelecer a !uncionalidade completa do ob%eto lançado$ Sobre3e crevendo 2étodo O Java permite ue vocH declare métodos na classe pai e não desenvolva nen8uma l+gica dentro desses métodos# permitindo com isso ue o desenvolvimento desses métodos ven8a a ser trabal8ados dentro das sub(classes posteriores$ Class &uncionario, ler, Class Cotorista, ler , <uper$ler, (\ ee!erencia o método da classe pai

Com%arando Java com outra Linguagen 6m C"" vocH pode ad uirir este comportamento# desde ue vocH mar ue o método 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$ 9ão longe# todos nossos e2emplos pertencem b !alta ou pacotes não mencionados$

EE

; f

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

0 declaração im%ort 6m Java# uando vocH uer usar instalaçZes de pacotes# vocH usa a declaração de importação para contar para o compilador onde ac8ar as classe ue vocH vai usar$ ; declaração de importação ,import- deve preceder a declaração 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

Capítulo 0M (

62ception na _inguagem Java

O que é uma 4,ce%tion ? 6m Java# a classe de 62ceção de!ine condiçZes 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 e2ceçZes e continuar a e2ecução do programa$ ; linguagem Java implementa C"" nomeando e2ceçZes 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 e2ceção$ 3ispara uma e2ceção é o processo de sinali0ar o processo corrente atual de ue um erro aconteceu$ 'ocH enlata a captura da e2ceção e uando possível recupera a condução das pr+2imas rotinas$ 2ani%ulação de 4,ce%tion 3eclaraçZes tr4 e catc8 Uma maneira de manipular possíveis erros# é usando as declaraçZes tr4 e catc8$ ; declaração 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 declaração 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 3eclaração !inall4 ; declaração !inall4 é utili0ada para de!inir o bloco ue ir/ ser e2ecutado tendo ou não uma e2ception# isto ap+s o uso da declaração 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 não !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 não e2iste$ Categoria de 4,ce%tion S/ trHs grandes categorias de e2ceçZes 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 sério de recuperação di!ícil# se não impossível; * euntime62ception ( problema ocorrido durante a implementação; * Outra e2ceção ( indica uma di!iculdade durante a implementação ue pode acontecer ra0oavelmente por causa de e!eitos ambientais e pode se manipulado$ /eclare ou 2ani%ule a ua 4,ce%tion .a construção de um c+digo em Java# o programador deve prever métodos para tratar possíveis erros$ 62istem duas maneiras de o programador satis!a0er esta e2igHncia$ ; primeira é com o uso da declaração tr4 e catc8# como !oi visto anteriormente# e a segunda maneira é indicando ue a e2ceção não é dirigida para este método# sendo então %ogado para o método 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

Capítulo 0Y (

Construindo :uis no Java

O !acote 9ava:a-t .o pacote %ava$aWt contém as classes para a geração de componentes :ui$ Os componentes :ui geralmente são de aspectos visíveis# como butZes ou labels$ !o ição do com%onente ; posição dos componentes no container é determinado pelo gerente de la4out$ O taman8o dos componentes é também de responsabilidade do gerente de la4out$ O método main() c respons/vel pela criação da inst1ncia de ob%etos e pela iniciali0ação do método go,-$ O ne- +rame Cria uma inst1ncia da classe %ava$aWt$&rame$ O &rame no %ava é o nível mais alto da %anela# aonde !icam por e2emplo o barra de títulos$ 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 botão é o local na %anela aonde é empurrado para ue se ten8a uma ação$

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

6ste método torna os elementos visíveis 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 é começada$ 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 armação aonde são inseridos diversos elementos como: botZes# labels# etc$ !anel <ão recipientes aonde são inseridos diversos elementos como: botZes# labels# etc$

E^

4,erc"cio 62ercíco 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 62ercício 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 62ercício 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 título *rog0Y0G W @ neW *rog0Y0G,BJanela do *rog0Y0G B-; W$set<i0e,E00#E00-; W$set'isible,true-; D D

G1

Capítulo 0Y O !acote 9ava:a-t .o pacote %ava$aWt contém as classes para a geração de componentes :ui$ Os componentes :ui geralmente são de aspectos visíveis# como butZes ou labels$ !o ição do com%onente ; posição dos componentes no container é determinado pelo gerente de la4out$ O taman8o dos componentes é também de responsabilidade do gerente de la4out$ O método main() c respons/vel pela criação da inst1ncia de ob%etos e pela iniciali0ação do método go,-$ ne- +rame Cria uma inst1ncia da classe %ava$aWt$&rame$ O &rame no %ava é o nível mais alto da %anela# aonde !icam por e2emplo o barra de títulos$ 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 botão é o local na %anela aonde é empurrado para ue se ten8a uma ação$ add() cste método adiciona elementos ,butZes# cai2as de te2to# etc$- ao !rame$ %ac;() 6ste método !i2a o taman8o dos elementos no !rame$

GE

et)i ible() 6ste método torna os elementos visíveis 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 é começada$ $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 armação aonde são inseridos diversos elementos como: botZes# labels# etc$ !anel <ão recipientes aonde são inseridos diversos elementos como: botZes# labels# etc$

GG

4,erc"cio
62ercício 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 62ercício 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 62ercício 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

Capítulo 0X O que é um evento? [uando o usu/rio e2ecuta uma ação b inter!ace de usu/rio# isto causa um evento a ser emitido$ 6ventos são ob%etos ue descrevem o ue aconteceu$ '/rios tipos di!erentes de classes de evento e2istem para descrever categorias gerais di!erentes de ação de usu/rio$ +onte de evento Uma !onte de evento ,ao nível de inter!ace de usu/rio- é o resultado de alguma ação de usu/rio em um componente de ;h9$ *or e2emplo# um trinco de rato em um componente de botão 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 botão# slider# campo de te2to# e assim por diante$ Um manipulador de evento é um método ue recebe o ob%eto de 6vento de !orma ue o programa pode processar a interação do usu/rio$ Como ão %roce ado 4vento 6ntre J3j 1$0 e J3j 1$1# 8ouve mudanças signi!icantes do modo ue são recebidos eventos e são 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 delegação$ 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 retenção$ 6ventos ue não são dirigidos ao componente continuarão propagando ao recipiente do componente automaticamente$

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

)antagen do 2odelo de delegação * .ão são dirigidos eventos acidentalmente; no modelo de 8ierar uia é possível para um evento propagar a um recipiente e é dirigido a um nível ue não é esperado$ * c possível criar !iltro ,adaptador- de classes para classi!icar açZes de evento$ * O modelo de delegação é muito mel8or para a distribuição de trabal8o entre classes$ * O modelo de evento novo provH apoio por !ei%Zes de Java$ /e vantagen do 2odelo de delegação * c mais comple2o# pelo menos inicialmente# entender$ * ; migração do J3j 1$0 para o J3j 1$1 não é !/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

* eecon8eça 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

5nstalaçZes do ;h9
O ;h9 provH uma variedade larga de instalaçZes 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 opçZes possíveis são UonIo!!T$

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

Choice
O C8oice !ornece uma seleção simples dentro de uma lista de opçZes$

Canvas
Canvas é uma tela de !undo ,papel de parede- aonde irão 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 digitação dentro dele$

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

List
O _ist é um tipo de C8oice# mas ue permite a seleção mLltipla dentro da lista de opçZes$

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 62ercício 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 62ercício 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 62ercício 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

Capítulo 0^

!rame
&rame é uma armação aonde serão inseridos ob%etos$

Panel
*anel é um tipo de container aonde serão inseridos ob%etos$

(ialog
Um 3ialog é semel8ante ao &rame# nisso é uma %anela parada gr/tis com algumas decoraçZes$ .ão são !eitos 3ialog normalmente visível para o usu/rio uando eles são criados primeiro$

!ile(ialog
&ile3ialog é um tipo de implementação ue permite ao usu/rio selecionar pastas dentro de uma lista de opçZes$

/crollPane
<croll*ane são as barras de rolagens de um panel$

7enus
Cenu é uma série de opçZes disponível$ Um !ator importante da criação de menus no Java é a respeito do Selp$ O 8elp pode ser deslocado para !icar o mais a direita possível dos demais itens$ O Cenu7ar é um tipo de menu 8ori0ontal$ O Cenu5tem são os itens do menu$

NN

Chec5*o.7enu1tem
c uma variação dos tipos de menu# aonde o usu/rio seleciona uma das opçZes e esta opção selecionada !ica marcada com U ui ueT$

Po"u"7enu
c um tipo de menu acionado a partir de ual uer posição na tela$

Controlando ,s"ectos Visuais

Colors
62istem dois métodos 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
62ercício 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 62ercício 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 62ercício 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 62ercício 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 62ercício 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^

Capítulo 10

' 8ue 9 um ,""let:
Um applet é um pedaço de c+digo de Java ue corre em um ambiente de broWser$ 3i!ere de uma aplicação do modo ue é e2ecutado$ Uma aplicação é começada uando seu método main,- é c8amado$ ;través 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 então BapontaB o broWser ao Ue_ ue especi!ica a uele ar uivo de S9C_$

<egurança e eestriçZes nos ;pplet
62istem <eguranças e eestriçZes nos ;pplets por ue applets são pedaços de c+digo ue são carregados em cima de arames# eles representam um prospecto perigoso; imagine se alguém 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(nível no Java C/ uina 'irtual ,J3j-$ *ortanto ;pplets não !a0 c8amadas ao seu sistema operacional$

Cétodos de ;pplet c8aves
6m uma aplicação# no programa é entrado ao método main,-$ 6m um applet# porém# este não é o caso$ O primeiro c+digo ue um applet e2ecuta é o c+digo de!inido para sua iniciali0ação# e seu construtor$ 3epois ue o construtor é completado# o broWser c8ama um método no applet c8amado init ,-$ O método init ,- e2ecutar iniciali0ação b/sica do applet $ 3epois de init ,- é completado# o broWser c8ama outro método c8amado start ,-$

A0

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

4,erc"cio
62ercício 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 62ercício 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

D

AG

Capítulo 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

Capítulo 1E Q 9rabal8ando com <e uHncia de 6ntrada e <aída 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 2étodo de +lu,o 6stes trHs métodos provHem acesso para os dados do tubo$ O método lido simples devolve um tipo int ue ou contém um b4te lido do !lu2o ou (1 ue indica o !im de condição de ar uivo$ 2étodo do +lu,o de %rodução 6stes métodos escrevem ao !lu2o de produção$ Como com a entrada# vocH tentar escrever dados no bloco pr/tico maior$ close ,3everiam ser !ec8ados !lu2os de produção 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 versão 1M bits provH pedaço de !lu2os para permitir tratar car/ter similares$ 6sta versão é c8amada de os leitores e escritoras# e como com !lu2os# uma variedade deles est/ disponível no pacote %ava$io$ 74te e ConversZes de Car/ter ;través de !alta# se vocH constr+i um leitor simplesmente ou o escritor conectou a um !lu2o# então as regras de conversão mudarão 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 operaçZes de 5IO# e!ica0mente e2ecutadas em pedaços grossos grandes# ue geralmente é uma idéia 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 operaçZes de 5IO em um ar uivo# vocH tem ue obter in!ormação b/sica sobre a uele ar uivo$ ; classe de ;r uivo provH v/rias utilidades para lidar com ar uivos e obter in!ormação b/sica sobre estes ar uivos$

AX

4,erc"cio
62ercício 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 62ercício 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 62ercício 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^

62ercício 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 62ercício 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 62ercício 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 62ercício 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 62ercício 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

Capítulo 1G

ME

Capítulo 1G Q 98reads ,_in8as(.read e (.reading no Java ' 8ue s$o Linhas: Uma visão simplista de um computador é a ue tem uma C*U ue manipula os dados# uma mem+ria eOC ue contém o programa ue o C*U e2ecuta# e e;C ue segura os dados nos uais o programa opera$ .esta visão simples# um trabal8o é e2ecutado de cada ve0$ (.read e t.read %ara re'erenciar a ideia de e,ecução$ 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 construção são usados para prover o c+digo e dados para a lin8a uando corre$ Come#ando a Linha 6mbora n+s criamos a lin8a# não começa correndo imediatamente$ *ara começar isto# n+s usamos o método start , -$ 6ste método est/ na classe de _in8a# tão determinado nosso esboço prévio ue n+s simplesmente di0emos$ Thread /heduling 6mbora a lin8a se torna runnable# necessariamente não começa 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 é possível para uma lin8a estar em um estado descon8ecido$ c possível in uirir se uma lin8a ainda é vi/vel através do método is;live , -$ Pondo Linhas em Ca*o <Putting Threads on =old> '/rios mecanismos e2istem ue podem parar a e2ecução de uma lin8a temporariamente$ <eguindo este tipo de suspensão# e2ecução pode ser retomada como se nada tivesse interrompido sua e2ecução# a lin8a aparece ter e2ecutado uma instrução muito lentamente simplesmente$

MG

O método sleep !oi introdu0ido na primeira seção e !oi usado para deter uma lin8a para um período de tempo$ ms ve0es é apropriado suspender e2ecução de uma lin8a inde!inidamente em ual caso alguma outra lin8a ser/ respons/vel para retomar a e2ecução$ Um par de métodos de _in8a est/ disponível para isto$ 6les são c8amados suspend ,- e resume ,-$ O método %oin , - causa a lin8a atual para esperar até a lin8a em ual o método %oin é c8amado termina$ 'utros modos "ara criar linhas .+s discutimos criando _in8a por uso de uma classe separada eunnable$ 3e !ato# esta não é a Lnica possível apro2imação$ ?sando sincroni0aram em Java ' Pro*lema 5magine uma classe ue representa uma pil8a$ ;dvertHncia ue a classe não !a0 nen8um es!orço para dirigir transbordamento ou under!loW da pil8a# e ue a capacidade de pil8a est/ bastante limitada$ 6stes aspectos não são pertinentes a nossa discussão$ , 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 interação 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 estão competindo para acesso a recursos mLltiplos# pode 8aver uma possibilidade de uma condição con8ecida como paralisação 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 &nteração ((.read &nteraction> ' Pro*lema *or ue duas lin8as poderiam precisar interagirR , /olu#$o 9oda inst1ncia de ob%eto em Java tem duas tranças de lin8a associadas com isto$ O primeiro é usado por lin8as ue uerem obter a bandeira de !ec8adura# e !oi discutido na seção$ ; segunda trança é usada para implementar os mecanismos de comunicação de Wait ,- e noti!4 ,-$

MA

4,erc"cio 62ercício 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 62ercício 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

Capítulo 1N Q Java com eede 5ede com Java /oc5ets <oc)ets é o nome de um modelo de programação particular# para o vínculo de comunicação 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 cone2ão# uma m/ uina tem ue estar correndo um programa ue est/ esperando por uma cone2ão# e o outro !im tem ue tentar alcançar o primeiro$ 5sto é semel8ante a um sistema de tele!one; uma !esta tem ue !a0er a ligação de !ato# en uanto a outra !esta tem ue estar esperando pelo tele!one uando a uela ligação é !eita$ -nviando a Cone.$o [uando !a0emos um tele!one c8amar# nos precisamos saber o nLmero de tele!one para discar$ [uando !a0emos uma cone2ão de cadeia# nos precisamos saber o endereço ou o nome da m/ uina distante$ +%meros de "orto .Lmeros de porto em sistemas de 9C*I5* são 1M nLmeros de pedaço e estão no alcance 0(MAAGA$ 6m pr/tica# nLmero de porto debai2o de 10EN é reservado para serviços prede!inidos# e vocH não os deveria usar a menos ue vocH dese%e comunicar com um desses serviços$ ' 7odelo de Rede no Java .o idioma de Java# são implementadas cone2Zes 9C*I5* com classes no %ava$pacote lí uido$ /oc5ets de ?(P Onde 9C*I5* é um protocolo cone2ão(orientado# o Usu/rio *rotocolo de 3atagram é um protocolo de Bconnectionless B$ Contudo# um modo simples e elegante para pensar nas di!erenças entre estes dois protocolos é a di!erença 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

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close