apostila java sre

86
CURSO BÁSICO DE JAVA Superintendência Regional de Ensino Varginha Autor: auricio !uris Analista Educacional In"or#$tica  

Upload: rodolfo-norberto-nogueira

Post on 15-Feb-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 1/86

CURSO BÁSICO DE JAVA

Superintendência Regional de EnsinoVarginha

Autor: auricio !urisAnalista Educacional In"or#$tica

 

Page 2: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 2/86

Curso B$sico de JAVA %

PARTE I – Começando do início&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'O (ue ) JAVA*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'O (ue ) u# +rogra#a*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'

O (ue ) u#a ,inguage# de +rogra#a-.o*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/A E0olu-.o das ,inguagens de +rogra#a-.o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&1JAVA: u#a ,inguage# de +rogra#a-.o re0olucion$ria&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&2A $(uina Virtual Ja0a 3JV4&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&56

+AR7E II 8 9unda#entos da +rogra#a-.o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&5/+rogra#a-.o Estruturada +rogra#a-.o Orientada a O;<eto&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&5/A,=ORI7O: escre0endo instru->es (ue os outros 0.o seguir&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&51ES7RU7URA DE DADOS: organi?ando as in"or#a->es&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&5@odulari?a-.o A;stra-.o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%6Classes e O;<etos: tra?endo o #undo real para dentro do co#putador&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%/Criando e eecutando u# progra#a no console&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%

Criando e eecutando u# progra#a no BlueJ&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'%+AR7E III 8 Regras de Sintae&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'@

Co#ent$rios&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'@De"ini-.o de Classe&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'@De"ini-.o de )todo&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'In0oca-.o de )todo&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/6)todo +rincipal e )todo Construtor&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/5Declara-.o de 0ari$0eis&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/%Instru-.o de Atri;ui-.o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/1Criando Instncias de Classe&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/So;recarga de )todos&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/@Operadores Arit#)ticos Relacionais e ,Fgicos&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&15Operadores Arit#)ticos co#;inados co# Atri;ui-.o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&1Concatena-.o de Strings&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&1Incre#ento e Decre#ento&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&12Instru->es e Blocos de Instru->es&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&12Instru->es de Decis.o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&1Instru->es de Repeti-.o 3loop4&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&6I#portando classes das ;i;liotecas do Ja0a&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/Criando u# ar(ui0o <ar&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&2Conclus.o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&@

Bi;liogra"ia&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&A+GHDICE A 8 Din#ica co# BlueJ&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&26A+GHDICE B 8 Ee#plos de +rogra#as Co#entados&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&2/

+rogra#a 5 +rogra#aCo#Eco&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&2/+rogra#a % +rogra#a=ra"icoCo#Eco&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&2+rogra#a ' 8 Calcula9atorial&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&22+rogra#a / 8 Calcula9atorial%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&2+rogra#a 1 8 CalculaRendi#entoCarro&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&@5+rogra#a 8 I#pri#eIn0ertido&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&@%+rogra#a 2 8 +arOuI#par&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&@1

Page 3: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 3/86

Curso B$sico de JAVA '

PARTE I – Começando do início

O que é JAVA?

Java é uma linguagem de programação muito poderosa, ue serve para desenvolverprogramas ue rodem em ualuer computador! "amos detal#ar este conceito mais adiante,mas primeiro vamos entender o ue é um programa e como ele $unciona!

O que é um Programa?

%e voc& '( usou um computador provavelmente usou um dos programas maiscon#ecidos como editor de te)to *+ord, +riter, etc, navegadores de internet *InternetE)plorer, -ire$o), etc, tocadores de m.sica ou /"/0s *+indo1s 2edia Pla3er, etc ou outros!

Tomemos como e)emplo um editor de te)tos *como o +ord! 4uando aprendemos ausar o editor de te)to 5asicamente temos ue aprender a usar os menus e 5ot6es ue

aparecem na tela principal! 7ão precisamos sa5er o ue est( por tr(s dos 5ot6es ue clicamos!4uando selecionamos uma palavra no te)to ue estamos escrevendo e clicamos no 5otão 8negrito9, sa5emos ue a palavra selecionada $ica em negrito, mas não paramos para pensarem porue isso acontece!

:m computador $oi $eito para e)ecutar instruç6es! %e n;s ligamos o computador e nãopassamos nen#uma instrução a ele, ele não $a< nada! 7o passado, os computadores eram 5emsimples e uando eram ligados apresentavam uma tela preta com um cursor piscando, o ueera a $orma dele di<er ao usu(rio 8Estou esperando ue voc& me passe alguma instrução9!7auele tempo anda não e)istiam %istemas =peracionais gr($icos como o +indo1s com$iguras, 'anelas e 5ot6es para serem clicados com o mouse! Ali(s, nem mouse e)istia, ocomputador era praticamente uma m(uina de escrever incrementada, na ual voc& passavaas instruç6es digitando no teclado e ap;s teclar 8E7TER9 o computador e)ecutava a instruçãoue voc& tin#a digitado, apresentava o resultado na tela *em $orma de te)to e $icavanovamente piscando o cursor > espera de novas instruç6es!

Então se voc& digitasse uma instrução como 82ostre a data e a #ora9 e teclasse 8E7TER9 ele mostraria a data e a #ora e depois $icaria piscando > espera de outra instrução! %evoc& digitasse 8Escreva ?=2 /IA na tela9, ele escreveria e $icaria piscando e esperandonovamente! %e voc& colocasse um disuete no leitor de disuetes e digitasse 8copie o aruivomanual!doc para o disuete9 ele copiaria e $icaria novamente piscando esperando a pr;)imainstrução!

%e voc& tin#a apenas algumas instruç6es para passar para ele, tudo 5em! 2as, imagineue para reali<ar alguma tare$a mais comple)a, como escrever um relat;rio, por e)emplo,

voc& precisasse passar de<enas, ou mesmo centenas dessas instruç6es, na 5ase do passa@instrução@e@tecla@E7TER, passa@outra@instrução@e@tecla@E7TER, e assim por diante, digamos,du<entas ve<es! J( imaginou o tra5al#ão Agora imagine ue no dia seguinte voc& tivesse ue$a<er outro relat;rio e tivesse ue passar as mesmas du<entas instruç6es de novoPois é, antes de inventarem os programas, não tin#a 'eito! A cada ve< ue voc& uisesserepetir auela operação, tin#a ue passar as instruç6es para o computador, uma de cada ve< eaguardar ue ele e)ecutasse a instrução antes de passar para a pr;)ima e assimsucessivamente!

-oi aí ue alguém criou um aruivo e colocou em cada lin#a do aruivo uma instrução!E disse ao computador 8%iga as instruç6es do aruivo9! Pronto, estava criado o programa! Apartir daí 5astava passar ao computador uma .nica instrução 8E)ecute o aruivo tal9 ue ele

encontrava o aruivo, lia uma lin#a de cada ve< e ia e)ecutando uma a uma! =u se'a, nonosso e)emplo do relat;rio, voc& s; ia ter o tra5al#o de digitar as du<entas instruç6es noaruivo uma .nica ve< e salvar o aruivo! /epois, a cada ve< ue voc& uisesse criar um

Page 4: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 4/86

Curso B$sico de JAVA /

relat;rio, 5astaria di<er ao computador para e)ecutar as instruç6es do aruivo *emin$ormatiu&s, 8e)ecutar o programa9 ou 8rodar o programa9 e pronto!

Com o tempo os computadores $oram $icando mais comple)os e os programas tam5ém,para poder acompan#ar a evolução dos computadores! %urgiram os sistemas operacionaisgr($icos *como o +indo1s ue nada mais é do ue um enorme programa ue controla todosos recursos da m(uina e ue é colocado para rodar uando voc& liga o computador!

"oltando ao e)emplo do editor de te)to, uando voc& clica no ícone do +ord voc& est(di<endo ao computador 8E)ecute o programa ue $a< o +ord $uncionar9! E a primeira coisa ueesse programa $a< é mostrar a 'anela principal do +ord e em seguida $ica esperando voc&$a<er alguma coisa! E dependendo o ue voc& $i<er, o programa vai di<endo ao computador oue ele tem ue $a<er para alcançar o resultado esperado! Então se clicarmos no 5otão

 8negrito9 o programa passa ao computador a instrução para a palavra selecionada aparecer emnegrito na tela! %e, uando estamos digitando uma $rase, c#egamos ao $inal da lin#a econtinuamos digitando sem parar, o +ord pula para a lin#a seguinte! Isto ocorre porue oprograma disse ao computador para $a<er isso! E assim por diante, o programa tem ue prevertodos as possi5ilidades de interação com o usu(rio e para cada uma delas, passar aocomputador as instruç6es necess(rias!

4uem cria o programa é o programador! Ele tem ue escrever as instruç6es ue serãopassadas ao computador para cada ação ue o usu(rio e)ecutar na tela! Para escrever essasinstruç6es, ou se'a, para escrever um programa, o programador usa uma linguagem deprogramação!

 E o ue é uma linguagem de programação B o ue veremos no pr;)imo t;pico!

O que é uma Linguagem de Programação?

7o t;pico anterior dissemos ue o usu(rio passava ao computador instruç6es como

 8mostre a data e a #ora9 ou 8copie o aruivo para o disuete9! /o mesmo modo oprogramador, ao criar ao programa, escrevia instruç6es como 8pule para a pr;)ima lin#a9 ou 8mostre a palavra selecionada em negrito9!

B claro ue isso não acontecia com instruç6es escritas desse modo! = computadorsimplesmente não entende a nossa língua! Ele tem uma linguagem pr;pria ue é composta depalavras escritas com s *<eros e Ds *uns! /a mesma $orma ue n;s nos comunicamos

 'untando letras para $ormar palavras e $rases, o computador $a< a mesma coisa 'untando osn.meros e D! %; ue para escrever os nossos te)tos, usamos um al$a5eto com F letras,de< n.meros e diversos caracteres especiais, como par&nteses, vírgula, ponto de e)clamação,etc! = computador usa apenas s e Ds!

Tomemos como e)emplo o 5otão 8Iniciar9, da tela principal do 1indo1s! = ue n;scompreendemos como uma seG&ncia de H letras I–7–I–C–I–A–R, o computador entendecomo uma seG&ncia de F dígitosDDDDDDDDDDDDDDDDDDDDD! /a mesma $orma ue apalavra I7ICIAR não signi$ica nada para o computador,DDDDDDDDDDDDDDDDDDDDD não signi$ica nada paran;s!

B como uando tentamos nos comunicar com alguém ue $ala outra língua, como pore)emplo, o c#in&s! %e $alarmos alguma coisa em portugu&s para um c#in&s, ele não entende,e vice@versa! Para ue possamos nos comunicar precisamos de um tradutor a uem possamosnos dirigir em portugu&s para ue ele tradu<a para o c#in&s! /a mesma $orma, $oram criadosprogramas@tradutores para tradu<ir o ue escrevemos usando nossa línguagem, para uma

seG&ncia de s e Ds, ue é a linguagem ue o computador entende!

Page 5: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 5/86

Curso B$sico de JAVA 1

%; ue se o programa@tradutor $osse tradu<ir a nossa linguagem do 'eito ue n;s$alamos, teria ue con#ecer todas as palavras ue usamos *o dicion(rio Aurélio, por e)emplo,tem mais de KL! palavras além das regras de sinta)e, concordMncia, reg&ncias ver5al enominal, etc! %eria um programa enorme e muito lento! No'e, os computadores t&m mem;riasmedidas em Oiga53tes *D Oiga53te D!! Q53tes, mas no passado os computadorestin#am mem;rias de poucas de<enas de Q53tes! %implesmente não seria possível escrever umprograma@tradutor ue cou5esse na mem;ria do computador! A solução $oi criar uma versão

redu<ida de nossa linguagem, com apenas algumas de<enas de palavras e algumas poucasregras de sinta)e, ue $ossem su$icientes para podermos passar as instruç6es ao computadore ue não $osse muito di$ícil para o programa@tradutor tradu<ir! Como tin#a menos palavraspara con#ecer e tradu<ir, o programa@tradutor era 5em mais simples e ca5ia tranGilamente napeuena mem;ria do computador, além de ser 5em mais r(pido para e)ecutar!

Para n;s tam5ém, não era muito di$ícil aprender auela versão redu<ida de nossapr;pria língua, com menos palavras e regras para decorar!

Ao passar as instruç6es $icava parecendo Tar<an $alando com o computador 82imuerer computador imprimir relat;rio9, mas dava conta do recado! B claro ue se oscomputadores tivessem nascido e se desenvolvido no ?rasil, naturalmente teríamos os

programas escritos em portugu&s, ou em vers6es redu<idas do portugu&s!Como isto aconteceu nos Estados :nidos, o idioma escol#ido para $a<er essas vers6es

redu<idas aca5ou sendo o ingl&s! -oi assim ue nasceram as linguagens de programação, uesão essas vers6es redu<idas do ingl&s, e é por isso ue todas as linguagens de programaçãoue con#ecemos estão em ingl&s!

A Evolução das Linguagens de Programação

As primeiras linguagens de programação não eram tão parecidas com a nossa pr;prialinguagem como são #o'e! Elas estavam mais pr;)imas da linguagem do computador! Asinstruç6es eram passadas usando uma palavra@c#ave *mnemnico seguida ou não de

n.meros! A $igura D mostra um trec#o de um programa em Assem5l3 ue pode ser tradu<idopara 8some o valor das L vari(veis e arma<ene o resultado na primeira vari(vel9!

Era 5em mais tra5al#oso escrever um programa porue eram necess(rias muitasdessas instruç6es curtas para reali<ar ualuer tare$a menos as mais simples! Além disso,eram linguagens muito di$íceis de aprender porue não eram tão pr;)imas da nossalinguagem! /e ualuer modo era 5em mais $(cil do ue $icar digitando centenas de s e Ds! A$igura mostra o mesmo trec#o da $igura D em linguagem de m(uina! Essas linguagens eramc#amadas de Singuagens de ?ai)o 7ível porue estavam mais pr;)imas da linguagem docomputador do ue da nossa! /entre as linguagens de 5ai)o nível, a mais usada era oAssem5l3!

Com o tempo $oram surgindo as Singuagens de Alto 7ível, ue estão mais pr;)imas danossa linguagem do ue da linguagem do computador! Eram linguagens mais $(ceis deaprender e usar porue era uase como re@aprender a $alar usando um con'unto redu<ido depalavras e regras de sinta)e, reg&ncia e concordMncia! Para ilustrar, a $igura L tra< a mesmainstrução das $iguras D e , escrita em PA%CAS!

/entre as linguagens de alto nível ue mais se populari<aram podemos citar o-=RTRA7, o C=?AS e o PA%CAS! Cada uma tin#a características ue $acilitavam um usoespecí$ico e tin#am suas legi6es de $ãs!

add L,,Ladd ,D,add D,,L

9ig& 5

DDDDDDDDDDDD9ig& %

varD varD var varLU 9ig& '

Page 6: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 6/86

Curso B$sico de JAVA

= C=?=S, por e)emplo, tin#a recursos ue $acilitavam arma<enar e recuperarin$ormaç6es e trans$orm(@las em relat;rios! Por isso eram muito usadas em 5ancos eescrit;rios de conta5ilidade! = -=RTRA7 tin#a recursos poderosos para c(lculos de precisão eera muito usado em universidades e instituiç6es de pesuisa! = PA%CAS era uma linguagem deuso geral e era tão 5em organi<ada ue era a linguagem pre$erida para ensinar programaçãonas escolas e $aculdades!

Todos esses programas interagiam com os usu(rios de $orma muito simples! Parapassar in$ormaç6es para o programa, o usu(rio digitava os dados via teclado em modo te)to!=u então o programa lia os dados em um aruivo arma<enado no computador ou em umdispositivo de arma<enamento, como um disuete ou $ita magnética! Para enviar dados aousu(rio, o programa mostrava os dados na tela *em modo te)to ou imprimia em umaimpressora!

A estrutura desses programas tam5ém era muito simples! As instruç6es eram escritasem seG&ncia e #avia algumas estruturas de decisão *SE condição@é@verdadeira ENTÃO $açaisso SENÃO $aça auilo e de repetição *FAÇA isso ENQUANTO condição@é@verdadeira! Essaslinguagens eram c#amadas de Singuagens de Programação Estruturadas *ou Procedurais porue seguiam uma estrutura l;gica e 5em de$inida!

Com a evolução dos computadores, o surgimento dos %istemas =peracionais gr($icos*+indo1s e o crescimento da internet a interação com os usu(rios $icou 5em mais comple)a!Agora o programa rece5e in$ormaç6es via teclado, cliues do mouse, aruivos, dispositivos decomunicação ou diretamente de outro computador através de uma rede local ou da internet! Eresponde através de te)to, imagens, $otos, sons e transmissão via rede! Para lidar com todaesta riue<a de in$ormaç6es, a $orma de escrever os programas tam5ém evoluiu e surgiu oconceito de =rientação a =5'etos e com eles as Singuagens de Programação =rientadas a=5'etos!

Tomemos como e)emplo um programa para controlar os dados de uma 5i5lioteca!Temos ue registrar in$ormaç6es acerca dos livros *títulos, autor, etc dos usu(rios *nV dematrícula, nome, tele$one, etc além das aç6es $eitas por eles *os usu(rios podem pegar livrosemprestados, podem devolver livros, podem pagar a ta)a de mensalidade, etc! As linguagensde programação estruturadas tin#am $ormas de representar as características dos o5'etos*usu(rio tem nome, nV matrícula mas não as aç6es dos o5'etos *usu(rio devolve livros, pagamensalidade! Essas aç6es eram representadas através de instruç6es escritas usando as regrasdauela linguagem!

A $orma de escrever o programa variava em $unção da linguagem escol#ida! %e eu$osse escrever em -=RTRA7, ue é uma linguagem ue privilegia as descriç6es de dados, euescreveria de um 'eito! %e $osse escrever em PR=S=O ue é uma linguagem 5aseada emtomadas de decis6es, eu escreveria de outro! E assim por diante!

Com o conceito de =rientação a =5'etos, os o5'etos *livros, usu(rios são representadosde $orma completa, arma<enando ao mesmo tempo as in$ormaç6es so5re suas características*nome e as aç6es ue podem reali<ar *pegar livro emprestado! = programador pode 5olar osseus programas usando esta representação e na #ora de escol#er uma linguagem paraescrever as instruç6es, pode escol#er ualuer Singuagem de Programação =rientada a=5'etos! Ele apenas teve ue $a<er peuenas adaptaç6es em $unção da linguagem escol#ida*cada linguagem tem regras pr;prias de como escrever as instruç6es, mas a estrutura doprograma e a representação dos dados é a mesma! Este conceito de representação de o5'etosatravés de suas aç6es e características ser( e)plicado em detal#es uando $ormos estudar asClasses e =5'etos!

/entre as Singuagens de Programação =rientadas a =5'etos, uma se destacouprovocando uma verdadeira revolução no mundo da programação o JA"A! "amos sa5er

porue no pr;)imo t;pico!

Page 7: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 7/86

Curso B$sico de JAVA 2

JAVA: uma Linguagem de Programação revolucionária

"amos recapitular o ue vimos no t;pico so5re programas o computador não entendea nossa linguagem @ $eita de letras, n.meros e caracteres especiais – e n;s não entendemos alinguagem do computador – $eita de <eros e uns! Para ue pudéssemos nos comunicar $oinecess(rio criar um programa–tradutor! E para $acilitar a tare$a de tradução, $oi criada umaversão redu<ida da nossa linguagem com poucas palavras e regras! Esse processo de tradução

é con#ecido como compilação e os programas–tradutores são c#amados de compiladores!4uando era criada uma linguagem de programação tin#a ue ser criado tam5ém ocompilador para auela linguagem! :m programador ue uisesse escrever seus

programas usando auela linguagem teria em primeiro lugar ue aprender as regras e ovoca5ul(rio dauela linguagem! Em segundo lugar teria ue instalar o compilador no seucomputador! Ai então ele estaria pronto para escrever e e)ecutar seus programas escritosnauela linguagem!

Para escrever os programas 5astava a5rir um editor de te)to, escrever as instruç6es deacordo com as regras da linguagem escol#ida e salvar o aruivo! Este aruivo contendo asinstruç6es escritas em linguagem de alto nível é c#amado de 8c;digo–$onte9, ou simplesmente

 8c;digo9! Em seguida era preciso compilar *tradu<ir o c;digo–$onte e isso era $eito e)ecutando

o compilador! = compilador lia as instruç6es do c;digo–$onte e criava um aruivo aonde iacolocando as instruç6es correspondentes em linguagem de m(uina *s e Ds! Ao $inal doprocesso, tín#amos um aruivo c#eio de s e Ds! Este aruivo é con#ecido como 8c;digo5in(rio9 ou 8e)ecut(vel9! 4uando rodamos *e)ecutamos um programa, é este e)ecut(vel ueé utili<ado pelo computador para seguir as instruç6es!

Este processo permanece até #o'e usamos um editor para escrever o c;digo–$onte,compilamos o c;digo–$onte e rodamos o e)ecut(vel!

Temos sempre dois aruivos o aruivo contendo o c;digo–$onte – ue n;s podemos lere compreender, mas o computador não – e o c;digo 5in(rio @ ue n;s não compreendemos,mas o computador sim! %e $i<ermos alguma alteração no nosso c;digo–$onte ser( necess(rio

compil(@lo novamente para gerar um novo aruivo e)ecut(vel *c;digo 5in(rio contendo asalteraç6es!

Até aui est( tudo 5em Então vamos complicar um pouco!

= compilador, para $a<er o tra5al#o de tradução, precisava con#ecer a linguagem deprogramação e a linguagem do computador! Con#ecer a linguagem de programação era $(cilporue a mesma euipe ue desenvolvia a linguagem de programação, desenvolvia ao mesmotempo o compilador! Restava con#ecer a linguagem do computador e era aui ue a coisa$icava complicada! 7ão e)istia uma linguagem de m(uina padrão ue $osse comum a todos oscomputadores! Cada $a5ricante desenvolvia a sua!

=s computadores eram desenvolvidos segundo uma estrutura de componentes, peças ecircuitos ue era pr;pria de cada $a5ricante! Cada $a5ricante tin#a ue desenvolver todos oscomponentes da sua marca! Assim, uem tin#a um computador da IBM  s; poderia usarcomponentes da marca IBM  no seu computador! %e tivesse uma promoção muito 5oa demonitores Apple *marca concorrente, voc& não poderia aproveitar porue os monitores da

 Apple eram incompatíveis com o seu computador IBM ! = mesmo com teclados, drives dedisuete, etc, até mesmo com impressoras!

/o mesmo modo, as instruç6es de m(uina, ou se'a, a linguagem de m(uina, erade$inida em $unção do padrão de cada $a5ricante! Cada marca de computador tin#a a suapr;pria linguagem de computador! Assim, a mesma seG&ncia de s e Ds podia signi$icar umacoisa para um computador de uma marca e outra coisa para outro computador de outramarca! Por e)emplo, a seG&ncia 8DDDDD9 poderia signi$icar, para um computador IBM ,

uma instrução para somar dois n.meros! A mesma seG&ncia, para um computador Apple,poderia ser entendida como uma instrução de su5tração! Era tudo escrito com s e Ds mascada computador compreendia de $orma di$erente!

Page 8: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 8/86

Curso B$sico de JAVA @

= mesmo acontece com a nossa linguagem! %e pegarmos a palavra 8cola9, por e)emplo!Em portugu&s 8cola9 signi$ica 8su5stMncia adesiva9! 2as se eu $or para a Argentina ou Espan#a,as pessoas vão entender outra coisa, porue 8cola9 em espan#ol uer di<er 8ra5o, cauda deanimal9! E se eu $or para os E:A, eles entendem uma coisa di$erente, porue 8cola9 em ingl&suer di<er 85e5ida gasosa9! B a mesma seG&ncia de uatro letras, mas cada linguagemcompreende de uma $orma di$erente!

"oltando ao nosso compilador, n;s vimos ue para poder $a<er a tradução, o compiladortin#a ue con#ecer a linguagem de programação e a linguagem do computador! A linguagemde programação era uma s; porue cada linguagem tin#a o seu pr;prio compiladordesenvolvido so5 medida para ela *um compilador PA%CAS s; tradu< programas escritos emPA%CAS, um compilador C=?=S s; tradu< programas escritos em C=?=S, e assim por diante!2as a linguagem de m(uina era di$erente dependendo do $a5ricante! Como resolver %imples!= desenvolvedor da linguagem de programação escol#ia um padrão de computadores e criavaseu compilador para auele padrão! Com isso, a linguagem $icava restrita >uele padrão, s;podendo ser usada nele! 4uem comprasse um computador IBM  s; poderia rodar nele osprogramas escritos nas linguagens de programação compatíveis com o padrão IBM ! 4uemcomprasse um computador da Apple teria ue escol#er programas escritos em outraslinguagens, desenvolvidos para rodar na Apple!

Essa estrutura de circuitos, componentes e etc!, *#ard1are 5em como o sistemaoperacional e programas ue $a<em o computador $uncionar *so$t1are, esse padrão uevariava de acordo com o $a5ricante é c#amado de plata$orma!

Com o tempo, alguns $a5ricantes desistiram de suas plata$ormas e passaram a $a5ricaros seus componentes seguindo o padrão esta5elecido por outro! -oi o ue aconteceu uando aIBM  a5riu o seu padrão para ue outros pudessem copiar! = ue poderia parecer loucura,aca5ou se revelando uma estratégia genial porue v(rios $a5ricantes de componentes*impressoras, monitores, teclados, etc começaram a $a5ricar seus componentes para o padrãoIBM ! Com o aumento da o$erta os preços caíram e cada ve< mais as pessoas compravamcomputadores IBM  porue tin#a mais o$erta de componentes de v(rios $a5ricantes e preçosmais 5ai)os, todos compatíveis com o seu computador! B claro ue além dos componentes,surgiram $a5ricantes ue $a<iam não apenas um teclado ou mouse, mas todo um computadorseguindo o padrão IBM  e passando a concorrer diretamente com os computadores $a5ricadospela pr;pria IBM ! Eram os 8clones IBM 9! 2as sempre #ouve, como #o'e, uem pre$erissecomprar um produto 8de marca9 a comprar um produto 8genérico9! Com isso as vendas da IBM dispararam e o padrão dominou o mercado!

=utros $a5ricantes ue não aderiram > plata$orma IBM , ou $aliram ou mantiveram suaplata$orma $ec#ada! B o caso da Apple ue #o'e $a5rica os computadores Mac ! A Apple tem uedesenvolver tudo, desde a placa@mãe até o so$t1are! 7ão e)istem v(rios $ornecedores paravoc& comparar preços! =u voc& compra deles ou não! B por isso ue os Mac  são tão mais carosem comparação com outros computadores!

Atualmente e)istem apenas uatro ou cinco plata$ormas *#ard1are e so$t1are uedominam o mercado! Com este n.mero redu<ido de plata$ormas uma Singuagem deProgramação não precisa mais $icar presa a um .nico padrão, como no passado! Ao invés deescol#er uma .nica plata$orma e criar um compilador para ela, o ue os desenvolvedores$a<em é criar um compilador para cada plata$orma! Por e)emplo, a linguagem Perl tem umcompilador Perl para +indo1s, outro para Sinu), outro para Solaris e outro para Mac ! Essaslinguagens são c#amadas de Singuagens 2ultiplata$orma, 'ustamente porue desenvolveramcompiladores para cada uma das plata$ormas e)istentes! Agora um programador pode escol#erualuer linguagem multiplata$orma para escrever seus programas, pois sa5e ue poder(rod(@los em ualuer plata$orma!

%; ue tem mais um peueno detal#e lem5ram ue n;s vimos ue o programador

escreve o c;digo–$onte e depois tem ue compilar este c;digo@$onte para gerar o c;digo@5in(rio, ue é o c;digo ue o computador entende E ue cada computador, dependendo dasua plata$orma, entende o c;digo@5in(rio *a seG&ncia de s e Ds de maneira di$erente Isto

Page 9: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 9/86

Curso B$sico de JAVA

signi$ica ue o c;digo@5in(rio ue $oi gerado por um compilador +indo1s não poder( serusado para rodar o programa em um computador Sinu), nem em um Mac  e nem em um+indo1s, porue eles irão entender tudo errado! Para rodar em uma m(uina Sinu), oprogramador ter( ue compilar o c;digo–$onte outra ve<, usando um compilador Sinu), ue ir(gerar um c;digo 5in(rio Sinu), ue os computadores Sinu) entendem! E o mesmo processopara os computadores Mac  e +indo1s!

= c;digo–$onte é o mesmo! %; o ue vai mudar são os c;digos@5in(rios! Precisa de um5in(rio di$erente para cada tipo de plata$orma! Pode parecer meio tra5al#oso, mas é mel#or doue $icar preso a uma .nica plata$orma!

Para a'udar a compreender, vamos $a<er uma comparação com a nossa linguagem!Imaginemos ue eu sou um escritor e escrevi um livro para ser vendido aui no ?rasil! %e eunão uiser ue o meu livro $iue encal#ado nas prateleiras, é claro ue vou ter ue escreverem portugu&s! Agora supon#amos ue eu $ec#ei um contrato com editoras de outros paísespara vender meus livros na It(lia, R.ssia e C#ina! =ra, eu não posso enviar meus livros emportugu&s porue ninguém vai entender nada! Então eu contrato um tradutor *compilador deitaliano ue vai ler o meu livro em portugu&s *c;digo–$onte e escrever a versão do livro emitaliano *c;digo@5in(rio! Agora eu posso vender *e)ecutar a versão em italiano do livro

porue todas as pessoas *computadores ue vivem nauele país *plata$orma vão conseguirentender!

Porém eu não posso vender essa versão em italiano na R.ssia, pois os russos não vãoentender! =u se'a, eu não posso aproveitar o tra5al#o de tradução *compilação ue '( $oi$eito! Eu ten#o ue c#amar um outro tradutor *compilador para tradu<ir o meu livro doportugu&s *c;digo–$onte para o russo *c;digo@5in(rio de modo ue as pessoas*computadores ue vivem na R.ssia *plata$orma consigam entender! E assim por diante, omesmo tem ue ser $eito para a C#ina ou ualuer outro país *plata$orma onde eu ueiravender meu livro!

Eu s; precisei escrever o meu livro *programa uma .nica ve< usando a SínguaPortuguesa *linguagem de programação! 2as o processo de tradução *compilação uetrans$orma o meu livro do portugu&s *c;digo–$onte para outro idioma *c;digo@5in(rio teveue ser $eito v(rias ve<es, uma para cada país *plata$orma ue escol#i para vender *e)ecutarmeu livro *programa!

-icou claro Então vamos seguir em $rente!

?om, e aí surgiu no mercado a linguagem JAVA! %eria de se esperar ue os criadoresdo Java $i<essem como as outras linguagens e criassem um compilador Java para cadaplata$orma e)istente! 2as eles $i<eram uma coisa di$erente criaram um conceito c#amado2(uina "irtual Java, a J"2 *a sigla vem do ingl&s, Java "irtual 2ac#ine! Oraças > J"2, osprogramadores não precisavam mais compilar v(rias ve<es o seu c;digo–$onte, uma ve< paracada plata$orma! Escrevendo seu programa em Java, 5astava compilar uma .nica ve< e oc;digo resultante poderia ser e)ecutado em ualuer computador de ualuer plata$orma!Essa característica era en$ati<ada pelo seu slogan 8ecre!a "ma !e#$ e%ec"&e em '"al'"erl"(ar9!

Esta praticidade incompar(vel $e< do Java um sucesso instantMneo! Sançado em maiode DWW, Java $oi adotado mais rapidamente do ue ualuer outra linguagem de programaçãona #ist;ria da computação! Em L, o Java atingiu a marca de K mil#6es de desenvolvedoresem todo o mundo! Ele continuou crescendo e #o'e é uma re$er&ncia no mercado dedesenvolvimento de so$t1are, estando presente em toda parte desde main$rames, sistemasoperacionais e navegadores de internet, até celulares, palmtops e cart6es inteligentes entreoutros!

2as espere aíX %e o programador tin#a ue compilar o seu c;digo–$onte escrito em Javae como resultado da compilação tin#a um c;digo e)ecut(vel, igual<in#o acontecia nas outraslinguagens, como é ue computadores de outras plata$ormas conseguiam entender auele

Page 10: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 10/86

Curso B$sico de JAVA 56

c;digo ue tin#a sido gerado em uma plata$orma di$erente da sua 4ue m(gica era essa B oue n;s vamos desco5rir no pr;)imo t;pico!

A Máquina Virtual Java JVM!

Como vimos, um programa tradicional é compilado, gerando um e)ecut(vel 5in(rio,escrito em c;digo nativo, ou se'a, c;digo na linguagem de m(uina da plata$orma na ual $oi

compilado! Este processo est( ilustrado na $igura a5ai)o!

=s programas em JA"A tam5ém são compilados, mas não geram um e)ecut(vel 5in(rioescrito em linguagem de m(uina! Em lugar disso, geram um c;digo intermedi(rio escrito emuma su5@linguagem inventada pelo JA"A, uma espécie de c;digo–JA"A, c#amada de 53tecode!

 = aruivo em 53tecode, criado no processo de compilação é um intermedi(rio entre o

c;digo–$onte *ue n;s compreendemos e o c;digo@5in(rio *ue o computador compreende!= 53tecode não é compreendido nem pelos programadores e nem pelos computadores! E paraue serve um aruivo ue ninguém consegue compreender A$inal, uem conseguecompreender o 53tecode Resposta a 2(uina "irtual JA"A!

Em computação, c#amamos de virtual uma representação criada para o computadorpara simular alguma coisa e)istente no mundo real!

=s 'ogos de ação $a<em isso o tempo todo! 7eles, voc& pode dirigir um carro virtual emruas de cidades virtuais! A sensação é tão per$eita ue voc& tem a impressão de ue est(dirigindo um carro de verdade! =u pode 'ogar um 'ogo de $ute5ol onde a sua seleção temum Ronaldin#o virtual, um Ro5in#o virtual, etc! Alguns museus $amosos t&m sites onde voc&pode percorrer suas galerias virtuais e admirar seus uadros virtuais *ue são c;piasdigitali<adas dos originais! E)istem sites de 5i5liotecas onde voc& pode procurar um livrovirtual nas estantes virtuais, a5rí@lo e l&@lo na tela do computador!

Portanto, uma m(uina *computador virtual é uma simulação de uma m(uina deverdade, ou se'a, de um computador de verdade dentro do seu computador!

A J"2 nada mais é do ue um programa ue voc& instala no seu computador e uesimula o comportamento de um computador de verdade no ue di< respeito > e)ecução deprogramas! Instalando a 2(uina "irtual Java, tam5ém con#ecida como plata$orma Java, noseu computador, voc& passa a ter um computador dois@em@um! Ao mesmo tempo, ue ele é daplata$orma Mac  *entende a linguagem de m(uina Mac , tam5ém é da plata$orma Java * eentende a linguagem de m(uina do Java! =u se voc& tem um computador Solaris, ao mesmotempo ue ele é da plata$orma Solaris *e entende a linguagem de m(uina Solaris eletam5ém é da plata$orma Java *e entende a linguagem de m(uina do Java!

Com isso, o Java conseguiu simular no mundo virtual uma coisa uase impossível nomundo real criar um .nico padrão, uma .nica plata$orma @ a plata$orma Java! B como se

todos os computadores do mundo $ossem do mesmo $a5ricante e portanto tivessem ummesmo padrão! B claro ue para isso acontecer de verdade precisaria ue todos oscomputadores tivessem a J"2 instalada! 2as a cada dia ue passa isso $ica mais perto de

Program ?om /iaU:ses crtU?egin  +riteln *8?om diaX9UEnd!

C)di(o * +on&e

Com,ilador

DDDDDDDDDDDDD

C)di(o -in.rio

9igura /

Page 11: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 11/86

Curso B$sico de JAVA 55

acontecer! A maioria dos %istemas =peracionais '( vem com a J"2 instalada! E uando nãovem, 5asta entrar no site da Sun *desenvolvedora do Java, $a<er o do1nload e instalar!

2as voltando a J"2, dissemos ue um computador com a 2(uina "irtual JA"Ainstalada entende a linguagem de m(uina nativa de sua plata$orma *os s e Ds do c;digo@5in(rio e tam5ém a linguagem de m(uina do JA"A& E o ue é essa linguagem da m(uina doJava %ão 'ustamente os 53tecodes ue $oram gerados pelo compilador do Java uandocompilamos nosso c;digo–$onte!

Recapitulando: nas linguagens compiladas tradicionais n;s escrevemos o programa emum editor de te)to gerando o c;digo@$onte! A seguir compilamos o c;digo@$onte usando ocompilador de uma determinada plata$orma para gerar o c;digo@5in(rio nativo dauelaplata$orma! Em seguida rodamos o c;digo@5in(rio e o computador l& as instruç6es do 5in(rio eos e)ecuta!

7o Java o processo é uase o mesmo, a di$erença é ue entre o programador e ocomputador de verdade e)iste um computador virtual a 2(uina "irtual Java! = processo comJava $ica assim n;s escrevemos o programa em um editor de te)tos gerando o c;digo@$onte!A seguir compilamos o c;digo@$onte usando o compilador Java para gerar o c;digo@Java*53tecode! Em seguida rodamos o 53tecode e o computador virtual Java *a J"2 l& as

instruç6es do 53tecode e as trans$orma em instruç6es de m(uina escritas em c;digo@5in(rionativo da plata$orma do computador de verdade! -inalmente, o computador de verdade rece5eas instruç6es passadas pela J"2 e as e)ecuta! A $igura a5ai)o ilustra o processo

 

=5serve o trec#o da $igura ue ilustra a J"2! /e um lado ela rece5e um aruivo com o53tecode e do outro ela gera c;digo@5in(rio para o computador de verdade! =u se'a, ela l& o53tecode e tradu< para o c;digo@5in(rio!

=ra, mas então a J"2 é um tradutor, ou se'a, um compilador E)atamente!

A di$erença da compilação no Java para a compilação nas outras linguagens é ue naslinguagens tradicionais a compilação é $eita em uma etapa e no Java ela é $eita em duasetapas!

7as linguagens compiladas tradicionais o c;digo@$onte é lido pelo compilador, ue gera oc;digo 5in(rio, ue é e)ecutado pelo computador *ver $ig!K!

7o Java o c;digo@$onte é lido pelo compilador@Java, ue gera o 53tecode, ue é lido pelaJ"2, ue gera o c;digo@5in(rio, ue é e)ecutado pelo computador *ver $ig!

2as se a J"2 gera c;digo 5in(rio *s e Ds para o computador e cada plata$ormaentende esses s e Ds de maneira di$erente, eu não teria ue ter uma J"2 di$erente para cadaplata$orma %im! /o mesmo modo ue uem criava uma linguagem tin#a ue criar tam5émum compilador para cada plata$orma, tam5ém os criadores do Java tiveram ue $a<er uma J"2

para cada plata$orma! E cada J"2 gera o c;digo@5in(rio correspondente > sua plata$orma ueos computadores dauela plata$orma conseguem ler e e)ecutar!

class Bo#Dia   println3KOl$LM4N

C;digo@$onte

Compilador

JA"A

?YTEC=/E

J"20010110100!!!

9igura 1

Page 12: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 12/86

Curso B$sico de JAVA 5%

%e compararmos os dois diagramas, veremos ue o compilador da -ig!K, ou mel#ordi<endo, os v(rios compiladores da -ig!K *um para cada plata$orma euivalem >s v(rias J"2sda -ig! *uma para cada plata$orma! /esse modo, o ue tem a mais no desen#o da -ig! uenão tem na -ig!K é 'ustamente o compilador Java! E ser( ue eu preciso de um compiladorJava di$erente para cada 2(uina "irtual Java ?oa pergunta!!!

"amos analisar no caso das linguagens tradicionais cada compilador rece5e como

entrada o c;digo@$onte escrito segundo as regras dauela linguagem e gera como saída oc;digo@5in(rio especí$ico para sua plata$orma! A entrada é uma s;, porue a Singuagem deProgramação é sempre a mesma! = ue varia é a saída cada compilador gera uma saídadi$erente *c;digo@5in(rio correspondente > sua plata$orma!

7o caso do Java, cada J"2 rece5e como entrada um aruivo escrito em 53tecode e geracomo saída o c;digo 5in(rio especí$ico para a sua plata$orma! A entrada tam5ém é uma s;,porue s; e)iste uma linguagem 53tecode e todas as J"2s sa5em ler o 53tecode! Auitam5ém, o ue varia é a saída cada J"2 gera uma saída di$erente *c;digo@5in(riocorrespondente > sua plata$orma!

J( para o compilador Java, ele rece5e como entrada o c;digo@$onte escrito seguindo as

regras do Java e gera como saída um aruivo contendo os 53tecodes! A entrada é uma s;,porue s; e)iste uma especi$icação para a Singuagem de Programação Java! E a saída tam5émé sempre a mesma, porue s; e)iste uma especi$icação para a linguagem do c;digo@Java, o53tecode! %e a entrada é uma s; e a saída tam5ém, então eu não preciso de v(rioscompiladores Java, 5asta um!

Resumindo o programador escreve o c;digo@$onte em Java *ue é sempre o mesmo edepois compila usando o compilador Java *ue tam5ém é sempre o mesmo!

A principal di$erença aca5a sendo ue o processo no Java é $eito em duas etapas e nasoutras linguagens é $eito em uma etapa! Esse processo em duas etapas é a m(gica uemencionamos no $inal do t;pico anterior e ue permite ue o programador “escreva uma vez eexecute em qualquer lugar”. 

= programador, usando ualuer computador de ualuer plata$orma, escreve oprograma e compila o c;digo@$onte *usando o compilador Java ue é o mesmo em ualuerplata$orma gerando o aruivo 53tecode! Esse aruivo 53tecode pode ser levado para ualuercomputador de ualuer plata$orma *desde ue ele ten#a uma J"2 instalada porue todas asJ"2s sa5em ler o 53tecode e tradu<í@lo para c;digo@5in(rio nativo de sua plata$orma! A $iguraF ilustra o processo!

DDD  DDD DDDDD

class Bo#Dia

 println3KBo# DiaLM4N

Programa Java

CompiladorJava

?3tecode?3tecode

?3tecode

J"2J"2

J"2

9igura

Page 13: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 13/86

Curso B$sico de JAVA 5'

"amos analisar o impacto desta compilação@em@duas@etapas para as partes envolvidas!= usu(rio, para e)ecutar um programa escrito em uma linguagem tradicional, rece5e

um aruivo contendo c;digo@5in(rio *um monte de Zs e Ds ue ele não entende, clica duasve<es e o programa é e)ecutado *o computador l& as instruç6es do c;digo@5in(rio e ase)ecuta!

Para e)ecutar um programa escrito em Java o usu(rio rece5e um aruivo escrito em53tecode *ue ele tam5ém não entende, clica duas ve<es e o programa é e)ecutado *am(uina virtual Java l& as instruç6es do 53tecode e repassa para o computador em $ormato dec;digo@5in(rio ue ele recon#ece e e)ecuta! =u se'a, para o usuário não muda nada! /eum 'eito ou de outro, o usu(rio vai clicar duas ve<es no aruivo e)ecut(vel *5in(rio ou53tecode e pronto, o programa e)ecuta!

%e para o usu(rio não $a< di$erença nen#uma, para o programador $e< toda a di$erençado mundo! Antes o programador escrevia o programa uma ve< e compilava v(rias ve<es, umapara cada plata$orma! E se $i<esse uma alteração no programa tin#a ue compilar v(rias ve<esde novo! Com o Java o programador escreve o programa uma ve< e compila uma ve<! Aca5ou

o tra5al#ão de compilar uma ve< para cada plata$orma! E se $i<er alguma alteração noprograma 5asta recompilar uma ve< ue o 53tecode resultante poder( ser lido por ualuercomputador de ualuer plata$orma “escreva uma vez, execute em qualquer lugar.” 

Para terminar, uma peuena correção na verdade a J"2 não é um compilador, é uminterpretador. Com a evolução dos programas e das linguagens de programação, osprogramas@tradutores tam5ém evoluíram e passaram a ser classi$icados em duas categoriasos com,iladore e os in&er,re&adore!

= compilador é est(tico ele $a< o seu tra5al#o de tradução uma ve< e gera um aruivocontendo o c;digo@5in(rio ue ser( lido e e)ecutado pelo computador! %e voc& e)ecutar oc;digo 5in(rio uma, de< ou cem ve<es isso não muda nada! = tra5al#o de tradução '( $oi $eito

uma .nica ve<!

J( o interpretador é dinMmico > medida ue ele vai lendo as instruç6es do c;digo $onte,ele vai tradu<indo em linguagem de m(uina e passando para o computador ue as rece5e ee)ecuta! Ao $inal do processo, não $oi gerado nen#um aruivo com instruç6es em c;digo@5in(rio! =u se'a, se voc& rodar o programa de novo o interpretador vai tradu<ir tudo de novoinstrução por instrução! A cada ve< ue voc& rodar o programa uma nova tradução ser( $eita!%e voc& rodar o programa cinGenta ve<es, serão cinGenta traduç6es!

No'e e)istem linguagens compiladas e linguagens interpretadas! = Java é uma misturade am5as! Ele é uma linguagem compilada *na D[ etapa e interpretada *na [ etapa!

Page 14: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 14/86

Curso B$sico de JAVA 5/

PA"#E $$ % &undamentos da Programação

Programação Estruturada ' Programação Orientada a O()eto

As primeiras linguagens de programação ue surgiram tin#am cada uma as suaspr;prias características e regras, mas seguiam todas o mesmo conceito a ProgramaçãoEstruturada!

As Singuagens de Programação =rientadas a =5'eto criaram um novo conceito 5emmais avançado *a =rientação a =5'etos e com isso modi$icaram a $orma de programar!

Antes de tentar entender o conceito mais avançado *e mais di$ícil da Programação=rientada a =5'eto, temos ue dominar o conceito mais simples *e 5em mais $(cil daProgramação Estruturada!

4uando temos um pro5lema e ueremos resolv&@lo usando um computador,escrevemos um programa! Através do programa passamos ao computador uma série de

in$ormaç6es *dados e de instruç6es de como lidar com essas in$ormaç6es!

Tomemos como e)emplo uma calculadora! A calculadora nada mais é do ue umcomputador muito simples ue reali<a apenas operaç6es de c(lculo!

%e eu uero somar os n.meros 89 e 89, eu aperto a tecla 89, depois a tecla 89 edepois a tecla 89! -inalmente aperto a tecla 89 ue seria euivalente a di<er 8e)ecute o meuprograma9, e ele mostra o resultado no visor 8H9! = 8 9 ue digitamos na calculadora seriao euivalente a um programa em um computador, aonde os n.meros 89 e 89 representam osdados do pro5lema *no nosso e)emplo, os dois operandos da operação de adição e o sinal 89 representa a ação, o ue o computador deve $a<er com os dados ue $oram in$ormados *nonosso e)emplo, somar os dois dados!

:ma calculadora cienti$ica disp6es de mais recursos ue uma calculadora normal, como$unç6es trigonométricas e estatísticas! Com ela podemos $a<er c(lculos mais comple)os como,por e)emplo, calcular o valor das prestaç6es de um $inanciamento a 'uros compostos! Para$a<er este c(lculo teremos ue in$ormar > calculadora muito mais dados do ue para aoperação de soma!

= computador, por sua ve<, é uma $erramenta muito mais ela5orada do ue umacalculadora! Ele pode rece5er e manipular não s; dados numéricos, mas tam5ém al$a@numéricos *n.meros e letras e caracteres especiais *par&nteses, virgulas, etc! Tam5ém podereali<ar muito mais aç6es do ue simplesmente $a<er contas! Com ele podemos processarte)tos, $iguras, $otos, sons e etc! 2as do mesmo modo ue na calculadora, o nosso programa

precisa passar ao computador as in$ormaç6es so5re os dados e as instruç6es so5re o ue $a<ercom esses dados!

7ormalmente a estrutura de um programa era dividida em dois 5locos 5em de$inidos o5loco dos dados e o 5loco das aç6es!

7o primeiro 5loco eram de$inidos os campos para arma<enar os dados do pro5lema aser resolvido! 4uando di<emos resolver um pro5lema não é s; $a<er contas, é ualuer coisaue voc& ueira $a<er com um computador, até mesmo um 'ogo!

 Imaginem ue n;s vamos $a<er um programa para controlar uma locadora de /"/s!

Precisaremos coletar e arma<enar dados so5re clientes e so5re os $ilmes! Em relação ao clienteprecisaremos sa5er o nV do cliente, o nome , o endereço, o tele$one, etc! %o5re os $ilmesprecisaremos sa5er o nV do $ilme, o título, a categoria *ação, romance, comédia!!!, aclassi$icação et(ria *livre, proi5ido para menores de D\ anos!!!, a indicação de preço delocação *promoção, normal, lançamento, série@ouro, etc! entre outros!

Page 15: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 15/86

Curso B$sico de JAVA 51

:ma ve< de$inidos os dados com os uais vamos tra5al#ar temos ue de$inir o ue$a<er com eles! B preciso de$inir os procedimentos para cada tipo de situação e escrever asinstruç6es ue o computador deve seguir dentro de cada procedimento!

Por e)emplo, se um cliente aluga um /"/ eu ten#o ue ter um procedimento pararegistrar isso no computador!

%e alguém perguntar se n;s temos um determinado $ilme para alugar, precisamos deum procedimento para $a<er uma pesuisa no nosso acervo de $ilmes para ver se n;s temosauele $ilme e se ele est( disponível ou alugado!

%e eu uero um relat;rio ue me mostre uais os $ilmes mais alugados nauele m&s,eu preciso ter de$inido um procedimento para pesuisar os dados e gerar um relat;rio!

Para ser um 5om programador, independente da Singuagem ue voc& escol#er paraescrever os seus programas, voc& ter( ue aprender e dominar dois aspectos da programaçãoo al(ori&mo e a e&r"&"ra de dado/

AL*O"$#MO: escrevendo instruç+es que os outros vão seguir :m algoritmo é uma seG&ncia de passos, 5em de$inidos, necess(rios para reali<ar uma

tare$a!

:m programa de computador se encai)a per$eitamente nesta de$inição, pois oprograma é composto por instruç6es ue serão seguidas pelo computador para atingirdeterminado o5'etivo!

2as mesmo uem não tra5al#a com computadores, lida com algoritmos o tempo todo,mesmo ue não se d& conta disso! "e'a nas -iguras DK e D dois e)emplos de algoritmos 5emcon#ecidos!

  -ig! DK – Algoritmo para $a<er 5olo de cenoura -ig! D – Algoritmo para trocar pneu

Releia a de"ini-.o de algorit#o (ue de#os no inPcio do tFpico& Ve<a (ue usa#os o ad<eti0o(em,de-inidos& +ode parecer ;rincadeira #as u#a das coisas #ais di"Pceis ) escre0er instru->esclaras e precisas se# deiar #arge# a dQ0idas&

 Ha receita de ;olo a epress.o Kat) o;ter u# cre#e lisoM pode "a?er a di"eren-a entre u#

 ;olo ;e# "eito e u# desastre total& Epress>es co#o Kat) "icar co# consistência "ir#eM ou outras#uito co#uns e# receitas pode# (uerer di?er u#a coisa para (ue# est$ escre0endo a receita e ser

D@ Pré@aueça o $orno a D\]@ :nte uma assadeiraL@ Corte as cenouras em pedaçosK@ ?ata no liuidi$icador os ovos,aç.car, ;leo e cenoura até o5ter umcreme liso@ Coloue o creme em uma tigela eacrescente o trigo e o $ermentoF@ 2isture 5emH@ Coloue a mistura na $rma

\@ Seve ao $orno para assar por Kminutos!

D! A$rou)e os uatro para$usos! Pegue o macaco na mala do carroL! Coloue o macaco do lado do pneu a

ser trocadoK! Sevante o carro! Remova os uatro para$usosF! Retire o pneu do suporteH! Coloue o estepe no suporte\! Coloue os uatro para$usosW! ?ai)e o carroD! Aperte os uatro para$usosDD! Ouarde o macaco na mala do carro

Page 16: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 16/86

Curso B$sico de JAVA 5

entendidas de "or#a di"erente por (ue# est$ lendo principal#ente se "or u#a pessoa co# poucaeperiência e# co?inhar&

J$ nas instru->es para a troca de pneu a instru-.o / 3K,e0ante o carroM4 de0eria ter sidoescrita co#o KUse o #acaco para le0antar o carroM&Você de0e estar pensando K+eraP ningu)# 0ai ser ;urro a ponto de le0antar o carro co# as prFprias

#.osLM& +ode ser #as esse ) sF u# ee#plo de algorit#o #al escrito& Se 0ocê analisar direito 0ai0er (ue a instru-.o % di? para pegar o #acaco a instru-.o ' di? para colocar o #acaco do lado do pneu "urado e a instru-.o 55 di? para guardar o #acaco& E# nenhu# lugar est$ di?endo para usar o#acaco&

Se eu ti0esse escrito este algorit#o poderia #e de"ender di?endo K7udo ;e# eu n.o deieiclaro #as 0ocê entendeu o (ue eu (uis di?er &&&M& Hu# ee#plo co#o esse at) d$ pra entender #ase# outros n.o& Ás 0e?es deia#os instru->es claras e ;e# detalhadas para algu)# reali?ar algu#atare"a e (uando 0a#os 0er a pessoa "e? tudo di"erente do (ue nFs (uerPa#os& E a pessoa <ura (ueseguiu eata#ente o (ue esta0a escrito nas instru->es &&& aP (ue perce;e#os (ue o (ue esta0a claro

 para nFs n.o era assi# t.o claro para os outros&

A nossa co#unica-.o nor#al ) cheia de coisas n.o ditas #as (ue os outros entende# co#ono ee#plo da troca de pneu& Ou ent.o de coisas ditas de u# <eito #as (uerendo di?er outro& Sedi?e#os a algu)# KCo#a u# prato de arro?M ) F;0io (ue (uere#os (ue a pessoa co#a o arro? en.o o prato&

+or)# te#os (ue ter e# #ente (ue (uando esta#os escre0endo para o co#putador esta#os passando orienta->es para o usu$rio #ais ;urro e con"uso (ue eiste& Ele le0a tudo ao p) da letra&Co# ele n.o te# essa de KVocê entendeu o (ue eu (uis di?er &&&M& +ara escre0er para o co#putador0ocê n.o pode K(uererM di?er apenas& Você te# (ue di?er eata#ente o (ue 0ocê (uer e# instru->esclaras de pre"erência curtas se# deiar nenhu#a #arge# erros de interpreta-.o co#o K,e0anteo carroM KCo#a u# pratoM e etc& Se esti0)sse#os escre0endo u# progra#a para u# co#putadorco?inheiro ao in0)s de passar u#a instru-.o KColo(ue a #istura no ta;uleiro (uando esti0er "riaMde0erPa#os di?er KColo(ue a #istura no ta;uleiro (uando atingir a te#peratura de 5@ grausCelsius&M&

 Hu#a "aculdade de in"or#$tica antes de aprender u#a linguage# de progra#a-.o de0erdade os alunos passa# #eses aprendendo a escre0er algorit#os e# pseudocFdigo u#aKlinguage#M (ue n.o eiste de 0erdade 3daP o ter#o pseudocFdigo4& U# progra#a escrito e#

 pseudocFdigo n.o pode ser co#pilado e colocado para eecutar& tudo escrito e# português#es#o si#ulando u#a linguage# de co#putador sF pra pegar o <eito& A 9igura 5 #ostra u#

ee#plo&

,eia HO7A5,eia HO7A%DIA T 3HO7A5 HO7A%4 %I#pri#a DIA

9ig 5 8 +seudocFdigo para calcular a #)dia de u# aluno

Page 17: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 17/86

Curso B$sico de JAVA 52

 Hos algorit#os do ;olo de cenoura e da troca de pneu "i?e#os u#a lista de passos si#ples para sere# eecutados e# se(Wência& +ro;le#as #ais co#pleos eige# algorit#os #aisco#pleos co# estruturas de decis.o e de repeti-.o&

 Has estruturas de decis.o testa#os u#a deter#inada condi-.o e eecuta#os 3ou n.o4 u#aou #ais instru->es dependendo do resultado do teste& Ve<a na 9igura 52 u# trecho do algorit#o do

 pneu alterado para incluir u#a estrutura de decis.o&

A instru-.o K,e0e o estepe para encher no ;orracheiroM sF ser$ eecutada se o estepe esti0er0a?io& U#a estrutura de decis.o #ais co#pleta apresenta instru->es para o caso da condi-.o testadaser 0erdadeira e para o caso dela ser "alsa& Ve<a u# ee#plo aplicado ,ocadora de DVDs&

As estruturas de repeti-.o per#ite# eecutar as #es#as instru->es di0ersas 0e?esKenugandoM u# cFdigo (ue de outra "or#a "icaria #uito grande& Ha 9igura 5 0i#os u# cFdigo

 para calcular a #)dia das notas de u# aluno& I#agine (ue (uere#os calcular a #)dia de cada alunode u#a tur#a co# 16 alunos& +ara n.o ter (ue escre0er as #es#as instru->es 16 0e?es usa#osu#a estrutura de repeti-.o& A 9igura 5 #ostra u# ee#plo&

U#a ;oa id)ia ) escre0er o pseudocFdigo antes de escre0er o progra#a& Isso a<uda a de"inir a estrutura e a lFgica do progra#a&

+egue o estepeVeri"i(ue se o estepe est$ cheioSE o estepe est$ 0a?io EH7XO ,e0e o estepe para encher no

 ;orracheiroColo(ue o estepe no suporte&&&

9ig 52 8 +seudocFdigo co# estrutura SEEH7XO

Veri"i(ue a classi"ica-.oet$ria do "il#eVeri"i(ue a idadeclienteSE 3classi"ica-.oet$ria T Kproi;ido para #enores de 5@ anosM4 e  3idadecliente Y 5@ 4EH7XO +e-a ao cliente para escolher outro "il#eSEHXO Alugue o "il#e

9ig 5@ 8 +seudocFdigo co# estrutura SEEH7XOSEHXO

EHZUAH7O 3eiste#alunoscu<a#)diaaindan.o"oicalculada4 9A[A,eia HO7A5,eia HO7A%DIA T 3HO7A5 HO7A%4 %I#pri#a DIA+asse para o prFi#o aluno

9I DO EHZUAH7O

9ig 5 8 +seudocFdigo para calcular a #)dia de cada aluno da tur#a

Page 18: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 18/86

Curso B$sico de JAVA 5@

E.#"/#/"A 0E 0A0O.: organi1ando as in-ormaç+es

Depois de estudar o pro;le#a e identi"icar (uais as in"or#a->es (ue 0a#os ter (ue coletarar#a?enar e processar precisa#os escolher (ue estruturas de dados 0a#os utili?ar&

U# progra#a ar#a?ena as in"or#a->es e# cam2os& Estes ca#pos pode# ser -i3os ou

variáveis&

Ca#pos 0ari$0eis s.o a(ueles (ue pode# ser alterados no decorrer do progra#a& Ho nossoee#plo da ,ocadora de DVDs i#agine# (ue estou rodando u# progra#a (ue 0eri"ica #euacer0o de DVDs e gera u# relatFrio in"or#ando (uantas unidades eu tenho de cada "il#e 3aslocadoras te# #ais unidades da(ueles "il#es (ue s.o #ais procurados4& Durante a eecu-.o do

 progra#a eu 0ou usar u# ca#po cha#ado Z7DE\9I,ES para "a?er a contage#& A cada 0e? (ueeu encontrar u#a cFpia da(uele "il#e (ue eu estou contando eu so#o 5 e# Z7DE\9I,ES&Zuando ter#inar de contar eu i#pri#o no relatFrio passo para o tPtulo seguinte ?ero o ca#po3?erar u# ca#po signi"ica atri;uir o 0alor ?ero a ele4 para reco#e-ar a contage# e co#e-o a contarde no0o agora 0eri"icando o no0o "il#e& A cada 0e? (ue eu ter#inar de contar u# "il#e e "or

i#pri#ir no relatFrio Z7DE\9I,ES 0ai ter u# 0alor di"erente dependendo do resultado dacontage#& +ara tra;alhar co# essa in"or#a-.o eu preciso de u# ca#po (ue #e per#ita alterar oseu conteQdo ou se<a u# ca#po 0ari$0el&

 Ho <arg.o de in"or#$tica n.o se usa "icar "alando Kca#po 0ari$0elM di?e#os si#ples#enteK0ari$0elM& As 0ari$0eis n.o ar#a?ena# apenas nQ#eros& +ode#os ter 0ari$0eis (ue tra;alhe# co#caracteres& Ho #es#o progra#a (ue 0eri"ica (uantas unidades eu tenho de cada "il#e& Eu precisode u#a 0ari$0el (ue guarde o no#e do "il#e (ue eu estou contando na(uele #o#ento& Essa0ari$0el pode ter o no#e de 7]7U,O\9I,E por ee#plo& Zuando o progra#a esti0er "a?endo acontage# do pri#eiro "il#e da lista 7]7U,O\9I,E pode conter KZuarteto 9ant$sticoM& Zuandoele ter#inar de contar e passar ao prFi#o "il#e 7]7U,O\9I,ES 0ai ter outro conteQdo KREI,EXOM& E assi# por diante a cada no0o "il#e o conteQdo da 0ari$0el 7]7U,O\9I,E #uda&

+or)# eiste# in"or#a->es (ue n.o #uda# ao longo do progra#a& Essas in"or#a->esde0e# ser ar#a?enadas e# ca#pos "ios& +or ee#plo i#agine# (ue eu (uero u# relatFrio (ue#e indi(ue (uais os clientes est.o atrasados na de0olu-.o dos DVDs para (ue eu possa tele"onar

 para eles co;rando& as eu n.o 0ou tele"onar para u# cliente (ue atrasou apenas u# ou dois dias&Ent.o eu esta;ele-o (ue o nQ#ero de dias e# atraso apFs o (ual eu 0ou tele"onar co;rando ) 13cinco4& O #eu progra#a 0ai ter u# ca#po cha#ado ,II7E\DIAS\A7RASO aonde eu 0ouregistrar o li#ite tolerado para o atraso no nosso ee#plo cinco dias& Este ca#po n.o 0ai ter o seu0alor alterado ao longo do progra#a& Ha 0erdade ) u# ca#po (ue o progra#a 0ai consultar para

co#parar co# o nu#ero de dias e# atraso do cliente& Ve<a u# ee#plo de algorit#o na 9igura %6&

Este ca#po nor#al#ente de"inido no inPcio do progra#a ) "io& Se depois eu resol0oau#entar a tolerncia para 2 dias eu tenho (ue alterar o progra#a e reco#pilar& A partir da

Calcule a (tde de dias e# atrasoSE (tde de dias e# atraso ^ ,II7E\DIAS\A7RASOEH7XO i#pri#a no relatFrio os dados do cliente

9ig %6 8 Veri"ica se o cliente ultrapassou o li#ite de atraso tolerado

Page 19: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 19/86

Curso B$sico de JAVA 5

reco#pila-.o o 0alor de ,II7E\DIAS\A7RASO ser$ 2 e# todas as 0e?es (ue eu eecutar o#eu progra#a&

+ara de"inir as 0ari$0eis e ca#pos "ios a sere# usadas no progra#a precisa#os conheceras caracterPsticas dos dados (ue 0a#os processar para poder de"inir o no#e e o tipo da 0ari$0el&

7oda ,inguage# de +rogra#a-.o te# suas regras so;re co#o de0e ser o no#e da 0ari$0el3u#as sF per#ite# #aiQsculas outras sF #inQsculas u#as li#ita# o ta#anho do no#e e# @caracteres outras pode# ter ta#anho inde"inido etc4& O Ja0a ta#;)# te# as suas (ue ire#osconhecer (uando estudar#os as 0ari$0eis no Ja0a&

Do #es#o #odo toda ,inguage# de +rogra#a-.o esta;elece ta#;)# o tipo de dados co#os (uais pode#os tra;alhar& De u#a "or#a geral os tipos #ais ;$sicos s.o: inteiros 2onto-lutuante caracteres e (ooleanos&

Se eu 0ou tra;alhar co# dados (ue sF ad#ite# nQ#eros inteiros co#o IDADE\C,IEH7EZ7DE\9I,ES ,II7E\DIAS\A7RASO etc 0ou usar 0ari$0eis do tipo IH7EIRO& Se 0ou

 processar nQ#eros (ue pode# ter casas deci#ais co#o VA,OR\,OCA[XO U,7A\A7RASOe etc usarei 0ari$0eis do tipo +OH7O 9,U7UAH7E& Se 0ou ar#a?enar in"or#a->es al"anu#)ricas co#o 7]7U,O\9I,E HOE\C,IEH7E etc criarei no #eu progra#a 0ari$0eis dotipo CARAC7ER& O Qlti#o tipo ) para 0ari$0eis (ue ar#a?ena# apenas u# entre dois 0alores:VERDADEIRO ou 9A,SO& U#a 0ari$0el do tipo BOO,EAHO pode ser usada para ar#a?enar oresultado de u#a co#para-.o& Ho ee#plo da 9igura %6 eu poderia "a?er u#a altera-.o paraar#a?enar o resultado de 3(tde de dias e# atraso ^ ,II7E\DIAS\A7RASO4 para ser usado e#outro ponto do progra#a& Ve<a na 9ig& %5&

 

& E# alguns casos pode#os agrupar as 0ari$0eis criando u#a esp)cie de super0ari$0el (uenada #ais ) do (ue u# agrupa#ento de 0ari$0eis& Co#o ee#plo pode#os citar os dados cadastraisdo cliente& Eu posso ter u#a 0ari$0el cha#ada EHDERE[O (ue agrupa dentro de si outras0ari$0eis 37I+O\,O=RADOURO 3se ) Rua A0enida Ala#eda4 HOE\,O=RADOURO

 H_ERO 7I+O\ORADIA 3casaapto4 BAIRRO CE+ etc4& Al)# disso tenho 0ari$0eis co#o HOE\C,IEH7E DA7A\HASCIEH7O SEO ES7ADO\CIVI,7E,E9OHE\RESIDGHCIA 7E,E9OHE\7RABA,`O etc& Eu posso agrupar todas essas0ari$0eis e# u#a 0ari$0el cha#ada DADOS\CADAS7RAIS& Isto "acilita a escre0er u# progra#a

 por(ue ) #ais "$cil #andar o progra#a ler os DADOS\CADAS7RAIS 3;asta u#a instru-.o deleitura4 do (ue pedir pra ele ler HOE\C,IEH7E ler DA7A\HASCIEH7O ler SEO ler

ES7ADO\CIVI, e assi# por diante& H.o s.o todas as ,inguagens de +rogra#a-.o (ue per#itecriar essas estruturas& Ho +ASCA, esses agrupa#entos de 0ari$0eis s.o cha#ados de RECORDS3registros4&

Calcule a (tde de dias e# atraso

SE (tde de dias e# atraso ^ ,II7E\DIAS\A7RASOEH7XO

 i#pri#a no relatFrio os dados do clienteES7OUROU\,II7E T VERDADEIRO

SEHXOES7OUROU\,II7E T 9A,SO

9ig %5 8 Ar#a?enando o resultado da co#para-.o

Page 20: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 20/86

Curso B$sico de JAVA %6

Co# isso ti0e#os u#a id)ia dos conceitos ;$sicos da +rogra#a-.o Estruturada& Ho prFi#o tFpico 0a#os 0er (ue as li#ita->es das ,inguagens Estruturadas aca;ara# le0ando cria-.o da +rogra#a-.o Orientada a O;<etos e 0a#os aprender o (ue ) Modulari1ação u#a dascaracterPsticas #ais #arcantes dessas linguagens&

Modulari1ação ' A(stração

Co#o 0i#os (uando te#os u# pro;le#a e (uere#os resol0êlo usando u# co#putadorescre0e#os u# progra#a atra0)s do (ual passa#os ao co#putador as in"or#a->es dos dados do

 pro;le#a e de co#o lidar co# esses dados& O grande desa"io do progra#ador ) esta;elecer u#arela-.o entre o #undo real e o #odelo (ue ele 0ai transportar para o co#putador&

 Ha nossa linguage# $s 0e?es encontra#os di"iculdade de epressar algo por (ue n.oencontra#os as pala0ras ade(uadas para isso& U#a crian-a (ue est$ aprendendo as pri#eiras

 pala0ras natural#ente 0ai ter a #aior di"iculdade e# descre0er u# aconteci#ento pois ela conta

co# u# 0oca;ul$rio pe(ueno e n.o sa;e ;e# co#o co#;inar as poucas pala0ras (ue conhece&

 Ha progra#a-.o isto ta#;)# acontece a"inal esta#os lidando co# linguagens (ue s.o0ers>es redu?idas da nossa prFpria linguage# le#;ra#* Dependendo dos recursos disponP0eis paracada linguage# de progra#a-.o pode#os ter u#a #aior ou #enor di"iculdade de reprodu?ir noco#putador as in"or#a->es (ue o;ser0a#os no #undo real relati0as ao pro;le#a (ue (uere#osresol0er& Isto geral#ente le0a0a o progra#ador a tentar adaptar o pro;le#a ao #odelo utili?ado e#u#a deter#inada linguage#& Se a linguage# escolhida "osse o ,IS+ o pro;le#a seria tradu?idoco#o listas encadeadas& Se "osse +RO,O= o pro;le#a seria trans"or#ado e# u#a cadeia dedecis>es& Assi# as li#ita->es da linguage# aca;a0a# li#itando a representa-.o do pro;le#atornando a escrita #uito di"Pcil&

Antiga#ente os pro;le#as era# #ais si#ples pois se usa0a# os co#putadores parautilidades especP"icas dentro das e#presas& HFs tPnha#os progra#as "eitos para a $reaad#inistrati0a 3(ue era# usados para auiliar os ad#inistradores nas tare"as de controle e to#adade decis>es4 tPnha#os progra#as desen0ol0idos para os setores de produ-.o de u#a indQstriatPnha#os progra#as co#erciais (ue era# usados e# ;ancos e lo<as e etc& as de u#a "or#a geralos progra#as atendia# apenas o setor para o (ual "ora# desen0ol0idos de #odo (ue era #ais "$cilentender a(uele uni0erso especP"ico e transport$lo para dentro do co#putador pois os setores n.ointeragia# tanto entre si e ne# troca0a# tanta in"or#a-.o co#o ho<e&

`o<e co# o cresci#ento e a populari?a-.o dos co#putadores e da internet a in"or#$ticaest$ presente e# todos os setores da nossa 0ida e ) pratica#ente i#possP0el "a?er (ual(uerati0idade (ue n.o dependa e# algu# grau de in"or#a->es processadas por co#putadores& `o<e n.oeiste# #ais setores isolados ne# dentro da #es#a e#presa e ne# entre as e#presas e institui->es

 pQ;licas e pri0adas& 7odo #undo troca in"or#a-.o co# todo #undo o te#po todo& Co# isso arepresenta-.o dos pro;le#as "icou ;e# #ais co#plicada por(ue al)# de entender e representar osdados e procedi#entos de u#a entidade especP"ica te#os (ue 0er co#o ela se relaciona co# asoutras entidades e co#o 0a#os "a?er para tradu?ir estes relaciona#entos para o co#putador&

Diga#os (ue e# u#a grande e#presa u# dos setores o Setor de +essoal desen0ol0eu u# progra#a (ue ar#a?ena e processa in"or#a->es so;re os "uncion$rios da(uela e#presa& Ela est$

#ais interessada nas in"or#a->es so;re a 0ida pro"issional do "uncion$rio dentro da e#presa co#odata de ad#iss.o cargo (ue ocupa sal$rio pro#o->es (ue rece;eu se te# ")rias a tirar e etc al)#de in"or#a->es cadastrais co#o no#e endere-o data de nasci#ento seo &&& as outros setores

Page 21: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 21/86

Curso B$sico de JAVA %5

ta#;)# precisa# coletar e ar#a?enar dados so;re os "uncion$rios co#o por ee#plo o Setor)dico (ue precisa de in"or#a->es especP"icas da sua $rea 3tipo sanguPneo histFrico de doen-asetc4 #as ta#;)# precisa conhecer e lidar co# as in"or#a->es cadastrais& U# outro setor o Setor de7reina#entos respons$0el por capacitar os "uncion$rios atra0)s de cursos precisa ta#;)# dein"or#a->es especP"icas de sua $rea 3nP0el de escolaridade "or#a-.o acadê#ica cursos (ue <$"ora# "eitos dentro da e#presa etc4 al)# de in"or#a->es co#uns a outros setores& E assi# por

diante 0a#os 0eri"icar (ue 0$rios setores coleta# e processa# algu#as in"or#a->es e# co#u#& Ho passado e# u#a situa-.o co#o essa era #uito co#u# a duplicidade de cFdigos&

 O Setor de +essoal de"inia e escre0ia o seu progra#a dentro do (ual tinha u# trecho decFdigo (ue era o respons$0el por incluir os dados de u# "uncion$rio (uando ele era ad#itido u#outro trecho (ue era o respons$0el por deletar os dados de u# "uncion$rio (ue ha0ia sido de#itidoetc& O Setor )dico ao escre0er o seu progra#a ta#;)# tinha (ue escre0er u# trecho de cFdigore"erente inclus.o e eclus.o de "uncion$rios& Ele n.o podia apro0eitar o peda-o de progra#a (ue

 <$ tinha sido escrito pelo Setor de +essoal por(ue os progra#as era# estan(ues: cada progra#atinha o seu ;loco de dados e o seu ;loco de instru->es e u# progra#a n.o interagia co# o outro&7a#;)# o Setor de 7reina#entos precisa0a escre0er u# cFdigo se#elhante gerando desperdPcio de

te#po e recursos& uitas 0e?es os dados de u# "uncion$rio era# alterados e# u# progra#a e n.oera# alterados e# outro de #odo (ue u# Setor registra0a (ue o "uncion$rio era solteiro en(uantooutro registra0a (ue ele era casado&

Olhando assi# n.o parece u# grande pro;le#a #as i#agine# u# siste#a enor#e co##uitas in"or#a->es sensP0eis co#o u# siste#a ;anc$rio por ee#plo& A co#unica-.o entre ossetores era 0ital e a duplicidade de cFdigo u#a porta a;erta para pro;le#as e# potencial&

+ara tentar suprir essas de"iciências surgiu a Orienta-.o a O;<etos& Ela ) geral o su"iciente para n.o i#por u# #odelo de linguage# ao progra#ador& Cada linguage# continua tendo suas prFprias caracterPsticas #as todas te# e# co#u# a #es#a #aneira de energar o #undo real etrans"or#$lo e# u# #odelo 0irtual para ser i#ple#entado no co#putador&

As ,inguagens de +rogra#a-.o Orientadas a O;<etos s.o #uito #ais "leP0eis e per#ite#u#a co#unica-.o e intera-.o entre os progra#as per#itindo u#a i#ple#enta-.o #odular& Co#elas o peda-o de progra#a escrito pelo Setor de +essoal pode ser apro0eitado por todos os de#aissetores da co#panhia& U# #es#o trecho de cFdigo u#a 0e? escrito pode ser cha#ado por 0$riosoutros progra#as gerando econo#ia e aca;ando co# o pro;le#a de in"or#a->es desencontradasespalhadas por 0$rios setores&

A coisa "unciona assi#: ) criada u#a ;i;lioteca de progra#as onde s.o ar#a?enados todos

os progra#as da e#presa& Se o Setor de +essoal precisou escre0er u# cFdigo paraincluiralterardeletar dados cadastrais de u# "uncion$rio ela coloca o cFdigoeecut$0el na ;i;lioteca de progra#as& Se eu estou escre0endo u# progra#a (ue ta#;)# precisaincluiralterardeletar dados cadastrais de u# "uncion$rio n.o preciso ter o tra;alho de escre0er o#es#o cFdigo (ue <$ "oi escrito pelo Setor de +essoal& Basta eu incluir no #eu progra#a u#ainstru-.o di?endo ao #eu progra#a para eecutar o cFdigo (ue o Setor de +essoal escre0eu e (ueest$ disponP0el na ;i;lioteca& O #eu progra#a trans"ere a eecu-.o para o progra#a do +essoal&Zuando ele ter#inar de eecutar 0olta a eecu-.o para o #eu progra#a e ele continua do ponto e#(ue esta0a (uando "e? o des0io para o progra#a do +essoal& +ara todos os e"eitos ) co#o se euti0esse escrito a(uelas instru->es dentro do #eu cFdigo& Dessa "or#a a econo#ia e con"ia;ilidadedos progra#as ) #uito #aior&

Agora i#agine (ue co# o cresci#ento da ;i;lioteca de progra#as e# u# dado #o#ento eutenho '6 progra#as di"erentes "a?endo #en-.o a esse progra#a de cadastra#ento dentro dos seus

Page 22: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 22/86

Curso B$sico de JAVA %%

cFdigos& Suponha (ue aconte-a u#a #udan-a na legisla-.o (ue de"ine as regras para processa#ento de dados "uncionais de e#pregados e (ue co# isso eu e tenha (ue "a?er algu#aaltera-.o neste progra#a para re"letir a #udan-a& Basta eu #udar a(uele pe(ueno progra#inha do+essoal 3respons$0el pelo cadastro dos dados do "uncion$rio4 (ue auto#atica#ente todos os '6

 progra#as ta#;)# estar.o a<ustados no0a legisla-.o&

Isto ) possP0el por(ue todas as ,inguagens Orientadas a O;<eto o"erece# suporte #odulari?a-.o&

Disse#os (ue para ser u# ;o# progra#ador na )poca das ,inguagens de +rogra#a-.oEstruturadas era preciso conhecer e do#inar o algorit#o e a estrutura de dados& Co# o surgi#entoda +rogra#a-.o Orientada a O;<etos o ;o# progra#ador precisa al)# do algorit#o e da estruturade dados conhecer e sa;er aplicar a a(stração e a modulari1ação&

Modulari1ação ) a t)cnica de di0idir u# grande pro;le#a e# partes #enores e cada u#adelas e# partes ainda #enores at) (ue cada u#a se<a su"iciente#ente si#ples de resol0er&A(stração ) o oposto: ) a capacidade de #anter o "oco nas partes #aiores do pro;le#a e0itando

olhar para a ri(ue?a de detalhes das partes #enores& Esta ) u#a de"ini-.o ;e# resu#ida& Va#oseplicar #elhor 

Zuando escre0e#os u# progra#a te#os (ue decidir se 0ale #ais a pena colocar todo ocFdigo e# u# Qnico #Fdulo ou se ) #elhor di0idPlo e# #Fdulos #enores& U# pro;le#a si#plesco#o calcular as #)dias dos alunos de u#a sala ou i#pri#ir u# relatFrio contendo a rela-.o declientes atrasados pode tran(uila#ente ser resol0ido usando u# Qnico progra#a& Você consegueenergar e escre0er todos os passos necess$rios dentro do #es#o ;loco de progra#a se#di"iculdade& +ara pro;le#as #aiores e #ais co#pleos por)# isto ) #uito si#plista& #edida(ue o pro;le#a cresce 0ai "icando #ais di"Pcil 0isuali?ar todos os detalhes ao #es#o te#po&

A solu-.o para lidar co# a co#pleidade ) a #odulari?a-.o: nFs di0idi#os o pro;le#a e#su;pro;le#as depois no0a#ente e# su;su;pro;le#as e assi# por diante at) (ue os pro;le#asindi0iduais s.o pe(uenos o ;astante para tornar "$cil lidar co# eles& U#a 0e? (ue resol0e#os u#desses peda-os 3su;pro;le#as4 n.o pensa#os #ais nos detalhes da(uele peda-o #as pensa#osnele co#o u#a das pe-as de u#a parte #aior&

Va#os analisar estes dois conceitos atra0)s de u# ee#plo& I#agine (ue u# "a;ricante decarros deter#inou (ue u#a e(uipe de engenheiros pro<ete u# no0o carro& O engenheiroche"e 0ai

 pensar no pro;le#a tentando i#aginar o carro co#o u# todo: o desenho da carroceria o nQ#ero de portas o ta#anho e a locali?a-.o do #otor a (uantidade e ta#anho das rodas e etc& +ara ele o

#otor ) apenas u#a das pe-as do carro (ue ele est$ desenhando& Ele n.o precisa se preocupar e#sa;er co#o 0ai ser "eito o #otor ele sF precisa sa;er (ue o carro 0ai ter u# #otor&

+or outro lado u# outro engenheiro cu<a tare"a ) <usta#ente pro<etar o #otor 0ai se preocupar e# detalhar as 0$rias partes (ue co#p>e# u# #otor: os cilindros o #ecanis#o dein<e-.o o car;urador a ;o;ina etc& +ara ele o #otor n.o ) u# Qnico ;loco ) u# co#pleocon<unto de pe(uenas partes& U#a dessas partes ) a 0ela 3a 0ela ) o co#ponente (ue gera u#a"aPsca para produ?ir a (uei#a do co#;ustP0el co#o nos is(ueiros a g$s4&

Eiste u# engenheiro 3pro0a0el#ente e# outra "$;rica 8 u#a "$;rica de 0elas paraauto#F0eis4 (ue est$ tra;alhando e# desen0ol0er a 0ela& Ele energa a 0ela co#o u# arte"ato

co#pleo co# #Qltiplas partes& Ele pode estar reali?ando pes(uisas para deter#inar eata#ente(ual o #elhor tipo de #etal a ser usado para os contatos ou (ual o #elhor #aterial cer#ico a sere#pregado no isola#ento da 0ela& E o #es#o est$ acontecendo co# outras partes do carro&

Page 23: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 23/86

Curso B$sico de JAVA %'

De 0olta ao engenheiroche"e para ele as rodas s.o u#a das partes do carro& Ele sa;e (ue ocarro te# (uatro rodas e u# estepe e sF precisa sa;er (ual o ta#anho e espessura das rodas para

 poder pro<etar o espa-o correspondente na carroceria do carro& as algu# outro engenheiro l$e#;aio na cadeia produti0a de0e estar e#pregando os seus dias pensando na #elhor co#posi-.o(uP#ica para produ?ir a ;orracha dos pneus& +ara ele os pneus s.o u#a coisa #uito co#plea

cheias de detalhes a sere# resol0idos&

Isso ) #odulari?a-.o&

A "$;rica de carros pro0a0el#ente n.o 0ai "a;ricar pneus 0ai co#pr$los de u# "a;ricantede pneus e para ela o pneu ) apenas u# co#ponente& Ela n.o se preocupa co# os detalhes desteco#ponente& U# dos engenheiros da "$;rica de carros ) o respons$0el pelas rodas& Ele se a;straidos detalhes da "a;rica-.o de u# pneu para poder se concentrar no pro<eto da roda& Ele n.o est$

 preocupado e# sa;er co#o se produ? u# pneu u#a carca-a ou u# para"uso& Ele est$ preocupadoapenas e# <untar essas pe-as para "a?er a roda&

Isso ) a;stra-.o&

O engenheiroche"e (ue est$ desenhando o carro co#o u# todo a;strai dos detalhest)cnicos das rodas e do #otor e se concentra no desenho do carro& Ele sF est$ interessado e# sa;ero ta#anho do #otor e das rodas para poder "a?er o seu desenho de acordo& O #es#o acontece co#todos os outros co#ponentes do carro& En(uanto algu)# est$ concentrado e# desenhar o espa-ointerno do carro te# algu# outro tra;alhando no #aterial do re0esti#ento dos ;ancos do carro&

A (uest.o ): se "or 0isto e# todos os seus inQ#eros detalhes u# carro te# tantas partes (ueseria i#possP0el u#a sF pessoa conhecer todos os detalhes ao #es#o te#po& A ra?.o pela (ual oscarros s.o pro<etados e construPdos co# sucesso ) (ue os engenheiros usa# #odulari?a-.o ea;stra-.o& Eles di0ide# o carro e# #Fdulos independentes 3rodas #otor caia de #archas

 ;ancos etc4 e atri;ue# a pessoas di"erentes o tra;alho de desen0ol0er cada #Fduloindependente#ente& Zuando u# #Fdulo est$ construPdo eles usa# a;stra-.o& Eles energa#a(uele #Fdulo co#o u# si#ples co#ponente a ser usado para construir co#ponentes #aisco#pleos&

odulari?a-.o e a;stra-.o portanto co#ple#enta# u# ao outro& odulari?a-.o ) o processo de di0idir partes #aiores 3pro;le#as por ee#plo4 e# partes #enores en(uantoa;stra-.o ) a ha;ilidade de ignorar os detalhes para poder "ocar no (uadro geral&

 Ho prFi#o tFpico 0a#os "inal#ente aprender o conceito de 4lasses e O()etos (ue ) a ;ase de todas as ,inguagens de +rogra#a-.o Orientadas a O;<etos e 0a#os 0er co#o tudo isto seencaia para desenhar u# progra#a&

Page 24: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 24/86

Curso B$sico de JAVA %/

4lasses e O()etos: tra1endo o mundo real 2ara dentro do com2utador

J$ 0i#os (ue e# in"or#$tica 0irtual ) u#a representa-.o co#putadori?ada de algo do#undo real& A +rogra#a-.o Orientada a O;<etos "oi criada para tentar aproi#ar o #undo real do#undo 0irtual: a id)ia "unda#ental ) tentar si#ular o #undo real dentro do co#putador& +ara issousa#os classes e o;<etos para tentar si#ular dentro do co#putador tudo a(uilo (ue 0e#os no

#undo real&

Olhe sua 0olta& Você ) capa? de identi"icar 0$rios tipos de o;<eto: u#a #esa u#a cadeirau#a tele0is.o u# cachorro u#a l#pada u#a ;icicleta u#a "or#iga &&& 7odos esses o;<etos

 possue# caracterPsticas 3atri;utos4& +or ee#plo u# cachorro te# os seguintes atri;utos: no#era-a idade etc& J$ u#a ;icicleta te# outros atri;utos: #arca nu#ero de #archas cor etc& U#al#pada te# co#o atri;utos 3caracterPsticas4 #arca do "a;ricante potência 36 b 566 b &&40oltage# 3556 ou %%6 V4 tipo 3incandescente "luorescente4 e assi# por diante& Os o;<etos ta#;)#

 possue# co#porta#entos ou se<a pode# reali?ar a->es& U# cachorro pode latir pode ;alan-ar ora;o pode co#erN u#a ;icicleta pode "rear pode acelerar pode #udar de #archaN u#a l#pada

 pode acender ou pode apagar&

J$ posso ou0ir 0ocê di?endo KCachorro *L* as cachorro n.o ) o;<eto &&&M 0erdade #as para a +rogra#a-.o Orientada a O;<etos tudo (ue possui atri;utos e co#porta#entos ) consideradou# o;<eto& Se "sse#os escolher u#a outra pala0ra para designar a(uilo (ue te# atri;utos eco#porta#entos poderPa#os tal0e? escolher a pala0ra KseresM& 7erPa#os ent.o a +rogra#a-.oOrientada a Seres& as aP todo #undo iria recla#ar: KE desde (uando ;icicleta ) u# ser*M 7al0e?"osse #ais indicado usar a pala0ra KcoisaM (ue ) ;e# a;rangente& as pense ;e# (ue# ) (ue iriale0ar a s)rio u#a ,inguage# de +rogra#a-.o Orientada a Coisas *

En"i# escolhera# a pala0ra Ko;<etoM e pronto& De0e#os ter e# #ente (ue o;<eto ) tudoa(uilo (ue possui atri;utos e co#porta#entos& U#a ;oa regra para 0er se a(uilo (ue esta#osolhando pode ser considerado u# o;<eto ) perguntar se ele pode ser u#a coisa& Se ele ) u#a coisaent.o ele ) u# o;<eto&

E# +rogra#a-.o Orientada a O;<etos ) preciso u#a ;oa dose de a;stra-.o e i#agina-.o& claro (ue a l#pada n.o reali?a a a-.o de acender e apagar #as na 0is.o de o;<etos ) (uase co#ose cada o;<eto "osse u# ser 0i0o capa? de reali?ar a->es& Ent.o se eu digo ao o;<eto l#padaKAcenda LM ele entende o (ue eu (uero e acende& Se eu digo a u#a ;icicleta K9reie LM ela sa;e o (ue) preciso "a?er e ela "reia& Ha 0ida real os o;<etos n.o entende# o (ue "ala#os e n.o reali?a# eles#es#os as a->es #as no #undo 0irtual si#& Cada representa-.o de u#a KcoisaM no #undo real setrans"or#a no #undo 0irtual e# u# o;<eto u# Kser pensanteM dotado de caracterPsticas prFprias

3atri;utos4 e capa? de eecutar a->es 3co#porta#entos4 (ue nFs pedi#os a eles para eecutar& Elesn.o "a?e# (ual(uer a-.o (ue nFs pedi#os so#ente a(uelas (ue eles sa;e# eecutar 3u# l#padan.o sa;e acelerar ou latir ela sa;e apenas acender e apagar4&

Eiste u#a linguage# cha#ada U, (ue "oi criada para a<udar a desenhar pro;le#as do#undo real dentro do #undo 0irtual do co#putador& A U, ) u#a linguage# co#posta desP#;olos e desenhos (ue usa#os para representar as classes e o;<etos (ue energa#os no #undoreal& A 9igura %% #ostra co#o seria# representados o cachorro a l#pada e a ;icicleta usando ossP#;olos de U,&

Page 25: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 25/86

Curso B$sico de JAVA %1

A parte de ci#a do desenho cont)# o no#e da(uilo (ue esta#os representando a seguir0ê# os atri;utos e por "i# as a->es& Ha +rogra#a-.o Orientada a O;<etos as a->es (ue u#deter#inado o;<eto pode reali?ar s.o cha#adas de métodos& #eio es(uisito #as "oi o no#e (ueescolhera#& Cada ra#o de ati0idade te# o seu <arg.o e ) #elhor a gente ir logo se acostu#ando

co# ele& Da(ui pra "rente (uando eu #e re"erir aos #)todos de u# o;<eto estarei #e re"erindo sa->es (ue a(uele o;<eto ) capa? de reali?ar& Zuando eu (uero (ue u# o;<eto reali?e u#adeter#inada a-.o 3#)todo4 eu "a-o u#a c5amada de método6 +ara "a?er isso eu preciso sa;er(uais s.o os no#es dos #)todos (ue a(uele o;<eto ) capa? de i#ple#entar 3eecutar4& H.o adiantaeu 0irar para o o;<eto Cachorro e di?er K#ea o ra;oM ou Ka;ane o ra;oM (ue ele n.o 0ai entender&Eu preciso di?er eata#ente co#o est$ de"inido: K;alan-arRa;oM e aP si# ele 0ai entender eco#e-ar a a;anar o ra;o& H.o posso di?er para a ;icicleta Kpasse a #archaM tenho (ue usarK#udararchaM por(ue ) assi# (ue "oi de"inido&

Alguns #)todos co#o acender e apagar s.o #uito si#ples e ;asta cha#ar#os o #)todoKacenderM (ue a l#pada acende& as outros s.o #ais co#pleos e re(uere# algu#a especi"ica-.oa #ais al)# do no#e do #)todo apenas& +or ee#plo se eu disser ;icicleta 3cha#ar o #)todo4K#udararchaM co#o ) (ue ela 0ai sa;er para (ual #archa eu (uero (ue ela #ude* Eu tenho (ue

 passar para ela algu#a in"or#a-.o adicional& Heste ee#plo eu preciso especi"icar o nQ#ero da#archa dese<ada& Essas in"or#a->es adicionais (ue s 0e?es te#os (ue passar (uando cha#a#osu# #)todo s.o cha#adas de 2ar7metros& Assi# eu cha#aria o #)todo #udararcha do o;<eto

 ;icicleta assi#: #udararcha3'4& O nu#ero ' dentro dos parênteses ) o par#etro (ue o #)todore(uer para poder eecutar a a-.o correta#ente& Heste caso eu estou pedindo ;icicleta (ue #ude

 para a ' #archa& 7oda a de"ini-.o de #)todos inclui a lista de par#etros entre parênteses& Se alista esti0er 0a?ia ) sinal de (ue a(uele #)todo n.o re(uer nenhu# par#etro co#o por ee#ploKacenderM e KapagarM& es#o (ue n.o rece;a par#etros o #)todo precisa colocar os parênteses

ao lado do no#e& A 9ig %' #ostra co#o "icaria a especi"ica-.o do cachorro ;icicleta e l#padaseguindo esta si#;ologia&

Cachorrocor ra-aidade

latir  ;alan-arRa;oco#er 

Bicicleta#arcanu#archascor 

"rear acelerar #udararcha

,#pada#arca

 potência0oltage#

acender apagar 

9ig %% 8 Representa-.o inicial de cachorro ;icicleta e l#pada e# U,

CachorroString cor String ra-aint idade

latir3 4 ;alan-arRa;o3 4

co#er3 4

BicicletaString #arcaint nu#archasString cor 

"rear3percent4acelerar3percent4

#udararcha3nu#archa4

,#padaString #arcaint potênciaint 0oltage#

acender3 4apagar3 4

9ig %' 8 Representa-.o correta dos #)todos

Page 26: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 26/86

Curso B$sico de JAVA %

Ve<a (ue apro0eita#os para especi"icar ta#;)# dentro dos #)todos "rear e acelerar u# par#etrocontendo u# percentual de di#inui-.o ou de acr)sci#o de 0elocidade& Assi# "rear35664 indicaria ;icicleta (ue ) para ela parar total#ente ao passo (ue "rear3164 indicaria para redu?ir para a#etade da 0elocidade atual& J$ acelerar3%64 pro0ocaria u# au#ento de %6 na 0elocidade da

 ;icicleta& U#a cha#ada ao #)todo co#er3 4 dirigida ao cachorro seria o su"iciente para "a?êloco#er n.o ha0endo necessidade de passar nenhu# par#etro& Ali$s ne# (ue eu (uisesse passar u# par#etro isso seria possP0el por(ue na de"ini-.o do #)todo co#er ele "oi de"inido co#o n.otendo par#etros 3n.o h$ nada dentro dos parênteses na de"ini-.o do #)todo4&

Os o;<etos pode# se relacionar uns co# os outros& Dentro do conceito de a;stra-.o (ue0i#os no tFpico anterior eu posso ter u# ou #ais o;<etos "a?endo parte da rela-.o de atri;utos deu# o;<eto& Ho caso do pro<eto do carro eu posso ter u# o;<eto KcarroM (ue te# entre as suascaracterPsticas atri;utos si#ples co#o #arca cor ano de "a;rica-.o tipodeco#;ustP0el 3$lcoolgasolina ou "le4 e etc& as ta#;)# tenho atri;utos co#postos co#o #otor roda ;ancos e etc&KU) #as #otor ) caracterPstica *M si#& Eu posso ter u# carro se# #otor n.o posso* I#agine#

(ue eu estou descre0endo u# da(ueles carrinhos de ;rin(uedos de par(ue de di0ers>es& Ele pareceu# carro de 0erdade te# rodas e tudo e "ica girando piscando os "arFis e etc #as n.o te# #otor&Ent.o se eu 0ou "a?er u#a representa-.o 0irtual desse carro no #eu co#putador eu n.o 0ou colocar (ue ele te# #otor por(ue ele n.o te#& J$ o carro (ue est$ sendo pro<etado na "$;rica 0ai ter #otorent.o eu preciso colocar entre as suas caracterPsticas (ue ele te# #otor& +ara isso eu uso u# o;<etodo tipo #otor& E ta#;)# (uatro o;<etos do tipo roda& E assi# por diante& Eu n.o preciso #e

 preocupar e# descre0er as caracterPsticas e #)todos de u# o;<eto do tipo #otor por(ue algu)# <$te0e esse tra;alho3#odulari?a-.o4& Eu posso si#ples#ente pegar esse o;<eto e incluPlo na rela-.ode atri;utos do #eu o;<eto 3a;stra-.o4& A 9igura %/ #ostra esse relaciona#ento entre dois doso;<etos (ue esta#os descre0endo a ;icicleta e a l#pada&

Da #es#a "or#a (ue eu ee#pli"i(uei o conceito de #)todos di?endo (ue eu cha#a0a o#)todo co#er3 4 do cachorro para "a?êlo co#er e o #)todo acender3 4 da l#pada para "a?êlaacender o #es#o acontece entre os o;<etos Ou se<a os o;<etos se co#unica# entre si& Ho caso da9igura %/ eu estou descre0endo u#a ;icicleta co# "arol& Se est$ escurecendo eu digo a ;icicleta

 para acender o "arol atra0)s de u#a cha#ada ao #)todo acender9arol3 4& O #)todo ) u#a a-.oent.o a ;icicleta 0ai reali?ar os passos necess$rios para cu#prir a(uela a-.o& Entre esses passos est$incluPda u#a cha#ada ao #)todo acender3 4 do "arol 3(ue ) u#a l#pada e portanto sa;e acender4&Ou se<a eu pe-o ;icicleta para acender o "arol cha#ando o #)todo acender9arol3 4 da ;icicleta e

ela por sua 0e? 0ira pro o;<eto "arol e pede pra ele acender cha#ando o #)todo acender3 4 do "arol& H.o sou e# (ue# dou a orde# de acender ao "arol& Eu dou a orde# para a ;icicleta e ela ) (ue#0ira para o "arol e d$ orde# para ele acender& #eio doido n)* as ) assi# (ue acontece&

Bicicleta#arcanu#archascor "arollu?De9reio

"rear3percent4acelerar3percent4#udararcha3nu#archa4

 9ig %/ 8 O;<etos 3"arol e lu?De9reio4 "a?endo parte da descri-.o de outro

,#pada#arca

 potência0oltage#

acender3 4apagar3 4

Page 27: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 27/86

Curso B$sico de JAVA %2

Agora (ue <$ sa;e#os o (ue s.o o;<etos 0a#os entender o (ue s.o 4lasses& Classe ) adescri-.o dos atri;utos e #)todos (ue u# deter#inado o;<eto pode ter& Olhe de no0o as 9iguras %%%' e %/& O (ue nFs "i?e#os ao usar esses desenhos do U,* H.o "oi <usta#ente u#a descri-.o deatri;utos e #)todos* Eata#ente& De onde se conclui (ue o (ue nFs "i?e#os at) agora "oi de"inirclasses& +or ee#plo de"ini#os a classe Cachorro 39ig& %'4& Atra0)s da de"ini-.o dessa classe eu

"i(uei sa;endo (ue u# cachorro te# ra-a ou se<a (ual(uer cachorro (ue eistir 0ai ter u#a ra-a& Esei (ue se eistir algu# cachorro ele 0ai sa;er latir por(ue na de"ini-.o da classe Cachorro est$de"inido o #)todo latir3 4& as por en(uanto eu tenho apenas u#a de"ini-.o& Eu <$ sei o (ue u#cachorro "a? #as cadê os cachorros pra eu poder #andar eles latire# co#ere# ou ;alan-are# ora;o*

 Ho nosso #undo 0irtual eu preciso KcriarM u# o;<eto de u#a deter#inada classe para ele passar a eistir& Ho #undo real eles <$ eiste# 0a#os i#aginar (ue en(uanto nFs esta#os a(uiestudando te# dois cachorros l$ na rua disputando u# osso& U# deles ) o re e o outro ) o totF&Co#o eu "a-o para represent$los no #undo 0irtual* E# pri#eiro lugar eu tenho (ue ter u#ade"ini-.o da classe Cachorro& Of isso nFs <$ "i?e#os est$ l$ na 9igura %'& Agora eu estou

escre0endo u# progra#a e (uero interagir co# esses dois cachorros re e totF& +ois ;e# e#algu# ponto do #eu progra#a eu 0ou escre0er: KDeclaro (ue a partir deste #o#ento passa aeistir o o;<eto da classe Cachorro cha#ado re sendo (ue ele ) da ra-a +astor Ale#.o e te# 'anos de idadeM& E logo a seguir eu escre0o : KDeclaro (ue a partir deste #o#ento passa a eistir oo;<eto da classe Cachorro cha#ado totF sendo (ue ele ) da ra-a +e(uinês e te# 5 ano de idadeM& claro (ue n.o 0a#os escre0er assi# dessa #aneira eiste# u# co#ando e u#a "or#a correta de seescre0er #as a id)ia ) essa&

Agora o #eu progra#a te# dois o;<etos da classe Cachorro& A#;os possue# as #es#ascaracterPsticas e sa;e# "a?er as #es#as coisas #as cada u# te# a sua prFpria cFpia de atri;utos eco#porta#entos& A classe Cachorro descre0e u# atri;uto cha#ado idade& Isto signi"ica (ue ao criar o o;<eto re esse o;<eto te# u# ca#po cha#ado idade (ue ar#a?ena o 0alor '& Ao criar o o;<etototF esse o;<eto ta#;)# te# u# ca#po cha#ado idade (ue no caso do totF ar#a?ena o 0alor 5&Se o #eu progra#a usar a 0ari$0el idade assi# sF escre0endo idade e #ais nada co#o 0a#ossa;er se ) u#a re"erência idade do re ou idade do totF* +ortanto ao usar u#a 0ari$0el de u#o;<eto e# u# progra#a te#os (ue associ$la ao o;<eto especP"ico (ue (uere#os& 9a?e#os issoescre0endo o no#e do o;<eto #ais u# ponto e #ais o no#e do ca#po& Assi# se o #eu progra#a

 pede para #ostrar na tela totF&idade ele 0ai #ostrar o 0alor 5& Se eu pedir re&idade 0ai aparecer o0alor '& A partir do #o#ento da cria-.o desse dois o;<etos eu passei a ter no #eu progra#a 0ari$0eis para poder #anipular: re&cor re&ra-a re&idade totF&cor totF&ra-a e totF&idade&

A #es#a coisa acontece co# os #)todos& Se eu cha#ar o #)todo latir3 4 si#ples#enteco#o ) (ue o progra#a 0ai sa;er se ) u# co#ando para o re ou para o totF* A(ui ta#;)# eutenho (ue dirigir a a-.o (uele o;<eto especP"ico e "a?e#os isso do #es#o #odo (ue "i?e#os co#as 0ari$0eis escre0endo o no#e do o;<eto #ais u# ponto e #ais o no#e do #)todo& Agora eu

 posso direcionar as #inhas ordens escre0endo re&;alan-arRa;o3 4 e totF&latir3 4& A partir do#o#ento da cria-.o desses dois o;<etos eu passei a ter no #eu progra#a #)todos (ue eu possocha#ar: re&latir3 4 re&;alan-arRa;o3 4 re&co#er3 4 totF&latir3 4 totF&;alan-arRa;o3 4 etotF&co#er3 4&

 Hu# progra#a para a<udar a sa;er (uando esta#os nos re"erindo a u#a classe e (uandoesta#os nos re"erindo a u# o;<eto escre0e#os o no#e da classe co# a pri#eira letra e#

#aiQscula co#o e# Cachorro& E (uando esta#os usando u# o;<eto da(uela classe escre0e#ostudo e# #inQsculas co#o e# re e totF& U# o;<eto ) cha#ado de inst7ncia de classe& Assi# re) u#a instncia da classe Cachorro e totF ) u#a outra instncia da #es#a classe&

Page 28: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 28/86

Curso B$sico de JAVA %@

Deu pra entender* A di"eren-a entre classe e o;<eto ) sutil ) nor#al n.o entender assi# dei#ediato& Hote (ue u#a classe n.o te# 0ida ) sF u# conceito& as os o;<etos 3cachorro l#pada4

 possue# 0ida 3of l#pada nor#al#ente n.o te# 0ida #as no #undo 0irtual ela te# &&&4& A classeCachorro n.o pode latir co#er etc ela apenas especi"ica e de"ine o (ue ) u# Cachorro& aso;<etos do tipo Cachorro ou se<a instncias da classe Cachorro 3re totF4 estes si# pode# latir

co#er e ;alan-ar o ra;o&

Agora sF "alta entender co#o isso tudo se aplica progra#a-.o& Va#os l$&

Os #es#os princPpios de #odulari?a-.o e a;stra-.o (ue 0i#os no tFpico anterior s.ousados no desen0ol0i#ento de u# so"tare& Ao olhar para u# pro;le#a co#pleo nFs tenta#osK(ue;r$loM e# su;co#ponentes (ue se<a# #ais "$ceis de ser codi"icados 3progra#ados4 e (ue nFsire#os tratar co#o entidades independentes& Depois de criados esses su;progra#as nFs ire#osus$los co#o se "osse# si#ples pe-as de u# progra#a #aior se# nos preocupar#os co# suasco#pleidades internas&

Se esti0)sse#os tentando "a?er u# progra#a (ue i#ple#entasse no co#putador as "un->esde u# carro tentarPa#os "a?er co#o os engenheiros da "$;rica de carros& Eles olhara# para o carroe 0ira# (ue o carro era u# o;<eto co#posto de outros o;<etos #enores 3#otor roda etc4& +ri#eiroeles construPra# esses o;<etos #enores e depois os usara# co#o pe-as para #ontar o o;<eto #aior:o carro& HFs ta#;)# ao in0)s de escre0er#os u# Qnico e enor#e progra#a contendo todos osinQ#eros detalhes da constru-.o do carro 0a#os tentar di0idir o progra#a e# #Fdulos #enores eescre0er esses #Fdulos pri#eiro& Assi# tere#os u# #Fdulo para o #otor outro para a roda outro

 para o ;anco e assi# por diante& Ho "inal 0a#os pegar esses #Fdulos prontos e 0a#os us$lo paraescre0er o progra#a principal (ue #onta o carro& O progra#a do carro agora 0ai "icar #uito "$cilde ser escrito por(ue ele ;asica#ente te# (ue pegar u# #otor (uatro rodas os ;ancos acarroceria e #ont$los&

Esses #Fdulos na +rogra#a-.o Orientada a O;<etos s.o as classes& Ent.o para escre0eru# progra#a co#posto de 0$rios #Fdulos na 0erdade eu 0ou escre0er classes& Hor#al#ente u#

 progra#a ) co#posto de u# #Fdulo principal (ue cha#a outros #Fdulos os (uais por sua 0e?cha#a# outros #Fdulos e assi# por diante& Esse progra#a principal ) a classe principal (ue usaoutras classes (ue ta#;)# usa# outras classes&

U#a classe ) u#a descri-.o de atri;utos e #)todos& O progra#a 3classe4 co#e-a co# ade"ini-.o dos atri;utos e depois descre0e os #)todos& Os #)todos co#p>e# a parte do progra#aaonde a a-.o ) eecutada& dentro dos #)todos (ue eu 0ou descre0er as instru->es os passos (ue o

co#putador 0ai eecutar e# cada situa-.o& A parte inicial das de"ini->es de 0ari$0eis ) #aisdescriti0a: ) a(ui (ue eu 0ou de"inir (ue tipo de atri;utos eu 0ou ter no progra#a e (uais s.o eles&+ortanto ) a(ui (ue eu 0ou di?er (ue su;classes 3#Fdulos #enores4 a #inha classe 0ai usar& asa(ui ele 0ai sF de"inir n.o 0ai usar& +ara usar te#os (ue ter cha#adas de #)todos de o;<etos e issosF 0ai acontecer dentro dos #)todos do nosso progra#a (ue ) onde a a-.o se desen0ol0e&

+ortanto eu de"ino as classes na parte inicial das de"ini->es de 0ari$0eis& as as classes n.o pode# ser usadas pois co#o 0i#os elas n.o eecuta# a->es sF os o;<etos "a?e# isso& Ent.o eutenho (ue criar os o;<etos das classes (ue de"ini#os (ue iria# ser utili?adas& A partir da cria-.o doso;<etos a a-.o pode co#e-ar a acontecer pois os o;<etos pode# reali?ar na pr$tica a(uelas a->es(ue a classe de"iniu na teoria&

  Agora u# detalhe i#portante: (uando eu crio u#a instncia de u#a classe ou se<a (uandoeu crio u# o;<eto eu estou tra?endo para dentro do #eu progra#a a possi;ilidade de usar a(ueles

Page 29: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 29/86

Curso B$sico de JAVA %

atri;utos e #)todos& as n.o (uer di?er (ue eles 0.o ser auto#atica#ente usados& Se eu estouescre0endo u# progra#a para u# clPnica 0eterin$ria #eu progra#a pode de"inir (ue 0ai usar aclasse Cachorro& E# u# deter#inado #o#ento do #eu progra#a eu crio u#a instncia da classeCachorro 3re por ee#plo4& Ha de"ini-.o da classe Cachorro est.o os #)todos latir3 4

 ;alan-arRa;o3 4 e co#er3 4& Isto n.o (uer di?er (ue no #o#ento da cria-.o esses #)todos 0.o sereecutados& Eles est.o l$ disponP0eis #as esperando para sere# cha#ados& SF se o #eu progra#a

 principal usar o co#ando re&latir3 4 ) (ue a instncia criada 0ai poder entrar e# a-.o eecutando o#)todo latir3 4&

+ara encerrar este tFpico u#a Qlti#a pergunta: se co#o disse#os na +rogra#a-.oOrientada a O;<etos escre0er u# progra#a signi"ica escre0er classes e su;classes e su;su;classes ent.o por(ue n.o esta#os "alando de +rogra#a-.o Orientada a Classes* Si#ples& (ue asclasses n.o pode# "a?er nada sF os o;<etos pode#& Co#o progra#ar ) a arte de "a?er acontecer esF os o;<etos pode# "a?er acontecer ent.o "icou sendo +rogra#a-.o Orientada a O;<etos&

Co# isto encerra#os esta parte conceitual dos "unda#entos da progra#a-.o& Eiste##uitos outros conceitos a sere# 0istos dentro da +rogra#a-.o Orientada a o;<etos co#o #)todo

 principal construtores so;recarga e outros #as 0ere#os estes conceitos #edida (ue "or#osconhecendo e aplicando os co#andos e estruturas do Ja0a&

4riando e e3ecutando um 2rograma no console

 /epois de tanto 5l( 5l( 5l( vamos $a<er uma atividade pr(tica para vermos o Java emação! Como vimos, para e)ecutar um programa Java voc& precisa ter uma J"2 *2(uina"irtual Java instalada no seu computador! Para veri$icar se voc& tem $aça o seguinte

 se seu computador $or +indo1s• "( em Iniciar  Programas  Acess;rios  Prompt do /=%

 se se seu computador $or Sinu)• "( em Iniciar  E)ecutar Comando  digite 0onole e tecle E7TER

Em am5os os casos, vai aparecer uma 'anela com $undo preto e um cursor piscando!Essa 'anela é uma simulação daueles computadores antigos de uando ainda não e)istiam osso$t1ares gr($icos! Esta 'anela é c#amada de conole e é muito apropriada para peuenostestes e veri$icação de con$iguração! %empre ue, nesta apostila ou em ualuer outro manualou tutorial, $or pedido para voc& a5rir um console, é para repetir esse procedimento!

?om, depois de a5erto o console, digite o comando a5ai)o e tecle E7TER  java -version

Repare ue não tem espaço entre o sinal de menos e a palavra 8version9! Esse comandoserve para veri$icar ual a versão da J"2 ue est( instalada no seu computador! %e a J"2estiver instalada, ela ir( responder mostrando na tela uma *ou mais lin#a*s, começando por

   java version “1..!-!"” 

=s n.meros podem variar dependendo da versão ue voc& tiver! %e a resposta $or umamensagem de erro di<endo ue 1a!a é um comando descon#ecido, é porue não tem J"2instalada! Para instalar a J"2 é s; ir na p(gina da %un *desenvolvedora do Java e $a<er odo1nload do aruivo de instalação correspondente ( sua plata$orma *+indo1s, Sinu), etc! Asvers6es para +indo1s, Sinu) e %olaris podem ser encontradas em#ttp^^'ava!sun!com^'avase^do1nloads^inde)!'sp 

Page 30: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 30/86

Curso B$sico de JAVA '6

%e voc& uiser apenas rodar programas JA"A ue '( estão prontos, 5asta escol#er aversão 8JRE 2 U,da&e 39! %e voc& uiser escrever e compilar seus pr;prios programas,escol#a a versão 8J45 2 U,da&e 39!

/epois de concluído o do1nload, se sua m(uina $or +indo1s, 5asta clicar duas ve<esso5re o instalador e seguir as instruç6es! %e $or Sinu) é um pouco mais complicado, peça

a'uda a alguém mais e)periente!

:ma ve< instalada a J"2 *ou se a sua '( estava instalada a5ra o editor de te)to maissimples ue tiver em seu computador!

 se $or +indo1s• "( em Iniciar  Programas  Acess;rios  ?loco de 7otas *notepad

 se $or Sinu)• "( em Iniciar  E)ecutar Comando  digite 0edi& e tecle E7TER

= c;digo@$onte em JA"A deve ser salvo sempre com a e)tensão !'ava *ponto 'ava, pore)emplo

Bom#ia.java$alcula%ora.javaBatal&a'aval.java

Repare ue não #( espaços em 5ranco entre as palavras, é tudo 'unto mesmo! Crieuma pasta c#amada CursoJava para arma<enar os programas e e)ercícios ue $aremos aolongo do curso! Entre na pasta! Anote o endereço da pasta, pois vamos precisar digit(@lo noconsole! Para sa5er ual o endereço, ve'a no topo da 'anela do Oerenciador de Aruivos!

 se $or +indo1s @ est( ao lado da palavra Endereço! E)emplo c674oc"men& andSe&&in(78a"ricio78e" doc"men&o7C"ro Ja!a

 se $or Sinu) – est( ao lado da palavra Socali<ação! E)emplo9:ome9"er98a"ricio9C"roJa!a

A5ra o editor de te)to e copie as lin#as a5ai)o *atenção para as mai.sculas emin.sculas, é muito importante copiar e)atamente como est( escrito

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

System.out.println(“Bom dia!”)

 

7ão se preocupe em entender o c;digoU é apenas um e)emplo para voc& ver como seescreve, compila e e)ecuta um programa em Java! E)plicaremos o signi$icado dessas lin#asmais tarde! %alve o aruivo dentro da pasta CursoJava com o nome de ?om/ia!'ava!

A5ra a pasta CursoJava! %; #( um aruivo l( dentro, certo B o aruivo ?om/ia!'avacontendo o c;digo ue aca5amos de escrever!

Agora vamos compilar o nosso c;digo–$onte *?om/ia!'ava para gerar o 53tecode! A5rao console e navegue até a pasta CursoJava! Para $a<er isto é preciso digitar o seguinte

comando

  c% en%ere(o-que-voc)-anotou

Page 31: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 31/86

Curso B$sico de JAVA '5

E)emplo

 no +indo1sc% c*+#ocuments an% Settings+Mauricio+Meus %ocumentos+$ursoava

 no Sinu)c% &omeusersMauricio$ursoava

Agora e)ecute

   javac Bom#ia.java

%e não aparecer nen#uma mensagem de erro, é sinal ue correu tudo 5em! %eaparecerem mensagens de erro, a5ra de novo o ?om/ia!'ava *no editor de te)to e con$irapara ver se não digitou nada errado, depois a5ra o console e compile novamente!

  %e o prompt *cursor voltar a $icar piscando é porue o aruivo $oi compilado comsucesso!

Porém, se aparecer uma mensagem di<endo ue 1a!ac é um comando descon#ecido, éporue o computador não sa5e aonde est( arma<enado o programa 'avac! "oc& vai ter ueindormar isto a ele! Para $a<er isso, $aça

 se $or +indo1s• "( em Iniciar  Painel de Controle  %istema  Avançado  "ari(veis de

Am5iente  na parte de 5ai)o da 'anela ue a5rir, seleciona a lin#a ue começacom Pa&: *cliue na lin#a para selecion(@la Edit na 'anela ue surgir cliueno $inal da lin#a *ao lado do cursor ue est( piscando, acrescente um ponto@e@vírgula *U ao $inal da lin#a e digite o camin#o do diret;rio onde estão os 5in(riosdo Java

  C_Aruivos de programas_Java_'d`D!!_5in

  = n.mero pode variar em $unção da versão ue voc& tiver! :se aui o mesmon.mero ue aparece uando voc& usa o comando 8'ava –version9!  Ap;s digitar, con$irme clicando em =Q, depois em =Q e $inalmente em =Q! 

 se $or Sinu)• A5ra o console e digite

e)port PATNbPATN^usr^'ava '̂d`D!!_5in e E7TER *o numero podevariar em $unção da versão ue voc& tiver! :se aui o mesmo numero ue apareceuando voc& usa o comando 8'ava –version9!

= pro5lema é ue essa é uma alteração tempor(ria, ou se'a, se voc& desligar o

computador, perde a con$iguração e vai ter ue repetir este procedimento da pr;)imave< ue ligar o computador! :ma maneira mais permanente de $a<er isso é editar oaruivo pro$ile, ue est( no diret;rio ^etc *voc& dever( estar logado como um usu(rioue ten#a permissão para $a<er isso! =utra opção é modi$icar o seu per$il no aruivo!5as#rc *aruivo oculto! Em am5os os casos, a modi$icação é a mesma adicione ao$inal do aruivo o comando  e)port PATNbPATN^usr^'ava '̂d`D!!_5in

= numero pode variar em $unção da versão ue voc& tiver! :se aui o mesmo numeroue aparece uando voc& usa o comando 8'ava –version9!

Este procedimento é 5em mais complicado, se tiver di$iculdades peça a'uda a alguém

mais e)periente!

Page 32: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 32/86

Curso B$sico de JAVA '%

Agora a5ra de novo a pasta CursoJava! Agora além do aruivo ?om/ia!'ava*c;digo–$onte tem outro aruivo c#amado ?om/ia!class! Este aruivo $oi gerado pelocompilador e, portanto, é o 53tecode *ve'a a $igura ! Para e)ecutar o programa, a5ra oconsole e digite

  'ava Bom#ia

  "ai aparecer na tela do console a $rase 8?om dia X9 isso signi$ica ue est( tudo certocom o seu am5iente e ue voc& aca5ou de criar, compilar e e)ecutar o seu primeiro programaem Java!

Tudo 5em, não $oi voc& uem criou, voc& apenas copiou!!! mas esse é o primeiro passo!Este programa é muito simples e a .nica coisa ue ele $a< é imprimir um te)to no console!

2esmo sem entender o ue signi$icam as lin#as ue n;s copiamos, a5ra o ?om/ia!'avae analise o seu conte.do! "e'a se voc& consegue desco5rir ue pedaço do programa érespons(vel por imprimir o te)to na tela! Tente alterar o programa para imprimir o seu nomena tela! Altere, salve, compile e e)ecute para ver se suas alteraç6es $uncionaram! %e voc&conseguiu, a5ra de novo e altere o programa para ue ele imprima o seu primeiro nome em

uma lin#a e o so5renome em outra!Essa é uma das mel#ores maneiras de con#ecer e aprender os comandos de uma

linguagem! %e a gente a5re o c;digo de um programa ue outra pessoa escreveu e v& ali umcomando ue a gente não con#ece, pode ir $a<endo alteraç6es *sempre segundo o roteiroaltera@salva@compila@e)ecuta e vendo o ue acontece! Com 5ase nas nossas o5servaç6es,podemos até entender para ue serve e como $unciona um comando ue nunca vimos antes!

2as atenção isso s; $unciona se a gente $i<er uma alteração de cada ve<! Altera umacoisa, salva–compila–e)ecuta e v& o ue aconteceu! /epois volta ao ue era antes e salva@compila@e)ecuta de novo para ver se ele voltou a $a<er o ue $a<ia antes da alteração! Aí voc&pode $a<er outra alteração e testar para ver o resultado! %empre uma de cada ve< e semprevoltando ao ue era! B importante anotar o comando original antes de alterar pra não correr orisco de voc& esuecer o ue estava digitando e não ter mais como des$a<er a sua alteração!Tam5ém é importante $a<er apenas uma alteração de cada ve<, por ue se voc& $i<er cincoalteraç6es de uma ve<, como é ue vai sa5er ual delas provocou o e$eito o5servado

:ma 5oa idéia para evitar pro5lemas é $a<er uma c;pia do programa antes de começara me)er nele! Assim, se voc& $i<er alguma mudança e não conseguir mais voltar atr(s, ter(uma c;pia do programa original para dei)ar tudo direitin#o do 'eito ue estava!

4riando e e3ecutando um 2rograma no 8lueJ

Criar, compilar e e)ecutar programas peuenos como o ?om/ia!'ava usando o Qedit e oconsole não tra< grandes di$iculdades! = c;digo do nosso programa $oi todo escrito em um.nico aruivo *tam5ém, um programa de lin#as !!!! 2as e)istem programas ue sãodivididos em v(rios m;dulos *aruivos, cada um contendo um trec#o do c;digo! Essesm;dulos podem $a<er re$er&ncia uns aos outros, esta5elecendo vínculos entre eles! :m m;dulopode apontar para um ou mais m;dulos, os uais, por sua ve<, podem apontar para outros eassim por diante, $ormando um emaran#ado de vínculos di$ícil de controlar se a uantidade dem;dulos $or muito grande! 7a #ora de compilar então é uma con$usão, porue ao alterar erecompilar um m;dulo é preciso recompilar todos os m;dulos ue $a<em re$er&ncia a ele edepois todos os m;dulos ue $a<em >ueles e assim por diante! =u se'a, é muito $(cil se

perder e esuecer de compilar um m;dulo e aí o programa ou vai dar erro ou não vai $uncionarcomo deveria!

Page 33: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 33/86

Curso B$sico de JAVA ''

Com o crescimento do Java *5em como de outras linguagens de programação $oramcriados programas para a'udar os programadores nessa tare$a de edição, compilação econtrole dos relacionamentos entre os m;dulos! Esses programas são c#amados de I/E *doingl&s Integrated /evelopment Environment – Am5iente Integrado de /esenvolvimento!

B como nauelas propagandas em ue aparece uma pessoa gripada comprando ummonte de remédios para gripe, e aí aparece outra e di< 8Pra ue voc& vai comprar tudo isso

Seva esse, ue ao mesmo tempo é anti@térmico, analgésico, descongestionante, anti5i;tico !!!9 

= I/E é assim! Ele é ao mesmo tempo um editor de te)to *para escrevermos o c;digo@$onte, um compilador *para gerarmos o 53tecode, um depurador *depuradores sãoprogramas ue nos a'udam a encontrar e corrigir erros no c;digo@$onte, um lin`ador*lin`adores são programas ue 'untam todos os m;dulos em um s; aruivo ue pode serlevado para rodar em outro computador e mais outras $unç6es!

E)istem I/Es ue o$erecem mais recursos ue outros e ue precisariam de um curso ede uma apostila s; para aprender a tra5al#ar com eles! 7o nosso curso vamos usar o ?lueJ,ue é um I/E 5em simples e $(cil de aprender e ue tem tudo ue a gente precisa para $a<eros nossos programas! Assim, não vamos $icar perdendo tempo aprendendo a lidar com o I/E e

poderemos nos concentrar em aprender o Java!= ?lueJ pode ser 5ai)ado no site

  #ttp^^111!5lue'!org

Ele t&m vers6es para +indo1s e Sinu)! :ma ve< instalado, 5asta clicar no ícone paraa5rí@lo e ele apresenta a seguinte tela inicial

A primeira coisa a $a<er é criar um pro'eto! :m pro'eto é como uma pasta onde o ?lueJarma<ena tudo ue é preciso para rodar o programa o c;digo@$onte e o 53tecode *ou osc;digos@$onte e os 53tecodes se o programa estiver dividido em m;dulos! "amos criar umpro'eto para cada programa ue $i<ermos ao longo do curso!

-ig! H Tela Inicial do ?lueJ

Page 34: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 34/86

Curso B$sico de JAVA '/

"amos $a<er um programa 5em simples s; para ilustrar o processo! Cliue em Pro1ec& e a seguir em Ne; Pro1ec&, navegue até a pasta dese'ada *no nosso caso CursoJava, digite onome do pro'eto e cliue em Crea&e *-ig! \!

"e'a ue a 5arra de título e)i5e o nome do pro'eto ue est( a5erto! 7a (rea de tra5al#opor enuanto s; tem um aruivo! Esse aruivo serve para colocar in$ormaç6es so5re o*sautor*es do pro'eto, data de criação, n.mero da versão e etc! B mais para programadorespro$issionais! 7o nosso curso não vamos perder tempo com ele!

Agora vamos escrever o nosso c;digo@$onte! Para isso temos ue criar uma classe!"amos aprender o ue é classe mais adiante! 7este programa voc& vai $a<er o mesmo ue $e<no ?om/ia!'ava, ou se'a, vai copiar o ue estamos $a<endo mesmo ue voc& não entendae)atamente o conte.do do c;digo! A idéia aui é apenas ilustrar o processo de edição,compilação e e)ecução no ?lueJ ue precisaremos repetir v(rias ve<es no decorrer do curso! 

Para criar uma classe, cliue em Ne;Cla! Escreva o nome da classe e cliue em O0*-ig! W! =5serve ue o nome da classe não precisa ser o mesmo do pro'eto! 7osso pro'etoter( apenas uma classe, mas #( pro'etos com de<enas de classes *m;dulos, cada uma comum nome di$erente!

-igura W @ Criando uma classe!

-ig!\ – Criando um pro'eto

Page 35: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 35/86

Curso B$sico de JAVA '1

"e'a ue agora e)iste um novo aruivo na (rea de tra5al#o com o nome de classe uecriamos! Reparou ue o aruivo est( #ac#urado *c#eio de listras diagonais Isto signi$ica ue

ele ainda não $oi compilado!

/& um duplo@cliue no desen#o da classe para a5rir o editor de te)to! J( e)iste um c;digoescrito na nossa classe! Este é um c;digo–e)emplo ue o ?lueJ gera automaticamente ao criara classe! "amos aproveitar apenas um pedaço desse c;digo! /elete os as lin#as em a<ul docomeço do c;digo e todas as lin#as ue estão entre a primeira c#ave e a .ltima! *para deletar,selecione as lin#as com o mouse e pressione a tecla 4ele&e do seu teclado! = c;digo vai $icarassim

Agora digite o te)to do programa! = c;digo pronto deve $icar assim

-igura D – esueleto do c;digo

Page 36: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 36/86

Curso B$sico de JAVA '

Para compilar cliue no 5otão Com,ile! Ap;s uma pausa, se não #ouver erros vai aparecer norodapé a mensagem 8Class compile – no s3nta) errors9, ue uer di<er, 8Classe compilada –sem erros de sinta)e9! -ec#e o editor de te)to! Repare ue a cai)a ue sim5oli<a a classeagora não tem mais as diagonais! Isso indica ue o programa est( compilado e pronto para sere)ecutado! Para rodar o programa cliue com o 5otão direito na classe e escol#a a opção !oidmain <&rin( = > ar(? *-igura D!

-igura DD – c;digo @ $onte

-igura D – E)ecutando o programa

Page 37: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 37/86

Curso B$sico de JAVA '2

Cliue em O0 na pr;)ima 'anela e a5rir( uma nova 'anela com o resultado da e)ecução!

Como voc& pode ver, é um programa id&ntico ao ?om/ia!'ava, s; ue o te)to mostradona tela é di$erente e é impresso em L lin#as ao invés de uma! Compare este c;digo com o do?om/ia!'ava para ver as di$erenças! A partir de agora, todos os programas ue mostrarmos aolongo da apostila deverão ser digitados, compilados e testados no ?lueJ, seguindo esteprocedimento!

PA"#E $$$ % "egras de .inta3e

-igura DL – Resultado do e)ecução do programa

Page 38: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 38/86

Curso B$sico de JAVA '@

4omentários

E3em2lo de 4omentário 0escrição 

int x; // posição no eixo X  Do KM at) o "inal da linha ser$ ignorado pelo co#pilador 

/*A variável x é um númerointeiro que representa aposição no eixo x*/int x; 

7odo teto co#preendido entre o KM e o KM ser$ ignorado pelo co#pilador

/**A variável x é um númerointeiro que representa aposição no eixo x

*/

int x; 

7odo teto co#preendido entre o KM e o KM ser$ ignorado pelo co#pilador #as pode ser usado pelo <a0adoc

O progra#a <a0adoc 3(ue 0e# no pacote de instala-.o do Ja0a4 lê todos os co#ent$rios iniciados por KM e gera u# docu#ento `7, contendo estas in"or#a->es&

0e-inição de 4lasse

.inta3e da 0e-inição de 4lasse modificador class <Nome-da-classe> 

  <campos>...

  <construtores> 

  <métodos>

• #odi"icador : pode ser 2u(lic 3(ue signi"ica (ue (ual(uer outra classe pode criaro;<etos a partir dessa classe4 ou 2rivate 3(ue signi"ica (ue n.o pode# ser criadoso;<etos dessa classe4&

• class ) u#a  pala0rareser0ada do Ja0a (ue signi"ica (ue esta ) u#a declara-.o deu#a classe&

• YHo#edaclasse^ : a(ui entra o no#e da classe se#pre co#e-ando co# letra#aiQscula

Ee#plo:

 pu;lic class Cachorro

Page 39: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 39/86

Curso B$sico de JAVA '

a(ui entra# as linhas do progra#a

9igura %1 8 De"ini-.o da Classe Cachorro

0e-inição de Método

.inta3e da 0e-inição de Método

modificador void <nome-do-método> "<lista de parâmetros> #  <comandos>...

modificador <tipo-de-retorno>  <nome-do-método> "<lista de parâmetros> #  <comandos>...

• #odi"icador : pode ser 2u(lic 3(ue signi"ica (ue (ual(uer classe eterna podein0ocar este #)todo4 ou 2rivate 3(ue signi"ica (ue este #)todo so#ente pode serin0ocado a partir da classe onde ele "oi de"inido4&

• void ) u#a  pala0rareser0ada do Ja0a (ue signi"ica (ue este #)todo n.o retornanenhu# dado ao "inal da eecu-.o das instru->es&

• Ytipoderetorno^: ) o tipo de dado (ue o #)todo retorna classe (ue o in0ocou ao

"inal da eecu-.o das instru->es& U# #)todo sF pode retornar u# Qnico dado&• Yno#edo#)todo^ : a(ui entra o no#e do #)todo se#pre co#e-ando co# letra

#inQscula e sendo de pre"erência u# 0er;o&• Ylista de par#etros^: s.o os par#etros (ue o #)todo rece;e da classe (ue o

cha#ou& +ode ter nenhu# u# ou #ais de u# par#etro& Se hou0er #ais de u# par#etro eles de0e# estar separados por 0Prgulas& Cada par#etro ) co#posto dotipodedado do par#etro seguido do no#edopar#etro& 3E: int nota dou;le

 pre-o String no#e etc4&

O;ser0e (ue a segunda in"or#a-.o (ue consta do ca;e-alho do #)todo ) OU 0oid OU o tipodedado de retorno& Ou se<a ou o #)todo retorna algu#a in"or#a-.o 3e nesse caso ele especi"ica noca;e-alho do #)todo (ual o tipo de dado4 ou ent.o n.o retorna nada 3e nesse caso ele usa a pala0ra0oid para indicar isto&4&

Outra o;ser0a-.o i#portante ) (ue apFs o no#e do #)todo se#pre ha0er$ u# par de parênteses#es#o (ue n.o ha<a nenhu#a lista de par#etros&

A co#;ina-.o do no#e do #)todo #ais a lista de par#etros ) cha#ada de assinatura do método&

Page 40: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 40/86

Curso B$sico de JAVA /6

Ee#plos de #)todos:

 pu;lic 0oid latir34

Sste#&out&println3KAuL AuLM4N

9igura % 8 De"ini-.o do #)todo latir34

 pu;lic dou;le calculaedia3dou;le nota5 dou;le nota%4

#edia T 3nota5 nota%4 %return #edia

O pri#eiro ee#plo ) u#a de"ini-.o de u# #)todo (ue ao ser in0ocado i#pri#e na tela a StringKAuL AuLM& O #odi"icador 2u(lic indica (ue este #)todo ) pQ;lico e portanto pode ser in0ocado

 por outras classes& A pala0ra reser0ada void indica (ue este #)todo n.o retorna nenhu# 0alor paraa classe (ue o cha#ou& A lista de par#etros 0a?ia indica (ue este #)todo n.o precisa rece;ernenhu#a in"or#a-.o adicional para cu#prir as instru->es&

O segundo ee#plo ) u#a de"ini-.o de u# #)todo (ue ao ser in0ocado rece;e dois par#etros3duas notas de pro0a4 calcula a #)dia dessas notas e retorna o resultado deste c$lculo ou se<a a#)dia& O #odi"icador 2u(lic indica (ue este #)todo ) pQ;lico e portanto pode ser in0ocado poroutras classes& O tipo de dados dou(le indica (ue este #)todo retorna u# 0alor real 3pode ter casasdeci#ais4 para a classe (ue o cha#ou& A lista de par#etros cont)# dois 0alores reais 3nota5 enota%4 (ue s.o passados para o #)todo pela classe (ue "e? a in0oca-.o do #)todo& Dentro do corpodo #)todo h$ a instru-.o return (ue neste ee#plo o;rigatoria#ente de0e retornar u# 0alorreal de acordo co# o (ue "oi de"inido no ca;e-alho do #)todo& Heste caso a instru-.o returnretorna o 0alor da #)dia das notas rece;idas co#o par#etro&

$nvocação de Método

.inta3e da $nvocação de Método 

<instancia> $<método> "# 

<variavel>  % <instancia> $<método> "<parâmetros>...# 

+ara dar u#a orde# de latir a u# c.o re por ee#plo o co#ando seria:

  re&latir34N

Page 41: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 41/86

Curso B$sico de JAVA /5

 Ho caso de u# #)todo (ue retorna u# 0alor eu tanto posso usar o 0alor direta#ente co#o possoar#a?en$lo e# u#a 0ari$0el para uso "uturo& +or ee#plo suponha (ue eu tenho u#a classecha#ada Aluno (ue te# no corpo da classe a de"ini-.o de u# #)todo cha#ado calcula)dia3co#o no ee#plo anterior4& Eis alguns ee#plos de in0oca-.o deste #)todo para u# alunocha#ado aluno5:

  Sste#&out&println3aluno5&calcula)dia3 @44N

  #ediaAluno T aluno5&calcula)dia3 564N

 Ho pri#eiro ee#plo h$ u#a instru-.o de i#press.o& Repare (ue a in0oca-.o do #)todo ocorredentro dos parênteses do co#ando de i#press.o println& ApFs ter#inada a eecu-.o do #)todo o0alor retornado ser$ i#presso na tela pois a instru-.o original ter$ se trans"or#ado e#:Sste#&out&println3@&14 aonde @&1 ) o 0alor retornado pelo #)todo ou se<a a #)dia entre as duasnotas passadas co#o par#etro&

 Ho segundo ee#plo o 0alor retornado pelo #)todo ser$ ar#a?enado na 0ari$0el #ediaAluno&

ApFs a eecu-.o do #)todo a instru-.o original ter$ se trans"or#ado e#: #ediaAluno T @ aonde@ ) o 0alor retornado pelo #)todo ou se<a a #)dia entre as duas notas passadas co#o par#etro&&

Método Princi2al e Método 4onstrutor

+ode#os criar (uantos #)todos (uiser#os e te#os total li;erdade para usar o no#e de #)todo (uedese<ar#os por)# eiste# dois #)todos especiais cu<os no#es s.o reser0ados ou se<a n.o

 podere#os us$los para no#ear os nossos #)todos& Esses #)todos especiais s.o:• )todo principal 3#ain4

O #)todo principal ) o #)todo por onde co#e-a a eecu-.o do progra#a principal& U# pro<eto pode ser co#posto de 0$rios progra#as 3#Fdulos4 co#o 0i#os (uando estuda#os a#odulari?a-.o& U# #Fdulo pode cha#ar outros #Fdulos e assi# sucessi0a#ente& +or)#dentre todos os #Fdulos (ue co#p>e# a(uele pro<eto apenas u# ser$ o progra#a principale ) esse progra#a principal (ue nFs ire#os eecutar e (ue cha#ar$ os #Fdulossu;ordinados& Esse progra#a principal pode ter 0$rios #)todos #as o;rigatoria#ente ter$entre os seus #)todos o #)todo #ain 3principal4&Ao eecutar o progra#a principal o co#putador procura o #)todo #ain e inicia a eecu-.o

do progra#a seguindo as instru->es (ue esti0ere# no corpo deste #)todo&

O ca;e-alho do #)todo principal ) se#pre o #es#o e se escre0e assi#:

  2u(lic static void main.tring9 args!

• )todo Construtor 

7oda classe te# (ue ter u# #)todo construtor& Esse #)todo ) in0ocado toda 0e? (ue )criada u#a instncia da(uela classe ou se<a u# o;<eto da(uela classe& +or ee#plo aode"inir u#a classe Cachorro de0e#os escre0er dentro do corpo da classe u# #)todo

construtor (ue ser$ eecutado toda 0e? (ue criar#os u#a instncia de Cachorro& Co#o este#)todo ) cha#ado no ato da cria-.o de u# o;<eto ) o lugar ideal para "a?er asiniciali?a->es das 0ari$0eis da classe 30ere#os o conceito de iniciali?a-.o #ais adiante4&

Page 42: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 42/86

Curso B$sico de JAVA /%

Zuando n.o cria#os u# #)todo construtor o prFprio Ja0a cria u# para nFs& Heste casoser$ u# #)todo construtor 0a?io (ue n.o eecuta nenhu#a tare"a especP"ica&

O ca;e-alho do #)todo construtor "oge u# pouco regra (ue 0i#os na sintae da de"ini-.ode #)todos& Ele n.o retorna nenhu# tipo de dados #as n.o precisa ter a pala0ra 0oid paraindicar isto& O no#e do #)todo ) se#pre igual ao no#e da classe& Co#o o no#e da classe )

escrito co# a inicial e# #aiQscula o #)todo construtor ) o Qnico #)todo (ue te# o seuno#e co#e-ando co# letra #aiQscula 3co#o 0i#os todos os outros #)todos co#e-a# co#letra #inQscula e te# no#e de 0er;o4& +ortanto a sintae do #)todo construtor ser$:

.inta3e da 0e-inição de Método 4onstrutor

modificador <Nome-da-classe> "<lista de parâmetros> #   <comandos>...

• #odi"icador : pode ser 2u(lic 3(ue signi"ica (ue (ual(uer classe eterna pode

in0ocar este #)todo4 ou 2rivate 3(ue signi"ica (ue este #)todo so#ente pode serin0ocado a partir da classe onde ele "oi de"inido4&• YHo#edaclasse^ : o no#e do #)todo se#pre ser$ igual ao no#e da classe&• Ylista de par#etros^: s.o os par#etros (ue o #)todo rece;e da classe (ue o

cha#ou& +ode ter nenhu# u# ou #ais de u# par#etro& Se hou0er #ais de u# par#etro eles de0e# estar separados por 0Prgulas& Cada par#etro ) co#posto dotipodedado do par#etro seguido do no#edopar#etro& 3E: int nota dou;le

 pre-o String no#e etc4&

Ee#plos de ca;e-alhos de #)todos construtores:

o  pu;lic Cachorro34o  pu;lic ,#pada34o  pu;lic Bicicleta34o  pu;lic Circulo34

O #)todo construtor ) cha#ado na cria-.o de u# o;<eto e isto acontece no progra#aatra0)s da instru-.o de cria-.o ne (ue 0ere#os #ais adiante no tFpico 4riando$nst7ncias de 4lasse&

0eclaração de variáveis

 Hor#al#ente a pri#eira coisa (ue "a?e#os e# u# progra#a 3ou e# u# #)todo4 ) declarar as0ari$0eis (ue ser.o utili?adas& A instru-.o de declara-.o ser0e para di?er ao co#putador o no#e e otipo de dados da 0ari$0el& Se tentar#os usar u#a 0ari$0el (ue n.o "oi declarada o co#pilador 0aidar erro indicando (ue o co#putador n.o conhece a(uela 0ari$0el& So#ente a partir da instru-.o dedeclara-.o ) (ue o co#putador to#a conheci#ento da eistência da 0ari$0el e sF a partir daP

 podere#os us$la e# instru->es&

.inta3es da 0eclaração de variáveis<tipo-de-dado>  <variavel> ; 

Page 43: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 43/86

Curso B$sico de JAVA /'

<tipo-de-dado>  <variavel-1> & <variavel-2> & $$$& <variavel-n> ; 

<tipo-de-dado>  <variavel>  % <valor-de-dado> ; 

 Ho pri#eiro caso te#os a declara-.o de apenas u#a 0ari$0el& +ri#eiro indica#os o tipo de dado ea seguir indica#os o no#e da 0ari$0el& Ho segundo caso te#os a declara-.o de 0$rias 0ari$0eis do

#es#o tipo e# u#a Qnica instru-.o& Os 0$rios no#es de 0ari$0eis s.o separados por 0Prgulas& Hoterceiro caso te#os e# u#a #es#a instru-.o a declara-.o de u#a 0ari$0el e a iniciali?a-.o da0ari$0el ou se<a a atri;ui-.o de u# 0alor inicial para a 0ari$0el& Hote (ue todas as declara->ester#ina# co# pontoe0Prgula&

O tipodedado pode ser u# tipo de dado 2rimitivo 3int ;oolean char etc4 u# tipo de dadode-inido 2elo sistema 3String J,a;el JOption+ane etc4 ou u# tipo de dado de-inido 2elousuário 3Cachorro 7riangulo etc4& O 0alor pode ser u# literal ou u#a instncia de u# tipode"inido pelo usu$rio co#o Cachorro& ,iteral ) todo e (ual(uer 0alor (ue a gente escre0edireta#ente e# u#a linha do progra#a 3e: 12 true jk KcaloiM etc4&

Ee#plos:

int qtdeAlunos; 

int idade % '; 

(oolean terminou % false; 

)acorro rex % ne+ )acorro"#; 

Os tipos de dados #ais si#ples s.o cha#ados de pri#iti0os& Eiste# oito tipos de dados pri#iti0ose# Ja0a sendo seis nu#)ricos u# caracter e u# ;ooleano& O (uadro a seguir #ostra os oito tipos&

A pri#eira coluna #ostra co#o eles s.o representados no Ja0a a segunda coluna #ostra o ta#anhodo espa-o de #e#Fria usado para ar#a?enar o 0alor e a terceira coluna #ostra a "aia de 0alores

 per#itidos&

#i2o de 0ados #aman5o &ai3a de Valores

 ;te 5 ;te 5%@ at) 5%2

short % ;tes '%&2@ at) '%&22

int / ;tes %&5/2&/@ at) %&5/2&/@'&/2

long @ ;tes &%%'&'2%&6'&@1/&221&@6@ at)&%%'&'2'&6'&@1/&221&@62

"loat / ;tes '&/56'@ at) '&/56'@

dou;le @ ;tes 5&@56'6@ at) 5&@56'6@

char % ;tes letras dPgitos e caracteres

especiais

 ;oolean 5 ;it true ou "alse

Page 44: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 44/86

Curso B$sico de JAVA //

Os (uatro pri#eiros tipos s.o usados para ar#a?enar 0alores nu#)ricos inteiros& A di"eren-a entreeles ) o espa-o ocupado na #e#Fria 3e portanto a "aia de 0alores per#itida4&

+or ee#plo se eu estou escre0endo u# progra#a para rodar e# u# celular eu preciso econo#i?ar espa-o de #e#Fria pois o celular n.o te# tanta #e#Fria (uanto u# co#putador& Ent.o se eu tenhou#a 0ari$0el nu#)rica no #eu progra#a e eu sei (ue o 0alor #$i#o (ue a(uela 0ari$0el pode

assu#ir ) 566 eu posso usar o tipo (;te (ue per#ite ar#a?enar nQ#eros entre 5%@ e 5%2& Se euusasse o tipo int eu estaria reser0ando (uatro 0e?es #ais #e#Fria do (ue o necess$rio pois o tipoint ocupa / ;tes de #e#Fria en(uanto o tipo ;te ocupa apenas 5& Agora se eu esti0er escre0endou# progra#a para contar (uantas estrelas te# e# u#a gal$ia eu n.o posso usar os tipos (;tes5ort ou int por(ue eles n.o co#portaria# o nQ#ero resultante da contage#& Eu teria (ue usar otipo long (ue ocupa @ ;tes de #e#Fria #as #e per#ite ar#a?enar nQ#eros at) no0e(uin(uilh>es du?entos e 0inte e três (uatrilh>es tre?entos e setenta e dois trilh>es trinta e seis

 ;ilh>es oitocentos e cin(Wenta e (uatro #ilh>es setecentos e setenta e cinco #il e oitocentos esete &&& U"aL

 Ha pr$tica o tipo #ais usado para ar#a?enar nQ#eros inteiros ) o int&

Os tipos -loat e dou(le s.o usados para ar#a?enar 0alores reais ou se<a pode# ter casas deci#ais&Eles s.o representados de "or#a aproi#ada no co#putador usando o (ue cha#a#os de nota-.o de

 ponto "lutuante& O tipo -loat ) o #enor e per#ite representar nQ#eros co# u#a precis.o de at) @casas deci#ais& O dou(le ocupa o do;ro do espa-o de #e#Fria #as per#ite ar#a?enar nQ#erosco# precis.o de at) 51 casas deci#ais& Ho Ja0a a casa deci#al ) representada co# ponto e n.oco# 0Prgula& 3E: 2&1 '%&1@ /&@21 etc4&

 Ha pr$tica o tipo #ais usado para ar#a?enar nQ#eros reais ) o dou(le&

O tipo c5ar ) usado para ar#a?enar u# Qnico caracter& Este caracter pode ser u#a letra3j#kkAketc4 u# dPgito 3j%kkk etc4 ou u# caracter especial 3jkkLkkk etc4& Hos progra#asatri;uP#os 0alores u#a 0ari$0el do tipo c5ar usando aspas si#ples 3E: resposta T jAk4&

9inal#ente o tipo (oolean ser0e para ar#a?enar u# dos dois 0alores ;ooleanos: 0erdadeiro ou"also& Co#o o Ja0a ) todo e# inglês usa#se os 0alores true 30erdadeiro4 ou -alse 3"also4&

 Hessa lista de tipos de dados est$ "altando u# #uito i#portante e #uito utili?ado (ue ) o string& Ostring ) u#a cadeia de caracteres ou se<a ) usado para ar#a?enar pala0ras ou "rases& +ara atri;uiru# 0alor a u#a 0ari$0el do tipo string usa#se aspas duplas 3E: no#e T KJo.o da Sil0aM rua TKA0enida +residente VargasM etc4& E# 0$rias linguagens de progra#a-.o o string ) de"inido co#o

u# tipo pri#iti0o por)# no Ja0a ) di"erente& O Ja0a de"iniu u#a classe cha#ada .tring (ue est$na ;i;lioteca <a0a&lang& Co#o ) u#a classe ele te# u#a s)rie de #)todos (ue nos per#ite# "a?eropera->es as #ais di0ersas co#o por ee#plo trans"or#ar todo o conteQdo da 0ari$0el e##aiQsculas ou ent.o procurar dentro da String por u#a deter#inada letra e su;stituPla por outra&Eiste# cerca de 16 #)todos (ue u#a String ) capa? de reali?ar&

Esta classe String ) t.o utili?ada (ue n.o precisa#os declarar no inPcio do progra#a a instru-.o dei#porta-.o de ;i;liotecas 3co#o "a?e#os se#pre (ue (uere#os usar no nosso progra#a u#a dasclasses de"inidas pelo Ja0a4& Ela ) (uase co#o se "osse u# tipo de dados pri#iti0o a di"eren-a )(ue ela por ser u# o;<eto de u#a classe sa;e reali?ar u#a s)rie de a->es& por isso (ue o tipo dedados .tring ) escrito co# a pri#eira letra e# #aiQscula 3co#o s.o todas as classes4 ao contr$rio

dos tipos de dados pri#iti0os (ue s.o todos escritos co# a inicial e# #inQscula&

Page 45: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 45/86

Curso B$sico de JAVA /1

O no#e da 0ari$0el de0e co#e-ar co# letra #inQscula e pode ter letras e nQ#eros #as n.o de0econter espa-os hP"ens ;arras ou coisas assi#& +ode ser u# no#e si#ples 3no#e (tde nota etc4 ouco#posto 3no#eCliente (tdeDiasE#Atraso nota+ro0a5 etc4& Ho caso de no#es co#postos o

 pri#eiro te# a inicial co# letra #inQsculas e os de#ais te# a inicial co# letra #aiQscula& Hote (ue) tudo colado #es#o n.o h$ espa-o entre eles&

De0e#os se#pre tentar escolher u# no#e sugesti0o (ue indi(ue o (ue a(uela 0ari$0el ir$ar#a?enar& +or ee#plo se eu 0ou usar no #eu progra#a u#a 0ari$0el para contar o nQ#ero dealunos e# u#a sala de aula eu poderia criar u#a 0ari$0el cha#ada nu#Alunos ou (tdeAlunos&+or)# u#a 0ari$0el cha#ada nu# (tde ou ? n.o indica clara#ente o conteQdo da 0ari$0el&

Outra coisa i#portante: o Ja0a aceita (ual(uer caracter na co#posi-.o do no#e& Isto signi"ica (ue pode#os criar no#es de 0ari$0eis co# acentos ou cedilhas& +or)# de0e#os e0itar usar essescaracteres por(ue (uando #uda#os de plata"or#a nor#al#ente esses caracteres s.o su;stituPdos naoutra plata"or#a& +or ee#plo se eu estou escre0endo u# progra#a usando u# co#putador da

 plata"or#a bindos ao co#pilar e le0ar o ;tecode para eecutar e# u# co#putador da plata"or#a ,inu pode ser (ue ele trans"or#e os cedilhas acentos agudos e etc e# outros caracteres

e aP o progra#a 0ai dar erro& O #es#o se eu estou escre0endo e# u# co#putador ,inu co#pilo ele0o o ;tecode para eecutar e# u# co#putador bindos& Co#o (uere#os (ue nosso progra#aeecute e# (ual(uer plata"or#a de0e#os e0itar o uso desses caracteres nos no#es das nossas0ari$0eis& O #es#o 0ale para no#es de classes e no#es de #)todos&

$nstrução de Atri(uição

Depois de declaradas as 0ari$0eis de0e#os atri;uir u# 0alor inicial a elas& +ara isso usa#os ainstru-.o de atri;ui-.o& Este procedi#ento ) conhecido co#o iniciali1ação das 0ari$0eis&

.inta3e da O2eração de Atri(uição 

<tipo-de-dado>  <variavel>  % <valor-de-dado> ; 

<tipo-de-dado>  <variavel> ;<comandos diversos>...

<variavel>  % <valor-de-dados> ; 

O sinal de igual 3T4 no Ja0a n.o ) sinni#o de co#para-.o #as si# de atri(uição& Usa#os ainstru-.o de atri;ui-.o para alterar o conteQdo de u#a 0ari$0el& Zuando o co#putador encontra e#u#a linha o sinal T ele pega o (ue est$ do lado direito do sinal e <oga dentro da 0ari$0el (ue est$ dolado es(uerdo& Di?e#os (ue ele atri;ui o (ue est$ do lado direito 0ari$0el (ue est$ do ladoes(uerdo&

 Ho pri#eiro caso eu estou de"inindo a 0ari$0el e "a?endo a atri;ui-.o do 0alor inicial e# u#a Qnicalinha do #eu progra#a&

 Ho segundo caso eu uso u#a linha do progra#a para de"inir a 0ari$0el& Depois segue#se outraslinhas de co#andos di0ersos 3pro0a0el#ente outras linhas de de"ini-.o das de#ais 0ari$0eis4 e

"inal#ente aparece u#a linha contendo a instru-.o de atri;ui-.o& Ou se<a eu posso de"inir a0ari$0el e# u#a linha e atri;uir o 0alor e# outra&

Page 46: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 46/86

Curso B$sico de JAVA /

A instru-.o de atri;ui-.o n.o ) utili?ada so#ente na iniciali?a-.o das 0ari$0eis& A (ual(uer#o#ento do #eu progra#a eu posso ter u#a instru-.o de atri;ui-.o&

Ee#plos:

int x % ,; 

media % "n1 - n.# / .; 

temperatura % .1$,; 

tde % qtde - 1;

rex % ne+ )acorro"#; 

O;ser0e (ue eu tanto posso ter do lado direito do sinal de igual u# 0alor literal 3co#o e#te#peratura T %5&/ ou int T /4 co#o posso ter u#a epress.o 3co#o e# #edia T 3n5 n%4 %4&

Se o co#putador encontra u#a epress.o do lado direito da instru-.o de atri;ui-.o ele pri#eiroresol0e a epress.o e depois atri;ui o resultado 0ari$0el do lado es(uerdo& As regras de resolu-.ode epress>es s.o as #es#as aplicadas resolu-.o de epress>es #ate#$ticas&

4riando $nst7ncias de 4lasse

Va#os <untar o #)todo de"inido na 9igura % 3latir344 co# a classe de"inida na 9igura %13Cachorro4& 7ere#os u#a classe Cachorro co# u# #)todo latir34:

 pu;lic class Cachorro

 pu;lic 0oid latir34

Sste#&out&println3KAuL AuLM4N

9igura %2 8 De"ini-.o da Classe Cachorro co# #)todo latir34

A;ra o BlueJ e crie u# no0o pro<eto cha#ado Canil& Agora crie u#a no0a classe cha#adaCachorro delete as linhas de ee#plo criadas pelo BlueJ deiando apenas o ca;e-alho da classe eas cha0es e digite o cFdigo da 9igura %2& Va#os agora criar u# progra#a principal para poder testar o #)todo latir34 da classe Cachorro& +ara "a?er isso crie u#a no0a classe dentro do pro<eto Canil edê a ela o no#e de VidaDeCachorro& Delete as linhas de ee#plo e digite o cFdigo da 9igura %@a;aio:

 pu;lic class VidaDeCachorro

 pu;lic static 0oid #ain3Stringm args4 

Cachorro cao?inho T ne Cachorro34Ncao?inho&latir34N

Page 47: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 47/86

Curso B$sico de JAVA /2

9igura %@ 8 7estando o #)todo latir34 da classe Cachorro

Co#pile as duas classes para 0er se n.o h$ erros de digita-.o e a seguir eecute o progra#a principal& +ara eecutar o progra#a principal ;asta clicar so;re ele co# o ;ot.o direito do #ouse e

clicar na op-.o void main.tring9 args! (ue aparece no #enu 3se ti0er dQ0idas consulte as p$ginas 5 a 5 para 0er co#o se "a?4& O progra#a principal no nosso caso ) a classeVidaDeCachorro& Ao eecutar o progra#a ir$ a;rir u#a tela de console para ei;ir a #ensage#(ue nFs #anda#os i#pri#ir&Ve<a na 9igura % o resultado da eecu-.o:

9igura % 8 Resultado da eecu-.o do progra#a VidaDeCachorro

Agora 0a#os analisar o progra#a VidaDeCachorro& Co#o 0i#os ao iniciar a eecu-.o do progra#a principal o co#putador procura pelo #)todo principal para poder eecutar as instru->es(ue est.o no corpo deste #)todo& Ho progra#a VidaDeCachorro sF eiste u# #)todo <usta#ente o#)todo principal& A pri#eira instru-.o do #)todo principal ) u#a instru-.o de declara-.o de0ari$0el <unto co# a iniciali?a-.o desta 0ari$0el:

  Cachorro cao?inho T ne Cachorro34N

A pri#eira parte da instru-.o 3Cachorro cao?inho4 segue a sintae da instru-.o de declara-.o de0ari$0eis (ue co#o <$ 0i#os especi"ica o tipodedado e a seguir especi"ica o no#eda0ari$0el&

 Heste caso a 0ari$0el se cha#a cao?inho e ) do tipo Cachorro& U#a 0ari$0el do tipo int 3inteiro4ser0e para ar#a?enar 0alores inteiros u#a 0ari$0el do tipo char 3caracter4 ar#a?ena u# caracteru#a 0ari$0el do tipo String ar#a?ena u#a cadeia de caracteres e assi# por diante& U#a 0ari$0el dotipo Cachorro ser0e para ar#a?enar instncias da classe Cachorro ou se<a o;<etos da classeCachorro&

A cria-.o de u# o;<eto 3ou se<a de u#a instncia de u#a classe4 ) "eita atra0)s do co#ando ne<&O co#ando ne te# a seguinte sintae:

.inta3e do comando ne< 

ne+ tipodedado2"#; 

<tipo-de-dado>  <variavel> = new <tipo-de-dado>(); 

 Ho pri#eiro caso te#os a cria-.o de u# o;<eto de u#a classe& Ho segundo caso te#os a cria-.o deu# o;<eto e a atri;ui-.o deste o;<eto a u#a 0ari$0el& A "or#a #ais usada ) a segunda& Ha #aioriadas 0e?es ao criar#os u# o;<eto ar#a?ena#os este o;<eto e# u#a 0ari$0el para (ue possa#os dar ordens 3cha#ar os #)todos4 deste o;<eto posterior#ente& 9oi o (ue "i?e#os no nosso progra#aVidaDeCachorro&

Page 48: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 48/86

Curso B$sico de JAVA /@

Ao encontrar o co#ando ne o co#putador <$ sa;e (ue de0e criar u#a instncia de u#a classe#as precisa#os especi"icar (ue classe ) essa& 9a?e#os isto acrescentando apFs o co#ando ne ono#e do #)todo construtor& Co#o 0i#os o #)todo construtor te# o #es#o no#e da classe e )eecutado se#pre (ue u# no0o o;<eto ) criado&

+ortanto a segunda parte da pri#eira linha do nosso #)todo principal 3T ne Cachorro34N4 ) u#ainstru-.o de atri;ui-.o de u# no0o o;<eto da classe Cachorro& Ou se<a o co#putador ir$ criar u#ainstncia da classe Cachorro e a seguir atri;uir$ este no0o o;<eto 0ari$0el cao?inho&

 Ha linha seguinte te#os u#a cha#ada do #)todo latir34 direcionada ao o;<eto cao?inho:  cao?inho&latir34N

Ao encontrar esta instru-.o o co#putador interro#pe a eecu-.o do #)todo principal do progra#a principal e 0ai no progra#a Cachorro 3classe Cachorro4 procurar pelo #)todo latir34 para podereecutar as instru->es de"inidas neste #)todo& O #)todo latir34 da classe Cachorro te# apenas u#ainstru-.o a instru-.o de i#press.o:

  Sste#&out&println3KAuL AuLM4N

O co#ando Sste#&out&println34 #ostra no console o (ue esti0er especi"icado entre os parênteses& Ho nosso caso o co#putador ir$ a;rir u#a <anelinha de console para poder i#pri#ir KAuL AuLM&

Co#o 0i#os o processo de atri;uir u#a 0alor inicial a u#a no0a 0ari$0el ) cha#ado deiniciali?a-.o& Zuando esta no0a 0ari$0el te# co#o tipodedado u#a classe 3co#o no nossoee#plo4 este processo ) cha#ado de instancia-.o para "icar ;e# caracteri?ado (ue esta#osatri;uindo u#a instncia 3u# o;<eto4 no0a 0ari$0el&

.o(recarga de Métodos

Dentro da #inha classe eu posso dois ou #ais #)todos co# o #es#o no#e desde (ue eles tenha#a assinatura di"erente& Assinatura do #)todo corresponde ao no#edo#)todo #ais a lista de

 par#etros& Ve<a por ee#plo os ca;e-alhos de #)todos a;aio:

•  pu;lic 0oid latir34•  pu;lic 0oid #udar7a#anho3int no0ota#anho4•  pu;lic dou;le calcularedia3dou;le nota5 dou;le nota%4

 Ho pri#eiro ee#plo a assinatura do #)todo ) latir!& A(ui te#os o no#e do #)todo e #ais a listade par#etros no caso u#a lista 0a?ia por(ue n.o h$ par#etros&

 Ho segundo caso a assinatura do #)todo ) mudar#aman5oint novotaman5o!& 7e#os o no#e do#)todo seguido da lista de par#etros 3int no0o7a#anho4&

 Ho terceiro caso a assinatura do #)todo ) calcularMediadou(le nota=> dou(le nota!& 7e#os ono#e do #)todo e #ais a lista de par#etros 3dou;le nota5 dou;le nota%4&

Eu posso ter na #inha classe Cachorro u# segundo #)todo cha#ado latir desde (ue as assinaturas

dos dois #)todos latir se<a# di"erentes& A;ra a classe Cachorro do nosso pro<eto Canil e acrescenteu# no0o #)todo latir co#o descrito na 9igura '6:

Page 49: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 49/86

Curso B$sico de JAVA /

 pu;lic class Cachorro

 pu;lic 0oid latir34Sste#&out&println3KAuL AuLM4N

 pu;lic 0oid latir3String latido4

Sste#&out&println3latido4N

9igura '6 8 De"ini-.o da Classe Cachorro co# dois #)todos latir34

Esta no0a 0ers.o da classe Cachorro co# dois #)todos latir34 ) per"eita#ente 0$lida por(ue e#;oraos dois #)todos tenha# o #es#o no#e a lista de par#etros ) di"erente e portanto a assinatura )di"erente& A assinatura do pri#eiro #)todo latir ) latir! ou se<a o no#e do #)todo #ais a lista0a?ia de par#etros& A assinatura do segundo #)todo latir ) latir.tring latido! ou se<a o no#e do#)todo #ais a lista de par#etros co# o par#etro latido&

Co#o ) (ue o co#putador 0ai sa;er (ual dos dois #)todos latir ele de0e eecutar* Ele 0ai sa;er nahora (ue in0ocar#os o #)todo& Se ao cha#ar o #)todo latir eu n.o passar nenhu# par#etrodentro dos parênteses ele 0ai eecutar o #)todo latir se# par#etros& Se ao cha#ar o #)todo latireu passar u#a String dentro dos par#etros ele 0ai eecutar o #)todo latir co# o par#etro String&Ou se<a dependendo da "or#a (ue eu in0ocar o #)todo ele 0ai sa;er se ) pra eecutar o pri#eiroou o segundo #)todo latir&

Va#os criar u# progra#a para testar isto& as antes 0a#os "a?er u# pe(ueno a<uste no BlueJ&Eecute no0a#ente o progra#a VidaDeCachorro (ue est$ no pro<eto Canil& De0e ter aparecido u#a

 <anela igual a da 9igura '5 n)*

9igura '5 8 Resultado da segunda eecu-.o do progra#a VidaDeCachorro

Isso aconteceu por(ue o BlueJ n.o li#pou o resultado da eecu-.o anterior& Se 0ocê eecutar cinco

0e?es o progra#a VidaDeCachorro ir$ aparecer na <anela de console cinco 0e?es a String KAuLAuLM& Isso n.o ) ;o# para os nossos testes por(ue pode#os nos con"undir& Co#o 0ou sa;er o (ue"oi i#presso agora e o (ue "oi i#presso nas eecu->es anteriores* +ara corrigir isso eecute o

Page 50: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 50/86

Curso B$sico de JAVA 16

 progra#a VidaDeCachorro #ais u#a 0e?& Zuando aparecer a <anela de console cli(ue e# Optionsl$ no alto da <anela do console e depois cli(ue e# Clear screen at #ethod call 3,i#par tela a cadacha#ada de #)todo4& A partir de agora cada 0e? (ue eecutar#os o progra#a o BlueJ pri#eiroapaga o resultado da eecu-.o anterior& +ara testar eecute no0a#ente o VidaDeCachorro& Vaiaparecer a <anela de console co# apenas u#a linha KAuL AuLM co#o na 9igura %&

Va#os ent.o prosseguir co# os testes& V$ no pro<eto Canil e eclua o progra#a VidaDeCachorro3;asta clicar co# o ;ot.o direito do #ouse so;re a classe VidaDeCachorro e clicar e# Re#o0er no#enu (ue aparecer4& Agora crie u#a no0a classe cha#ada CoralDeCachorros& Delete as linhascriadas pelo BlueJ deiando so#ente o ca;e-alho da classe e as cha0es& Digite o cFdigo con"or#e a9igura '% a;aio:

 pu;lic class CoralDeCachorros

 pu;lic static 0oid #ain3Stringm args4 

Cachorro re T ne Cachorro34N

  Cachorro toto T ne Cachorro34N  re&latir34N  toto&latir3Ar"L AUL Ar"L AUL4N  re&latir3AUUUUUUUUUUUU4N

9igura '% 8 7estando a so;recarga do #)todo latir34

Co#pile e eecute o progra#a CoralDeCachorros& Se tudo correu ;e# 0ocê de0e ter rece;idoco#o resultado u#a <anela igual a da 9igura ''&

9igura '' 8 Resultado da eecu-.o do CoralDeCachorros

Va#os co#entar as instru->es do #)todo principal da classe CoralDeCachorros&

 Ha pri#eira linha te#os a de"ini-.o de u#a 0ari$0el cha#ada re 3do tipo Cachorro4 e a cria-.o eatri;ui-.o de u# no0o o;<eto da classe Cachorro a esta 0ari$0el&

 Ha segunda linha te#os a de"ini-.o de u#a 0ari$0el cha#ada toto 3do tipo Cachorro4 e a cria-.o eatri;ui-.o de u# no0o o;<eto da classe Cachorro a esta 0ari$0el&

 Ha terceira linha te#os a in0oca-.o do #)todo latir direcionado 0ari$0el re& Co#o "oi in0ocadoo #)todo se# passar nenhu# par#etro ser$ eecutado o pri#eiro #)todo latir a(uele (ue n.o

Page 51: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 51/86

Curso B$sico de JAVA 15

te# par#etros na sua assinatura& Este #)todo latir se# par#etros te# apenas u#a instru-.o:Sste#&out&println3KAuL AuLM4 (ue 0ai i#pri#ir na tela a string KAuL AuLM&

 Ha (uarta linha te#os u#a cha#ada do #)todo latir direcionada 0ari$0el toto& Co#o "oi in0ocadoo #)todo passando u# par#etro 3a String KAr"L AUL Ar"L AUL4 ser$ eecutado o segundo#)todo latir a(uele (ue rece;e u#a String co#o par#etro&

 Ha (uinta linha te#os u#a cha#ada do #)todo latir direcionada 0ari$0el re& Co#o "oi in0ocadoo #)todo passando u# par#etro 3a String KAUUUUUUUUUUUU4 ser$ eecutado o segundo#)todo latir a(uele (ue rece;e u#a String co#o par#etro&

O2eradores Aritméticos> "elacionais e L@gicos

Operadores s.o sP#;olos usados para indicar u#a deter#inada opera-.o& Os operadores arit#)ticoss.o ;astante conhecidos pois <$ esta#os ha;ituados a utili?$los nas epress>es #ate#$ticas& +oree#plo e# nota= nota o sinal de ) u# operador arit#)tico usado para indicar u#a opera-.o

de adi-.o& Os operadores usados no Ja0a se di0ide# e# arit#)ticos relacionais e lFgicos&

Operadores Arit#)ticos s.o usados para indicar opera->es arit#)ticas tais co#o adi-.o su;tra-.o#ultiplica-.o e di0is.o&

Operadores Relacionais s.o usados para indicar rela->es entre 0alores tais co#o j) #aior (uek j)igual ak j) #enor ou igual ak e etc&

Operadores ,Fgicos s.o usados e# instru->es de decis.o 3SEEH7XOSEHXO4 ou instru->es derepeti-.o 3loop4& Se#pre (ue eu "i?er u# teste #ais co#pleo aonde eu testo #ais de u#acondi-.o eu uso os operadores relacionais para co#;inar as 0$rias condi->es si#ples a "i# de"or#ar u#a condi-.o co#plea& +ara isso 0ou usar os operadores relacionais para epressar a id)iade jEk jOUk e jHXOk&

As ta;elas a seguir #ostra# os operadores #ais usados no Ja0a&

O2erador 0escrição E3em2lo so#a dois nQ#eros ' 1 su;trai dos nQ#eros (tde 2 #ultiplica dois nQ#eros 0elocidade te#po di0ide dois nQ#eros '&21 5&%

ostra o resto da di0is.o 2 %

O Qlti#o operador #ostrado na ta;ela 3 4 n.o te# o #es#o sentido de percentual (ue esta#osha;ituados a usar& Ho Ja0a ele ser0e para indicar o resto inteiro de u#a di0is.o& Ho ee#plo#ostrado esta#os di0idindo 2 por %& O resto da di0is.o neste caso ) 5&O progra#a a seguir testa os operadores arit#)ticos&

pu(lic class 3esta4peradoresAritméticos

  pu(lic static void main "5trin678 ar6s# 

int resultado % 1 - .; // resultado é i6ual a 9  5:stem$out$println"resultado#;

  resultado % resultado 1; // resultado a6ora é i6ual a .

Page 52: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 52/86

Curso B$sico de JAVA 1%

  5:stem$out$println"resultado#;

  resultado % resultado * .; // resultado a6ora é i6ual a ,  5:stem$out$println"resultado#;

  resultado % resultado / .; // resultado a6ora é i6ual a .  5:stem$out$println"resultado#;

  resultado % resultado - ; // resultado a6ora é i6ual a 10  resultado % resultado < =; // resultado a6ora é i6ual a 9  5:stem$out$println"resultado#;

  !!

)rie um novo pro>eto no ?lue@ e crie dentro deste pro>eto uma classe camada3esta4peradoresAritméticos para di6itar& compilar e executar o pro6rama acima$4 resultado da execução será o mostrado na i6ura 9,$

9igura '/ 8 Resultado da eecu-.o do 7estaOperadoresArit#)ticos

O2erador 0escrição E3em2loTT ) igual a i" 3idade TT '4LT ) di"erente de hile 3)Visi0el LT "alse4^ ) #aior (ue i" 3(tdeAlunos ̂ 164Y ) #enor (ue do co#andos until 3(tde ̂ '64

^T ) #aior ou igual a hile 3total ̂ T 5664YT ) #enor ou igual a i" 3nota YT 2&14

Os operadores relacionais s.o usados e# testes de co#para-.o& S.o usados nas instru->es dedecis.o 3i"thenelse 3seent.osen.o44 e nas instru->es de repeti-.o 3hile 3en(uanto4 dountil

3"a-aat)4 e etc4& Vere#os a sintae dessas instru->es #ais adiante&O;ser0e (ue o sP#;olo para testar a igualdade entre dois 0alores ) jTTk e n.o jTk co#o esta#osacostu#ados a usar e# #ate#$tica& O sP#;olo de di"erente ) jLTk e# 0e? do jk (ue esta#osha;ituados a usar& O progra#a Co#paraValores a;aio testa os operadores relacionais:

pu(lic class )omparaBalores

  pu(lic static void main"5trin678 ar6s#  int valor1 % C0;  int valor. % 100;  if "valor1 %% valor.# 5:stem$out$println"DC0 é i6ual a 100D#;  if "valor1 E% valor.# 5:stem$out$println"DC0 é diferente de 100D#;

  if "valor1 2 valor.# 5:stem$out$println"DC0 é maior que 100D#;  if "valor1 valor.# 5:stem$out$println"DC0 é menor que 100D#;  if "valor1 2% valor.# 5:stem$out$println"DC0 é maior ou i6ual a 100D#; 

Page 53: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 53/86

Curso B$sico de JAVA 1'

  if "valor1 % valor.# 5:stem$out$println"DC0 é menor ou i6ual a 100D#;  !!

 Crie u# no0o pro<eto no BlueJ crie u#a classe cha#ada Co#paraValores digite co#pile eeecute o cFdigo aci#a& Você de0e rece;er co#o resultado u#a <anela igual a da 9igura '1:

9igura '1 8 Resultado da eecu-.o do Co#paraValores

Va#os analisar o progra#a Co#paraValores& Ha pri#eira linha do #)todo principal ) declaradau#a 0ari$0el do tipo nQ#ero inteiro 3int4 cha#ada 0alor5 e na #es#a linha ) "eita a iniciali?a-.odessa 0ari$0el atri;uindo a ela o 0alor literal 16& Ha segunda linha ) declarada outra 0ari$0el dotipo nQ#ero inteiro 3int4 cha#ada 0alor% e na #es#a linha ) "eita a iniciali?a-.o dessa 0ari$0elatri;uindo a ela o 0alor literal 566&

A partir daP usa#os u#a instru-.o de decis.o co#u# a todas as ,inguagens de +rogra#a-.o& ainstru-.o SEEH7XO& Vere#os #ais adiante a sintae dessa instru-.o #as para poder#os entendero Co#paraValores 0a#os eplicar rapida#ente a id)ia& A instru-.o SEEH7XO testa u#a condi-.oe se ela "or 0erdadeira ele eecuta o co#ando (ue est$ no EH7O 30e<a as 9iguras 52 e 5@ na

 p$gina %'4& E# inglês SE 0ira I9 e EH7XO 0ira 7`EH& A #aioria das linguagens "a? esses testesescre0endo i- BcondiçãoC t5en BcomandoC& +or)# o Ja0a o#ite o 7`EH ent.o e# Ja0aescre0e#os i- BcondiçãoC BcomandoC& o (ue aparece nas linhas ' at) @ do #)todo principal doCo#paraValores&

 Ha terceira linha ) "eito o teste i- valor= TT valor!6 Essa instru-.o testa se 0alor5 ) igual a 0alor%&O co#putador ir$ su;stituir o no#e da 0ari$0el pelo seu conteQdo para poder "a?er o teste& Assi# ainstru-.o se trans"or#a e# i- D FF =!6 So#ente se o resultado do teste "or 0erdadeiro 3true4 )(ue o co#putador eecuta o co#ando seguinte: a instru-.o de i#press.o .;stem6out62rintlnGD éigual a =H!I Co#o 316 TT 5664 ) "also ent.o o co#putador n.o eecuta o co#ando dei#press.o&

 Ha (uarta linha ) "eito o teste i- valor= F valor!6 Essa instru-.o testa se 0alor5 ) di"erente de0alor%& O co#putador ir$ su;stituir o no#e da 0ari$0el pelo seu conteQdo para poder "a?er o teste&Assi# a instru-.o se trans"or#a e# i- D F =!6 So#ente se o resultado do teste "or 0erdadeiro3true4 ) (ue o co#putador eecuta o co#ando seguinte: a instru-.o de i#press.o.;stem6out62rintlnGD é di-erente de =H!I Co#o 316 LT 5664 ) 0erdadeiro ent.o o co#putadoreecuta o co#ando de i#press.o e i#pri#e na <anela de console a String K16 ) di"erente de 566M&

 Ha (uinta linha ) "eito o teste i- valor= C valor!6 Essa instru-.o testa se 0alor5 ) #aior (ue0alor%& O co#putador ir$ su;stituir o no#e da 0ari$0el pelo seu conteQdo para poder "a?er o teste&

Assi# a instru-.o se trans"or#a e# i- D C =!6 So#ente se o resultado do teste "or 0erdadeiro3true4 ) (ue o co#putador eecuta o co#ando seguinte: a instru-.o de i#press.o

Page 54: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 54/86

Curso B$sico de JAVA 1/

.;stem6out62rintlnGD é maior que =H!I Co#o 316 ^ 5664 ) "also ent.o o co#putador n.oeecuta o co#ando de i#press.o&

 Ha seta linha ) "eito o teste i- valor= B valor!6 Essa instru-.o testa se 0alor5 ) #enor (ue 0alor%&O co#putador ir$ su;stituir o no#e da 0ari$0el pelo seu conteQdo para poder "a?er o teste& Assi# ainstru-.o se trans"or#a e# i- D B =!6 So#ente se o resultado do teste "or 0erdadeiro 3true4 ) (ue

o co#putador eecuta o co#ando seguinte: a instru-.o de i#press.o .;stem6out62rintlnGD émenor que =H!I Co#o 316 Y 5664 ) 0erdadeiro ent.o o co#putador eecuta o co#ando dei#press.o e i#pri#e na tela a String K16 ) #enor (ue 566M&

 Ha s)ti#a linha ) "eito o teste i- valor= CF valor!6 Essa instru-.o testa se 0alor5 ) #aior (ue ouigual a 0alor%& O co#putador ir$ su;stituir o no#e da 0ari$0el pelo seu conteQdo para poder "a?er oteste& Assi# a instru-.o se trans"or#a e# i- D CF =!6 So#ente se o resultado do teste "or0erdadeiro 3true4 ) (ue o co#putador eecuta o co#ando seguinte: a instru-.o de i#press.o.;stem6out62rintlnGD é maior ou igual a =H!I Co#o 316 ^T 5664 ) "also ent.o o co#putadorn.o eecuta o co#ando de i#press.o&

9inal#ente na oita0a linha ) "eito o teste i- valor= BF valor!6 Essa instru-.o testa se 0alor5 )#enor (ue ou igual a 0alor%& O co#putador ir$ su;stituir o no#e da 0ari$0el pelo seu conteQdo para

 poder "a?er o teste& Assi# a instru-.o se trans"or#a e# i- D BF =!6 So#ente se o resultado doteste "or 0erdadeiro 3true4 ) (ue o co#putador eecuta o co#ando seguinte: a instru-.o dei#press.o .;stem6out62rintlnGD é menor ou igual a =H!I Co#o 316 YT 5664 ) 0erdadeiroent.o o co#putador eecuta o co#ando de i#press.o e i#pri#e na tela a String K16 ) #enor ouigual a 566M&

O2erador 0escrição E3em2loqq E i" 33Y'4 qq 3^244

  OU i" 33nota5 Y 14 3nota% Y 14L HXO i" 3L estourou,i#ite4

Os operadores lFgicos s.o usados para testar 0$rias condi->es 3no caso do qq e do 4 ou parain0erter u# teste 3no caso do L4&

 Ho pri#eiro ee#plo a condi-.o ser$ 0erdadeira so#ente se "or #enor (ue ' e  "or #aior (ue 2&Ou se<a as duas condi->es testadas te# (ue ser 0erdadeiras para (ue o resultado da epress.o se<aconsiderado 0erdadeiro&

 Ho segundo ee#plo a condi-.o ser$ 0erdadeira se nota5 "or #enor (ue 1 ou se nota% "or #enor(ue 1& Basta (ue u#a das duas condi->es se<a 0erdadeira para (ue o resultado da epress.o se<aconsiderado 0erdadeiro&

 Ho terceiro ee#plo esta#os usando u#a 0ari$0el ;ooleana& As 0ari$0eis ;ooleanas sF pode#ar#a?enar u# dos 0alores ;ooleanos: true 30erdadeiro4 ou "alse 3"also4& O sinal de L in0erte oconteQdo da 0ari$0el& Assi# supondo (ue a 0ari$0el estourou,i#ite ar#a?ene o 0alor true o testedo ee#plo 0ai dar "also por(ue jL truek e(ui0ale a "alse& O progra#a 7este,Fgico testa osoperadores lFgicos ta#;)# conhecidos co#o operadores ;ooleanos por(ue tra;alha# co# 0alores0erdadeiro ou "also&

Page 55: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 55/86

Curso B$sico de JAVA 11

pu(lic class 3esteFG6ico

  pu(lic static void main"5trin678 ar6s#  int valor1 % 90;  int valor. % 11C;  if""valor1 %% 90# HH "valor. 2 valor1##

5:stem$out$println"D90 é i6ual a 90 I 11C é maior que 90D#;  if""valor1 %% .C0# HH "valor. 2 valor1##

5:stem$out$println"D90 é i6ual a .C0 I 11C é maior que 90D#;  if""valor1 %% .C0# JJ "valor. 2 valor1##

5:stem$out$println"D90 é i6ual a .C0 4K 11C é maior que 90D#;  if""valor1 %% .C0# JJ "valor. %% =##

5:stem$out$println"D90 é i6ual a .C0 4K 11C é i6ual a =D#;  !!

Crie u# no0o pro<eto no BlueJ crie u#a classe cha#ada 7este,Fgico digite co#pile e eecute ocFdigo aci#a& Você de0e rece;er co#o resultado u#a <anela igual a da 9igura ':

9igura ' 8 Resultado da eecu-.o do 7este,Fgico

Va#os analisar o progra#a 7este,Fgico& Ha pri#eira linha do #)todo principal ) declarada u#a0ari$0el do tipo nQ#ero inteiro 3int4 cha#ada 0alor5 e na #es#a linha ) "eita a iniciali?a-.o dessa0ari$0el atri;uindo a ela o 0alor literal '6& Ha segunda linha ) declarada outra 0ari$0el do tiponQ#ero inteiro 3int4 cha#ada 0alor% e na #es#a linha ) "eita a iniciali?a-.o dessa 0ari$0elatri;uindo a ela o 0alor literal 551&

 Ha terceira linha ) "eito o teste i- valor= TT K! valor C valor=!!6 Essa instru-.o testa duascondi->es e so#ente 0ai eecutar a instru-.o de i#press.o se as duas condi->es "ore# 0erdadeiras&O co#putador ir$ su;stituir o no#e da 0ari$0el pelo seu conteQdo para poder "a?er o teste& Assi# ainstru-.o se trans"or#a e# i- K FF K! ==D C K!6 Co#o 3'6 TT '64 ) 0erdadeiro e 3551 ^'64 ta#;)# ) 0erdadeiro ent.o o co#putador eecuta o co#ando de i#press.o e i#pri#e na tela aString K'6 ) igual a '6 E 551 ) #aior (ue '6&

A seguir ) "eito o teste i- valor= TT D! valor C valor=!!6 Essa instru-.o testa duascondi->es e so#ente 0ai eecutar a instru-.o de i#press.o se as duas condi->es "ore# 0erdadeiras&O co#putador ir$ su;stituir o no#e da 0ari$0el pelo seu conteQdo para poder "a?er o teste& Assi# ainstru-.o se trans"or#a e# i- K FF D! ==D C K!6 A(ui te#os (ue 3551 ^ '64 ) 0erdadeiro

 por)# 3'6TT%164 ) "also& Co#o o operador lFgico qq sF resulta e# 0erdadeiro se as duascondi->es "ore# 0erdadeiras ent.o o resultado do teste ) "also e o co#putador n.o eecuta oco#ando de i#press.o&

Page 56: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 56/86

Curso B$sico de JAVA 1

O prFi#o teste ) i- valor= TT D! valor C valor=!!6 Essa instru-.o testa duas condi->es e0ai eecutar a instru-.o de i#press.o se u#a das duas condi->es 3ou as duas4 "ore# 0erdadeiras&Ao contr$rio do jqqk (ue sF resulta 0erdadeiro se a pri#eira condi-.o "or 0erdadeira E a segundata#;)# o jk 0ai resultar 0erdadeiro se a pri#eira condi-.o "or 0erdadeira O/ a segunda condi-.o"or 0erdadeira& Basta (ue u#a se<a 0erdadeira para o resultado do teste dar 0erdadeiro& O

co#putador ir$ su;stituir o no#e da 0ari$0el pelo seu conteQdo para poder "a?er o teste& Assi# ainstru-.o se trans"or#a e# i- K FF D! ==D C K!6 A pri#eira condi-.o 3'6 TT %164 ) "alsa por)# a segunda 3551 ̂ '64 ) 0erdadeira& O resultado do teste ) 0erdadeiro e o co#putador eecutao co#ando de i#press.o e i#pri#e na tela a String '6 ) igual a %16 OU 551 ) #aior (ue '6&

9inal#ente o Qlti#o teste ) i- valor= TT D! valor FF N!!6 Essa instru-.o testa duascondi->es e 0ai eecutar a instru-.o de i#press.o se u#a das duas condi->es 3ou as duas4 "ore#0erdadeiras& O co#putador ir$ su;stituir o no#e da 0ari$0el pelo seu conteQdo para poder "a?er oteste& Assi# a instru-.o se trans"or#a e# i- K FF D! ==D FF N!6 A pri#eira condi-.o3'6 TT %164 ) "alsa e a segunda 3551 TT 24 ta#;)# ) "alsa& O resultado do teste ) "also e oco#putador n.o eecuta o co#ando de i#press.o&

 

O2eradores Aritméticos com(inados com Atri(uição

Zuando eu (uero so#ar u# 0alor a u#a 0ari$0el geral#ente usa#os u#a instru-.o de atri;ui-.oso#ando o 0alor (ue (uere#os 0ari$0el e atri;uindo o resultado da so#a 0ari$0el& Ee#plo:  (tdeAlunos T (tdeAlunos 1

as eiste u#a #aneira a;re0iada de "a?er a #es#a coisa no Ja0a:  (tdeAlunos T 1

Esta instru-.o "a? a #es#a coisa (ue a instru-.o anterior ou se<a so#a 1 ao conteQdo da 0ari$0el(tdeAlunos&

+osso "a?er isso co# todos os outros operadores arit#)ticos& Ee#plos:• 0alor T 56 ) o #es#o (ue escre0er 0alor T 0alor 56• nu# T 2 ) o #es#o (ue escre0er nu# T nu# 8 2• (tde T % ) o #es#o (ue escre0er (tde T (tde %

4oncatenação de .trings

O sinal de jk n.o ) usado apenas para so#ar 0alores nu#)ricos& Ele ta#;)# pode ser usado paraconcatenar 3<untar4 Strings&

I#agine (ue eu tenho as seguintes instru->es e# u# progra#a:

  String no#e T KJo.oMN  String so;reno#e T K da Sil0aMN  String no#eCo#pleto T no#e so;reno#e

Page 57: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 57/86

Curso B$sico de JAVA 12

  Sste#&out&println3no#eCo#pleto4N

O resultado do co#ando de i#press.o seria João da .ilva&

$ncremento e 0ecremento

Outra "or#a de au#entar o 0alor de u#a 0ari$0el ) o operador de incre#ento& Incre#entar u#a0ari$0el signi"ica so#ar 5 ao 0alor dessa 0ari$0el& O Ja0a usa o operador jk para "a?er isso&Ve<a no ee#plo:

  int nu# T 52N  nu#N nu# agora 0ale 5@

ApFs a eecu-.o da segunda linha o 0alor de nu# passa a ser 5@& Isto e(ui0aleria a escre0er

nu# T nu# 5 ou ent.o nu# T 5&

A #es#a coisa 0ale para o sinal jj & Heste caso esta#os di#inuindo o 0alor da 0ari$0el& Isto )cha#ado de decre#ento&

  int nu# T 52N  nu#N nu# agora 0ale 5

O uso do incre#ento ou decre#ento depende da posi-.o onde eles se encontra# na epress.o&Eiste# casos e# (ue eu (uero (ue a epress.o se<a calculada pri#eiro e o 0alor se<a incre#entadodepois& Hesse caso eu uso o jk depois da 0ari$0el& E# outros casos o 0alor de0e ser incre#etado

 pri#eiro e sF depois ) (ue eu 0ou calcular a epress.o& Hestes casos eu 0ou colocar o sinal de jkantes da 0ari$0el& Aco#panhe o ee#plo:

  int T 2Nint T 2Nint a T % N a 0ale 5 e 0ale @int ; T % N ; 0ale 5/ e 0ale @

Ve<a (ue nos dois casos as 0ari$0eis "ora# incre#entadas passando de 2 para @& as no pri#eirocaso o 0alor de "oi incre#entado pri#eiro passando de 2 para @ e sF depois "oi calculada a

epress.o 3% @4 resultando e# 5& Ho segundo caso o incre#ento 0e# depois de calculada aepress.o& Ou se<a pri#eiro ) e"etuado o c$lculo da epress.o 3% 24 (ue resulta e# 5/ e sF depoisa 0ari$0el ) incre#entada passando de 2 para @&

$nstruç+es e 8locos de $nstruç+es

U# progra#a ) u#a se(uência de instru->es ou se<a cada linha do #eu progra#a cont)# u#ainstru-.o& As instru->es pode# ser di0ididas e#:

• instru-.o de declara-.o

• instru-.o de atri;ui-.o• instru-.o de incre#ento ou decre#ento 3 ou 4• in0oca-.o de #)todos

Page 58: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 58/86

Curso B$sico de JAVA 1@

• cria-.o de o;<etos

Ve<a alguns ee#plos:

• Circulo solN instru-.o de declara-.o• dou;le nota5N instru-.o de declara-.o• nota5 T 2&1N instru-.o de atri;ui-.oN• #edia T 3nota5 nota%4 % instru-.o de atri;ui-.o• (tdeAlunosN instru-.o de incre#ento 3e(ui0ale a (tdeAlunos T (tdeAlunos 54• alturaN instru-.o de decre#ento 3e(ui0ale a altura T altura 8 54• re&latir34N cha#ada de #)todo• sol&#udar7a#anho3@64N cha#ada de #)todo• ne Circulo34N cria-.o de o;<eto

O;ser0e (ue todas as instru->es ter#ina# co# pontoe0Prgula& HFs pode#os e# u#a #es#a linhaco#;inar duas instru->es:

• dou;le nota5 T 2&1N instru-.o de declara-.o e atri;ui-.o• Circulo sol T ne Circulo34N instru-.o de declara-.o cria-.o de o;<eto e atri;ui-.o

Blocos de instru->es s.o u#a ou #ais instru->es entre cha0es& Elas pode# ser usadas e# (ual(uerlugar e# (ue u#a instru-.o si#ples pode ser usada& =eral#ente usa#os os ;locos de instru->es(uando por ee#plo te#os u#a instru-.o de decis.o 3i- 4 e te#os #ais de u#a instru-.o a serreali?ada no t5en ou no else& Ve<a u# ee#plo no cFdigo a;aio:

pu(lic class )alculaLédia

  pu(lic static void main"5trin678 ar6s#  int qtdeAprovados % 0;  int qtdeMeprovados % 0;

dou(le nota1 % =;  dou(le nota. % 10;  dou(le media % "nota1 - nota.# / .;

if "media 2% =# 

  5:stem$out$println"NAprovadoO#;  5:stem$out$println"N?oas érias EO#;  qtdeAprovados--;

!  else    5:stem$out$println"NMeprovadoO#;  5:stem$out$println"NPos vemos na recuperação $$$O#;  qtdeMeprovados--;  !

!!

Page 59: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 59/86

Curso B$sico de JAVA 1

$nstruç+es de 0ecisão

As instru->es de decis.o ser0e# para eecutar u# co#ando 3ou ;loco de co#andos4 dependendodo resultado do teste de u#a condi-.o& A sintae ) a seguinte:

.inta3e da $nstrução de 0ecisão

if(<expresso>)

  <comando (ou !loco de comandos)>  

if (<expresso>)  <comando (ou !loco de comandos)> 

else

  <comando (ou !loco de comandos)>  

• e32ressão ) (ual(uer condi-.o 3ou grupo de condi->es4 (ue resulte e# u# 0alor ;ooleano30erdadeiro ou "also4& +ode ser si#ples 3e: Y ' TT idade LT 5@ etc4 ou co#posta3e: 33 Y '4 qq 3 TT 5144 33nota5 Y 14 3nota% Y 144 etc4& 7a#;)# pode ser u#a0ari$0el ;ooleana& Heste caso a 0ari$0el ser$ su;stituPda pelo seu conteQdo e ir$ eecutar oco#ando 3ou co#andos4 do then se o conteQdo da 0ari$0el "or true 30erdadeiro4 e oco#ando 3ou co#andos4 do else se o conteQdo da 0ari$0el "or "alse 3"also4

3e: i" )Visi0el &&&4 &• comando ou (loco de comandos! ) a instru-.o 3ou instru->es4 a ser eecutada caso o

resultado da epress.o se<a true 30erdadeiro4& Se "or u#a instru-.o sF n.o h$ necessidade deusar cha0es por)# n.o de0e#os es(uecer (ue toda instru-.o ter#ina co# pontoe0Prgula&Ee#plo: i" #edia ^T 2 Sste#&out&println3KApro0adoM4NCaso ha<a #ais de u#a instru-.o a ser eecutada ) preciso coloc$las entre cha0es"or#ando u# ;loco de co#andos&Ee#plo: i" #edia ^T 2    Sste#&out&println3KApro0adoM4N

  Sste#&out&println3:Boas 9)rias LM4N  (tdeApro0adosN 

A #aioria das linguagens de progra#a-.o usa as instru->es de decis.o escre0endoi- Be32ressãoC t5en BcomandosC& +or)# o Ja0a o#ite o 7`EH ent.o e# Ja0a escre0e#osi- Be32ressãoC BcomandosC> ou i- Be32ressãoC BcomandosC else BcomandosC> se esti0erusando a "or#a #ais co#pleta&

U#a o;ser0a-.o i#portante: repare (ue a epress.o 0e# se#pre entre parênteses& H.o se escre0ei- num C K  #as si# i- num C K!6

 

Page 60: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 60/86

Curso B$sico de JAVA 6

$nstruç+es de "e2etição loo2!

As instru->es de repeti-.o s.o usadas para repetir a eecu-.o de u# co#ando 3ou ;loco deco#andos4& Va#os 0er duas dessas instru->es a instru-.o <5ile e a instru-.o -or&

.inta3e da $nstrução <5ile

w"ile (<expresso>)

  #

  <comando (ou !loco de comandos)> 

  $ 

Ao encontrar u#a instru-.o hile 3<5ile (uer di?er enquanto e# português4 o co#putadorresol0e a epress.o& Se o resultado "or true 30erdadeiro4 ent.o ele eecuta as instru->es (ue est.odentro das cha0es& Zuando ter#inar de eecutar as instru->es ele 0olta a resol0er a epress.o& Seela "or igual a true ele torna a entrar no corpo do hile e eecutar as instru->es & E per#aneceassi# resol0endo a epress.o e eecutando as instru->es at) (ue o resultado se<a "also& Zuando aoresol0er a epress.o o resultado "or "alse ent.o o co#putador n.o entra no corpo do ;loco e segueeecutando as linhas do #eu progra#a& Ve<a u# ee#plo:

pu(lic class 3estaQile   pu(lic static void main"5trin678 ar6s#  int contador % 0;  +ile "contador 10#   5:stem$out$println"D)ontador éR D - contador#;  contador--;  !  !!

Crie u# pro<eto no BlueJ e digite o cFdigo aci#a e# u#a no0a classe 7estabhile& Co#pile eeecute o progra#a e o resultado de0er$ ser igual ao da 9igura '2&

9igura '2 8 Resultado da eecu-.o do 7estabhile

Page 61: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 61/86

Curso B$sico de JAVA 5

 Ha pri#eira linha do #)todo principal ) declarada u#a 0ari$0el inteira cha#ada contador (ue )iniciali?ada co# o 0alor ?ero& A seguir testa#os a condi-.o do hile pela pri#eira 0e?& Oco#putador su;stitui a 0ari$0el pelo seu conteQdo e a epress.o 0ira 36 Y 564 o (ue ) 0erdadeiro e

 portanto o co#putador eecuta as instru->es (ue est.o dentro do hile& A pri#eira instru-.o dentrodo corpo do hile ) u#a instru-.o de i#press.o e o co#putador i#pri#e na tela KContador ): 6M& Asegunda instru-.o incre#enta o contador ou se<a so#a 5 ao seu 0alor e portanto contador passa a

guardar o 0alor 5&

Volta#os a testar a condi-.o do hile e agora a epress.o ) 35 Y 564 o (ue ta#;)# ) 0erdadeiro o(ue signi"ica (ue o co#putador 0ai i#pri#ir KContador ): 5M e 0ai incre#entar o 0alor de contador3(ue passar$ a ser igual a %4 e 0olta a testar a condi-.o do hile e assi# por diante&Zuando o 0alor da 0ari$0el contador "or igual a o teste do hile ser$ 3 Y 564 o (ue ) 0erdade e oco#putador entra no0a#ente no corpo do hile i#pri#e KContador ): M e incre#enta o 0alor docontador (ue passa a ser 56&

Dessa 0e? (uando "or "eito o teste do hile 356 Y 564 o resultado ser$ "also o (ue 0ai interro#per aeecu-.o do hile e co#o n.o h$ #ais nenhu#a instru-.o para ser eecutada apFs o hile o

 progra#a ter#ina&

Va#os 0er outro ee#plo& V$ no BlueJ e a;ra o pro<eto Canil& A;ra a classe Cachorro e acrescenteu# no0o #)todo latir con"or#e o cFdigo a;aio&

pu(lic void latir"int numBeSes#  +ile "numBeSes 2 0# 

5:stem$out$println"NAKAKAKO#;numBeSes;

  !

!

Agora a classe cachorro te# três #)todos latir #as cada u# te# u#a assinatura di"erente& Aassinatura do pri#eiro ) o no#e do #)todo 3latir4 #ais u#a lista de par#etros 0a?ia& A assinaturado segundo ) latir e #ais o par#etro latido (ue ) do tipo String& Este terceiro #)todo latir (ueaca;a#os de criar te# co#o assinatura o no#e latir e #ais o par#etro nu#Ve?es (ue ) u#inteiro& Co#o as assinaturas s.o di"erentes o co#putador 0ai sa;er (ual #)todo latir de0e eecutardependendo do3s4 par#etro3s4 (ue eu passar (uando in0ocar o #)todo& Co#pile a classe Cachorro

 para se certi"icar de (ue n.o h$ erros&

Agora a;ra a classe CoralDeCachorros e altere o seu conteQdo para "icar igual ao cFdigo a;aio:

pu(lic class )oralTe)acorros   pu(lic static void main"5trin678 ar6s#  )acorro (idu % ne+ )acorro"#;

  )acorro duque % ne+ )acorro"#;  (idu$latir"#;  duque$latir"NauauO#;  (idu$latir"9#;

  !!

Co#pile e eecute o progra#a e o resultado de0e ser igual ao da 9igura '@&

Page 62: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 62/86

Curso B$sico de JAVA %

9igura '2 8 Resultado da eecu-.o do 7estabhile

A pri#eira cha#ada de #)todo 3;idu&latir344 ) direcionada ao ;idu& Co#o n.o "oi passado nenhu# par#etro o co#putador eecuta o pri#eiro #)todo latir da classe Cachorro a(uele (ue n.o rece;enenhu# par#etro e (ue i#pri#e KAuL AuLM na tela de console&

A segunda cha#ada de #)todo 3du(ue&latir3KauauM44 ) direcionada ao du(ue& Co#o est$ passandou# par#etro o co#putador n.o 0ai eecutar o pri#eiro #)todo latir pois ele ) u# #)todo se#

 par#etros& Ho entanto te#os dentro da classe Cachorro dois #)todos latir (ue rece;e# u# par#etro& Co#o o co#putador 0ai sa;er (ual dos dois de0e eecutar* Isso 0ai depender de (ualtipo de par#etro a gente passar na hora de cha#ar o #)todo& Repare (ue e# du(ue&latir3KauauM4est$ sendo passado ao #)todo latir u# par#etro do tipo String 3KauauM4& +ortanto o co#putador0ai eecutar o segundo #)todo latir da classe Cachorro (ue ) o (ue rece;e u#a String co#o

 par#etro&

+or "i# te#os outra cha#ada de #)todo direcionada ao ;idu 3;idu&latir3'44& Ho0a#ente te#os u#acha#ada ao #)todo latir passando u# par#etro& SF (ue desta 0e? n.o esta#os passando u#aString #as si# u# nQ#ero inteiro 3'4& +ortanto <$ (ue esta#os passando co#o par#etro u#nQ#ero inteiro o co#putador ir$ eecutar o terceiro #)todo latir da classe Cachorro (ue "oi

de"inido contendo u# par#etro do tipo inteiro na assinatura do #)todo&

Este terceiro #)todo latir co#e-a testando se nu#Ve?es ) #aior (ue ?ero& A 0ari$0el nu#Ve?esrece;eu o 0alor (ue nFs passa#os na cha#ada do #)todo 3'4& +ortanto o teste se trans"or#a e# 3'^ 64 o (ue ) 0erdadeiro e portanto o co#putador eecuta o ;loco de instru->es dentro do hile& A

 pri#eira instru-.o ) i#pri#ir KAUAUAUM e a segunda ) decre#entar a 0ari$0el nu#Ve?es (ue passa a ser igual a %&

O co#putador 0olta a testar o hile e dessa 0e? a epress.o 3nu#Ve?es ^ 64 se trans"or#a e# 3% ^64 (ue ) 0erdadeiro e ele eecuta as instru->es do hile i#pri#indo KAUAUAUM edecre#entando nu#Ve?es& Ho0a#ente torna a testar a condi-.o do hile (ue dessa 0e? ser$ 35 ^ 64

(ue no0a#ente ) 0erdadeiro e no0a#ente o co#putador 0ai i#pri#ir KAUAUAUM e decre#entarnu#Ve?es (ue passar$ a ser 6&

Desta 0e? ao testar o hile a epress.o 3nu#Ve?es ^ 64 se trans"or#a e# 36 ^ 64 (ue ) "also e portanto o co#putador ter#ina a eecu-.o do hile e 0olta ao progra#a CoralDeCachorros& Co#on.o h$ #ais nenhu#a instru-.o apFs o ;idu&latir3'4 o progra#a CoralDeCachorros ter#ina&

Page 63: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 63/86

Curso B$sico de JAVA '

.inta3e da $nstrução -or

for (<iniciali%a&o ' <expresso> ' <incremento ou decremento>)

  #

  <comando (ou !loco de comandos)> 

  $ 

• iniciali1ação  a(ui s.o criadas e iniciali?adas as 0ari$0eis (ue ser.o usadas para controlaro nu#ero de itera->es 3repeti->es4& Esses co#andos s.o eecutados apenas u#a 0e? noinPcio da eecu-.o do loop 3cha#a#os de loop u# con<unto de instru->es (ue ) eecutadorepetidas 0e?es co#o no caso das instru->es -or e <5ile4&

• e32ressão 8 a(ui ) "eito o teste para 0er se as instru->es do corpo do "or ser.o eecutadas oun.o& Se o resultado do teste "or 0erdadeiro ent.o ele eecuta as instru->es sen.o ele ter#inaa eecu-.o da instru-.o "or& Ou se<a as instru->es ser.o eecutadas repetida#ente at) (ue oteste da epress.o resulte e# "also& Zuando acontecer isto a instru-.o ter#ina&

• incremento ou decremento 8 esses co#andos s.o reali?ados ao "inal de cada itera-.o 3ouse<a ao "inal de cada eecu-.o do ;loco de instru->es do corpo do "or4& Hor#al#ente te#os

a(ui instru->es de incre#ento 3so#ar 54 ou decre#ento 3su;trair 54 das 0ari$0eis criadas nainiciali?a-.o&

Ao encontrar u#a instru-.o "or o co#putador pri#eiro eecuta o3s4 co#ando3s4 especi"icado nainiciali?a-.o&

A seguir ele testa a epress.o para 0er se 0ai eecutar as instru->es de dentro do loop& Se oresultado "or 0erdadeiro ele eecuta as instru->es 3"a? u#a itera-.o4& Ao t)r#ino da eecu-.o dasinstru->es ele eecuta os co#andos (ue est.o na se-.o incre#ento ou decre#ento& ApFs eecutar asinstru->es de incre#ento ou decre#ento ele 0olta a testar a epress.o para sa;er se 0ai ter#inar oloop 3caso o resultado da epress.o se<a igual a "also4 ou se 0ai reali?ar no0a itera-.o 3caso o

resultado da epress.o se<a 0erdadeiro4& Se o resultado da epress.o der 0erdadeiro ele "a? no0aitera-.o 3eecuta as instru->es do corpo do "or4 depois eecuta as instru->es deincre#entodecre#ento e torna a testar a epress.o e assi# por diante at) (ue o teste da epress.oresulte e# "also (uando ent.o o co#putador ir$ ter#inar a eecu-.o da instru-.o "or& O progra#a7esta9or tra? u# ee#plo de uso da instru-.o "or&

pu(lic class 3estaor   pu(lic static void main"5trin678 ar6s#  for"int i%1; i,; i--#  5:stem$out$println"DIsta é a N - i - Na iteração do loopO#;  !

  !!

Crie u# no0o pro<eto no BlueJ crie u#a classe cha#ada 7esta9or digite o cFdigo aci#aco#pile eeecute& O resultado de0e ser igual ao #ostrado na 9igura '@&

Page 64: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 64/86

Curso B$sico de JAVA /

9igura '@ 8 Resultado da eecu-.o do 7esta9or 

Va#os analisar este progra#a& A pri#eira instru-.o do #)todo principal ) u#a instru-.o derepeti-.o -or& Ao encontrar u#a instru-.o "or o co#putador incial#ente eecuta a3s4 instru-.o3>es4contida3s4 na pri#eira se-.o do "or a se-.o de iniciali?a-.o& Heste caso sF h$ u#a instru-.o aonde) declarada a 0ari$0el inteira i e ) iniciali?ada co# o 0alor 5&

A seguir o co#putador ir$ testar e eecutar repetidas 0e?es as instru->es do loop at) (ue o testeresulte e# "also& Ho nosso caso a epress.o ) 3i Y /4& Da pri#eira 0e? (ue "or testar a epress.o ela

se trans"or#ar$ e# 35 Y /4 (ue ) 0erdadeiro e portanto as instru->es de dentro do loop ser.oeecutadas& Ho corpo do loop sF h$ u#a instru-.o de i#press.o& Ve<a (ue ) "eita u#a concatena-.ode três 0alores para poder gerar a String (ue ser$ i#pressa na tela& +ri#eiro 0e# a String KEsta ) aM& Esta String ) concatenada 3ligada unida4 ao conteQdo da 0ari$0el i 3neste caso 54& O resultadodesta concatena-.o ) concatenado String Ka itera-.o do loopM& O resultado i#presso ser$ a StringKEsta ) a 5a itera-.o do loopM&

ApFs ter#inar a eecu-.o da instru-.o de i#press.o o co#putador ir$ eecutar a3s4 intru-.o3>es4de incre#entodecre#ento& Heste caso sF h$ u#a instru-.o: i (ue ir$ incre#entar o 0alor da0ari$0el i& Co#o i esta0a co# o 0alor 5 ela agora passa a 0aler %&

O co#putador 0olta a testar a epress.o 3i Y /4 (ue agora 0ai resultar e# 3% Y /4 (ue ) 0erdadeiro eele 0olta a reali?ar u#a itera-.o do loop 3eecutar as instru->es do corpo do "or4& Agora a instru-.ode i#press.o se trans"or#a e# KEsta ) a %a itera-.o do loopM& Depois a 0ari$0el i ser$ incre#entada#ais u#a 0e? passando a ar#a?enar o 0alor '&

O co#putador 0olta a testar a epress.o 3i Y /4 (ue agora 0ai resultar e# 3' Y /4 (ue ) 0erdadeiro eele 0olta a reali?ar u#a itera-.o do loop& Agora a instru-.o de i#press.o se trans"or#a e# KEsta ) a'a itera-.o do loopM& Depois a 0ari$0el i ser$ incre#entada #ais u#a 0e? passando a ar#a?enar o0alor /&

O co#putador 0olta a testar a epress.o 3i Y /4& SF (ue agora a epress.o 0ai resultar e# 3/ Y /4

(ue ) "also e o co#putador interro#pe a eecu-.o do "or&

$m2ortando classes das (i(liotecas do Java

U# dos pontos "ortes de u#a ,inguage# de +rogra#a-.o Orientada a O;<etos ) a possi;ilidade deapro0eitar o tra;alho (ue "oi desen0ol0ido por outros& Zuando "a?e#os o donload da JRE ou JD! e instala#os e# nosso co#putador esta#os instalando ta#;)# as ;i;liotecas de classes do Ja0a

(ue conta# co# cerca de '&166 classes agrupadas e# pastas e su;pastas por categorias& +ara poder#os utili?ar e# u# progra#a u#a dessas classes do Ja0a precisa#os in"or#ar ao co#putador 

Page 65: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 65/86

Curso B$sico de JAVA 1

e# (ue pasta se encontra a classe (ue pretende#os utili?ar& 9a?e#os isso usando a instru-.o dei#porta-.o im2ort&

O progra#a IdadeE#Dias #ostra u# ee#plo de utili?a-.o de u#a classe i#portada da ;i;liotecado Ja0a:

import >avax$s+in6$@4ptionUane;pu(lic class VdadeImTias  pu(lic static void main"5trin678 ar6s#    5trin6 strin6Vdade;  int idadeAnos&idadeTias;

strin6Vdade % @4ptionUane$so+VnputTialo6"DTi6ite sua idadeD#;idadeAnos % Vnte6er$parseVnt"strin6Vdade#;

  idadeTias % idadeAnos * 9WC; 

@4ptionUane$so+Lessa6eTialo6"null&D5ua idade em dias éR D - idadeTias#;

  !!

Crie u# no0o pro<eto no BlueJ crie u#a no0a classe cha#ada IdadeE#Dias digite co#pile eeecute o progra#a& Ao eecutar o progra#a #ostra u#a <anela para (ue o usu$rio digite a suaidade& Ve<a na 9igura ':

9igura ' 8 Janela de Input 3o usu$rio de0e digitar sua idade e clicar e# O!4

A seguir o progra#a calcula a idade e# dias e #ostra outra <anela contendo o resultado& +oree#plo se o usu$rio digitar /% o resultado ser$:

9igura /6 8 Janela de Output co# o resultado

Va#os analisar o progra#a IdadeE#Dias& Este progra#a utili?a a classe JOption+ane (ue ) u#aclasse gr$"ica (ue est$ na ;i;lioteca do Ja0a na pasta <a0a e su;pasta sing& A pri#eira instru-.odo progra#a 3antes #es#o do ca;e-alho da classe4 ) a instru-.o de i#porta-.o (ue indica aoco#putador onde encontrar esta classe: im2ort )ava36s<ing6JO2tionPane&

Dentro do #)todo principal s.o declaradas três 0ari$0eis: u#a String 3stringIdade4 e duas int3idadeAnos e idadeDias4&

A seguir ) "eita a in0oca-.o do #)todo shoInputDialog da classe JOption+ane& HFs aprende#os(ue nor#al#ente as classes n.o eecuta# #)todos sF os o;<etos 3instncias das classes4 "a?e#isto& +ortanto de0erPa#os pri#eiro criar u# o;<eto da classe JOption+ane para poder cha#ar o

Page 66: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 66/86

Curso B$sico de JAVA

#)todo& +or)# esta classe te# #)todos especiais (ue n.o precisa# ser direcionados a nenhu#o;<eto pode# ser cha#ados so#ente #encionando o no#e da classe& o (ue o progra#a "a? aoin0)s de escre0er no#edeo;<eto6no#edo#)todo co#o esta#os acostu#ados a "a?er ele escre0eno#edaclasse6no#edo#)todo&Este #)todo ) a;re u#a <anela de input 3entrada4 de dados aonde

 pede ao usu$rio para digitar a sua idade& O resultado ser$ atri;uPdo 0ari$0el stringIdade& 9oi usadau#a 0ari$0el do tipo String para ar#a?enar o resultado por(ue (ual(uer coisa (ue o usu$rio digite )

considerado u#a String #es#o (ue ele digite u# nQ#ero inteiro co#o ) o caso a(ui&

A prFi#a instru-.o ) u# co#ando para trans"or#ar esta String e# u# nQ#ero inteiro e oresultado desta trans"or#a-.o ser$ atri;uPdo 0ari$0el idadeAnos& +or ee#plo se o usu$riodigitou /% na <anela o /% ser$ atri;uPdo inicial#ente 0ari$0el stringIdade co#o sendo a StringK/%M& Essa String precisa ser trans"or#ada e# nQ#ero para (ue possa#os "a?er o c$lculo& Oco#ando Integer&parseInt trans"or#a o K/%M e# /%& Esse /% 3nQ#ero inteiro4 ser$ ar#a?enado na0ari$0el idadeAnos&

A seguir ) "eita a con0ers.o para dias #ultiplicando o conteQdo de idadeAnos por '1& O resultado) ar#a?enado na 0ari$0el idadeDias&

9inal#ente a Qlti#a instru-.o #ostra u#a <anela co# o resultado da con0ers.o da idade e# anos para a idade e# dias& Hote (ue shoessageDialog ta#;)# ) u# #)todo especial da classeJOption+ane (ue ta#;)# pode ser cha#ado direta#ente se# necessidade da cria-.o de o;<etos&

A instru-.o de i#porta-.o pode i#portar apenas u#a classe 3co#o "i?e#os no progra#aIdadeE#Dias4 ou u# grupo de classes& +ara i#portar u# grupo de classes usa#os u# asterisco 34

 para indicar (ue (uere#os ter acesso a todas as classes da(uela pasta& Ee#plo: im2ort )ava6a<t6I

 Ho entanto se dentro da pasta indicada h$ su;pastas o uso do asterisco n.o nos d$ acessoauto#$tico a elas #as so#ente s classes de"inidas dentro da pasta&

O ideal ) se#pre colocar as instru->es de i#porta-.o indi0idual#ente u#a para cada pasta #es#o(ue ha<a 0$rias classes pertencentes #es#a pasta& Isto a<udar a docu#entar o progra#a e a#ostrar de onde 0iera# as classes (ue esta#os usando&

+ara pes(uisar as pastas e su;pastas da ;i;lioteca do Ja0a ;asta ir e#: se $or +indo1s

"( em CAruivos de Programas 'ava 'd`D!F!Hsrc!<ip= numero ap;s o 'd` pode variar dependendo da versão ue estiver instalada 

 se $or Sinu)

  "( em ^usr^'ava '̂d`D!!^src!<ip = numero ap;s o 'd` pode variar dependendo da versão ue estiver instalada

 Algu#as pastas #ais usadas s.o:

•  <a0a&at 8 cont)# as classes necess$rias cria-.o de inter"aces gr$"icas•  <a0a&io 8 classes para entrada e saPda de dados•  <a0a&lang 8 classes "unda#entais& Estas classes s.o t.o utili?adas (ue n.o ) necess$rios usar

a instru-.o de i#porta-.o no inPcio do progra#a para usar classes dessa pasta&•  <a0a&#ath 8 cont)# classes para reali?ar c$lculos arit#)ticos•  <a0a&util 8 cont)# classes (ue s.o utilit$rios co#o data e hora gerador de nQ#eros

aleatFrios etc&•  <a0a&s(l 8 classes para acesso a ;anco de dados&• Ja0a&sing 8 classe de co#ponentes gr$"icos

Page 67: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 67/86

Curso B$sico de JAVA 2

+or)# ) #uito di"Pcil a;rir entender o "unciona#ento das classes a;rindo os "ontes direta#ente&Eiste na p$gina de donloads do Ja0a u#a pasta co# a docu#enta-.o das classes e# `7,& Essadocu#enta-.o lista todas as in"or#a->es so;re os ca#pos construtores e #)todos de cada classe&Essa pasta te# o no#e de <dfdoc e <$ est$ no CD do Curso B$sico Ja0a& SF (ue est$ tudo e#

inglês in"eli?#ente n.o eiste u#a 0ers.o e# português&

4riando um arquivo )ar

Os progra#as (ue esta#os criando para ee#pli"icar os conceitos do Ja0a s.o ;e# si#ples e ca;e#e# apenas u#a ou duas classes& +or)# progra#as #aiores (ue s.o di0ididos e# 0$rios #Fdulos3co#o o BatalhaHa0al4 eige# (ue o usu$rio copie todos os #Fdulos para poder eecutar o

 progra#a& O BlueJ te# u# recurso (ue <unta todos os #Fdulos e# u# Qnico ar(ui0o (ue ca;e at)

e# u# dis(uete& Este ar(ui0o ) co#pactado no "or#ato <ar& Va#os ee#pli"icar criando u#aar(ui0o <ar para o pro<eto BatalhaHa0al (ue est$ no CD&

A;ra o BlueJ 0$ e# Open +ro<ect 3A;rir +ro<eto4 na0egue at) o CD e a;ra o pro<eto BatalhaHa0al&Agora cli(ue e# +ro<ect e depois e# Create Jar 9ile 3Criar Ar(ui0o Jar4& Vai a;rir u#a <anela co#oa da 9igura /5&

9igura /5 8 Janela de Cria-.o do Ar(ui0o Jar 

preciso especi"icar (ual dos #Fdulos ) o progra#a principal 3a(uele (ue cont)# o #)todo principal4& Ho caso do BatalhaHa0al o progra#a principal ) o BattleshipApp& Cli(ue na seta para ;aio ao lado do ca#po ain class e cli(ue e# BattleshipApp na lista suspensa 39igura /%4&

9igura /% 8 Especi"icando a classe principal

Page 68: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 68/86

Curso B$sico de JAVA @

A seguir cli(ue no ;ot.o 4ontinue& Ir$ a;rir u#a <anela para especi"icar o no#e e local aonde 0ocê0ai sal0ar o ar(ui0o criado& Ha0egue at) a pasta dese<ada digite u# no#e para o ar(ui0o e cli(uee# Create 39igura /'4&

9igura /' 8 Escolhendo u# no#e para o ar(ui0o <ar 

O ar(ui0o criado 0ai ter o no#e (ue 0ocê escolheu e "inal 6)ar& Este ar(ui0o pode ser gra0ado e#u# dis(uete CD ou pendri0e e le0ado para (ual(uer co#putador de (ual(uer plata"or#a& Se oco#putador ti0er JV instalada ;asta clicar duas 0e?es no ar(ui0o (ue ele 0ai eecutar& Has 0$rias0ers>es do bindos e na #aioria das 0ers>es de ,inu isto "unciona& In"eli?#ente no etass n.o

 ;asta clicar duas 0e?es no ar(ui0o <ar&

+ara eecutar no etass ) preciso a;rir o fon(ueror 3casinha4 na0egar at) onde est$ ar#a?enado oar(ui0o clicar no #enu Janela depois e# Mostrar Emulador de #erminal e ir$ a;rir u#a <anelade fonsole na parte de ;aio do fon(ueror& A seguir digite )ava %)ar Bnome,do,arquivo,)arC etecle EH7ER e o ar(ui0o ir$ eecutar& Aten-.o su;stitua o Yno#edoar(ui0o<ar^ do co#andoaci#a pelo no#e (ue 0ocê escolheu (uando criou o ar(ui0o <ar&

4onclusão

Esta apostila apresentou os aspectos ;$sicos da +rogra#a-.o e da linguage# Ja0a& O o;<eti0o

 principal "oi orientar os pri#eiros passos nu#a #at)ria ;astante etensa& Zue# (uiser real#enteescre0er progra#as #ais co#pleos ter$ (ue aprender 0$rias outras coisas (ue "ora# deiadas delado nesta apostila& +or)# os conceitos e as id)ias ;$sicas por tr$s de u# progra#a s.o se#pre os#es#os independente de sua co#pleidade ou ta#anho&

Zue# (uiser apenas eecutar os progra#as criados por outras pessoas <$ aprendeu o (ue est$ portr$s dos seus progra#as e <ogos "a0oritos& Zue# se interessar pela #at)ria e (uiser desen0ol0er seus

 prFprios progra#as ter$ u# longo ca#inho de aprendi?ado e desco;ertas pela "rente& +rogra#ar )u#a das ati0idades #ais criati0as pra?erosas e di0ertidas da in"or#$tica& Boa Sorte e di0irta#seL

Page 69: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 69/86

Curso B$sico de JAVA

8i(liogra-ia

Curso de Ja0a B$sico 8 engue 9$;io& Centro de Co#puta-.o da Unica#p

,Fgica de +rogra#a-.o 8 Celta In"or#$tica 3&celtain"or#atica&co#&;r 4

Curso de +rogra#a-.o e# Ja0a 8 9igueiredo ,ucPlia Ca#ar.o de& Cadernos de In"or#$tica 8Secretaria de Estado de Educa-.o =

Beginning +rogra##ing ith Ja0a "or Du##ies 8 Burd Barr& bile +u;lishing Inc&

Ja0a Short Course 8 J=uru& 3<=uru&co#4

7he Ja0a 7utorial 8 <a0a&sun&co#& 3http:<a0a&sun&co#docs;oofstutorial<a0a7OC&ht#l4

O;<ects 9irst ith Ja0a 8 a practical introduction using BlueJ 8 Barnes Da0id e !olling ichael&

+earson Education +rentice `all&

 bifipedia 8 &ifipedia&co#&;r 

Page 70: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 70/86

Curso B$sico de JAVA 26

APQ0$4E A % 0in7mica com 8lueJ

 Hesta se-.o 0a#os usar os recursos do BlueJ e dois dos pro<etos do CD para #ostrar na pr$tica osconceitos de classes e o;<etos (ue 0i#os na teoria& O BlueJ per#ite (ue nFs crie#os a partir de

u#a classe instncias 3o;<etos4 para (ue possa#os dar ordens 3in0ocar #)todos4 se# a necessidadede digitar u# progra#a co#pilalo e eecutalo& Va#os "a?er isto co# os pro<etos -ormas e2intura do CD&

Colo(ue o CD no dri0e de CDs e copie as pastas -ormas,2intura para algu#a pasta no seuco#putador&

A;ra o BlueJ& Cli(ue e# +ro<ect e depois e# Open +ro<ect 3A;rir +ro<eto4& Ha <anela (ue a;rirna0egue at) a pasta aonde 0ocê copiou as pastas "or#as e pintura& Repare (ue estas duas pastas te#u# Pcone di"erente das outras pastas& Isto ) por(ue o BlueJ sa;e (ue dentro desta pasta te# cFdigos"onte e respecti0os ;tecodes& Dê u# duplocli(ue e# "or#as 3ou ent.o cli(ue u#a 0e? e e#

seguida cli(ue e# Open 3A;rir44&

A parte de ci#a da <anela do BlueJ #ostra as classes 3progra#as4 (ue co#p>e# este pro<eto&+ode#os 0er (ue este pro<eto tê# (uatro classes& As setas #ostra# (ue as classes CirculoZuadrado e 7ringulo usa# o;<etos da classe 7ela&

A parte de ;aio ) o K#undo 0irtualM e nele ha;ita# os o;<etos criados a partir das classes& Sa;e#os(ue a classe n.o "a? nada ela ) #era#ente u#a descri-.o dos atri;utos e #)todos& Zue# pode"a?er algu#a coisa 3eecutar as ordens4 ) o o;<eto& +ortanto precisa#os ter algu# o;<eto no nosso#undo 0irtual para (ue possa#os dar ordens para ele&

 Ho Ja0a cria#os o;<etos atra0)s do co#ando ne<& Ho BlueJ pode#os testar os #)todos co#o senFs "osse#os o progra#a principal& Clicar nos #)todos de u# o;<eto para dar ordens a ele ) oe(ui0alente a escre0er as instru->es de cha#ada de #)todo no progra#a& Os o;<etos s.o criados a

 partir de u#a classe por isso clica#os co# o ;ot.o direito do #ouse e# ci#a de u#a classe eescolhe#os a op-.o ne para criar u# o;<eto 3instncia4 desta classe& Cli(ue co# o ;ot.o direitoe# ci#a da classe Circulo e cli(ue e# ne Circulo34& 7odo o;<eto precisa de u# no#e ent.o oBlueJ ir$ a;rir u#a <anela para 0ocê digitar o no#e do o;<eto& Ve<a (ue ele sugere u# no#e 3nestecaso circulo54& Você pode aceitar a sugest.o e clicar e# O! ou pode escolher outro no#e e clicare# O!& Va#os aceitar a sugest.o& Cli(ue e# O!&

 Ha parte de ;aio do BlueJ 3o #undo 0irtual4 aparecer$ u# o;<eto cha#ado circulo5& Ve<a (ue ainicial do o;<eto ) #inQscula e# contraste co# a inicial da classe (ue ) #aiQscula& +ara poder#osdar ordens ao o;<eto precisarPa#os pes(uisar seus #)todos& O BlueJ "a? isto para nFs& Ele lê ocFdigo"onte da classe e anota os ca;e-alhos dos #)todos& Ao clicar#os no o;<eto co# o ;ot.odireito ele #ostra a lista de #)todos para (ue possa#os escolher&

Cli(ue co# o ;ot.o direito do #ouse e# ci#a do o;<eto circulo5& Aparecer$ u#a lista co# do?e#)todos (ue s.o as a->es (ue o circulo5 sa;e eecutar& Agora 0a#os dar as ordens para 0er o (ueacontece& A partir do resultado podere#os tirar conclus>es e aprender o (ue cada #)todo "a?&

Cli(ue no #)todo tornarVisP0el34& Viu o (ue aconteceu* Agora cli(ue no #)todo tornarIn0isP0el34&

7orne a clicar no tornarVisi0el34& J$ deu pra perce;er o (ue eles "a?e#*

Page 71: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 71/86

Curso B$sico de JAVA 25

Cli(ue agora no #)todo #o0erDireita34& Viu o (ue ele "a?& Cli(ue de no0o e# #o0erDireita34&Cli(ue u#a terceira 0e?& +ode#os perce;er (ue a cada 0e? ele #o0e u# pouco para a direita& Ser$(ue ele #o0e u#a distncia di"erente a cada 0e? ou ) se#pre a #es#a distncia*

Eperi#ente agora os #)todos #o0erEs(uerda34 #o0erCi#a34 e #o0erBaio34&

Va#os agora eperi#entar o #)todo #o0er`ori?ontal3int distancia4& Repare (ue ele te# u# par#etro (ue ) u# 0alor inteiro& Zuando 0ocê clicar e# #o0er`ori?ontal ir$ a;rir u#a <anela para0ocê digitar o 0alor do par#etro (ue 0ocê est$ passando para o #)todo& Eperi#ente#o0er`ori?ontal3264& E se agora 0ocê ordenar ao circulo5 para #o0er`ori?ontal3164 ser$ (ue ele0ai #o0er #ais 16 posi->es 3piels4 para a direita ou ser$ (ue ele 0ai para a posi-.o 16 no eio *Ou se<a ser$ (ue o par#etro (ue esta#os passando para o #)todo ) a;soluto ou relati0o*

E se agora eu (uiser (ue o circulo5 se #o0a 566 piels para a es(uerda* ,e#;rese (ue o par#etrodistancia ) u# 0alor inteiro e 0alores inteiros pode# ser tanto positi0os co#o negati0os&

7ente o #)todo #o0er`ori?ontalDe0agar passando tanto 0alores positi0os co#o negati0os&

Eperi#ente agora os #)todos #o0erVertical e #o0erVerticalDe0agar& ,e#;rese (ue o eio natela do Ja0a ) in0ertido ou se<a #edida (ue nos a"asta#os da orige# 3au#enta#os o 0alor de 4o circulo5 0ai para ;aio e #edida (ue nos aproi#a#os da orige# 3di#inuP#os o 0alor de 4 ele0ai para ci#a&

O #)todo #udar7a#anho pede u# par#etro inteiro& Eperi#ente este #)todo algu#as 0e?es passando 0alores altos e ;aios co#o 566 56 16 %66 '6 etc& O (ue acontece se passar#os u#0alor negati0o co#o par#etro* Ser$ (ue este par#etro ) relati0o co#o o #o0er`ori?ontal (ueso#a0a o 0alor passado co#o par#etro ao 0alor da posi-.o* Ou ser$ (ue este #)todo3#udar7a#anho4 pega o 0alor passado co#o par#etro para ser o no0o ta#anho do cPrculo5* Hestecaso o par#etro de #udar7a#anho ) a;soluto ou relati0o* +reste aten-.o no no#e do par#etro3no0oDi#etro4& Eiste cPrculo de di#etro negati0o*

+or "i# o #)todo #udarCor rece;e co#o par#etro u#a String& ,e#;rese na hora de passar o par#etro (ue toda String te# (ue estar entre aspas& ,eia o co#ent$rio do #)todo 3(ue aparece notopo da <anela (uando in0oca#os o #)todo4 para sa;er (uais as cores 0$lidas& O (ue acontece se

 passar#os co#o par#etro u#a cor (ue n.o est$ na lista de cores 0$lidas*

Agora crie# instncias de Zuadrado e 7ringulo e eperi#ente# os seus #)todos& Vocês 0.o perce;er (ue eles se co#porta# de "or#a idêntica ao circulo& A ece-.o ) o #)todo

#udar7a#anho direcionado ao triangulo (ue pede dois par#etros ao in0)s de u#& 9a-a 0$riascha#adas deste #)todo para tentar desco;rir o (ue ) o pri#eiro par#etro e o (ue ) o segundo& O(ue acontece se 0ocê passar u# 0alor negati0o no pri#eiro par#etro 3altura4* E no segundo3largura4*

Zuando <$ ti0er aprendido a #o0i#entar os o;<etos cli(ue e# +ro<ect e Close 39echar4 para "echareste pro<eto e depois e# +ro<ect Open +ro<ect e depois e# "or#as para iniciar u# no0o teste&

Desta 0e? 0ocê ter$ (ue criar o;<etos para "a?er o desenho a;aio:

Page 72: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 72/86

Curso B$sico de JAVA 2%

9igura // 8 ,ar doce lar

Zuantos o;<etos ser.o necess$rios para "a?er este desenho* Zuantos da classe Circulo* E (uantos daclasse Zuadrado* E da classe 7riangulo* Crie os o;<etos necess$rios e dê as ordens necess$rias para#o0er #udar cor e #udar ta#anho at) "or#ar o desenho& claro (ue n.o 0ai "icar idêntico #as

 procure "a?er o #ais aproi#ado (ue conseguir&

Depois de concluPdo o desenho cli(ue co# o ;ot.o direito e# ci#a do o;<eto circulo5 e cli(ue e#Inspect& Vai a;rir a <anela do Inspetor (ue #ostra os atri;utos e seus conteQdos& Dê algu#as ordensao circulo5 e 0e<a os conteQdos dos atri;utos #odi"icare# #edida (ue 0ocê #anda #o0er

#udar7a#anho #udarCor tornarIn0isi0el e etc&

As duas "erra#entas do BlueJ a<uda# a sa;er tudo (ue (uere#os a respeito de u#a classedesconhecida& Basta criar u# o;<eto da classe e usar o ;ot.o direito do #ouse so;re o o;<eto criado

 para 0er a lista de #)todos e o Inspetor para 0er o conteQdo dos atri;utos&

Agora "eche o pro<eto 3+ro<ect e Close4 e torne a a;rilo 3+ro<ect Open +ro<ect "or#as e Open4&Você 0ai tornar a "a?er o desenho #as agora ele te# (ue sair eata#ente igual 9igura //&

Desta 0e? 0ocê n.o 0ai usar os no#es (ue o BlueJ sugerir #as 0ai escolher no#es #ais ade(uadosa cada o;<eto co#o sol para o circulo telhado para o triangulo e paredes e <anela para os(uadrados&

7a#;)# precisar$ sa;er de alguns dados adicionais& Ao ter#inar o desenho as paredes de0er.o tero ta#anho de 566 a posi-.o de0er$ ser 6 e a posi-.o de0er$ ser 5'6& A <anela de0er$ terta#anho '6 posi-.o @6 e posi-.o 516& O telhado de0er$ ter ta#anho 16 3altura4 e 5/6 3largura4

 posi-.o 556 e posi-.o @1 e o sol de0er$ ter ta#anho 6 posi-.o %66 e posi-.o 16&

Use o Inspetor nos o;<etos para sa;er e# (ue posi-.o e posi-.o eles co#e-a# (uando s.ocriados&

Anote e# u#a "olha os passos (ue 0ocê der para cada o;<eto& Considere co#o passos apenas acria-.o e as ordens (ue 0ocê der aos o;<etos& +or ee#plo ne Circulo34 sol sol&tornarVisi0el34sol&#udar7a#anho364 etc&

Page 73: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 73/86

Curso B$sico de JAVA 2'

U#a 0e? ter#inado o desenho se 0ocê anotou direito de0er$ ter "eito as paredes e# / passos a <anela e# 1 passos o telhado e# 1 passos e o sol e# passos&

9eche o pro<eto "or#as e a;ra o pro<eto pintura& Crie u#a instncia da classe +intura& Ve<a (uantos#)todos te# o pintura5& In0o(ue o #)todo desenhar34& O (ue aconteceu* In0o(ue os #)todosdeiar+retoEBranco34 e depois o deiarColorido34&

Agora a;ra o "onte da classe +intura 3Cli(ue na classe +intura co# o ;ot.o direito e depois e#Open Editor 3A;rir Editor44& Encontre o #)todo desenhar34 e 0e<a o seu conteQdo& S.o os #es#os%6 passos (ue 0ocê deu para "a?er o seu desenho& Ou se<a para "a?er (ual(uer progra#a ;astaconhecer as classes e sa;er (uais s.o os atri;utos e #)todos& Ent.o ) sF criar o;<etos da classe e darordens a eles seguindo as regras e sintaes do Ja0a&

7ente i#aginar (uais as ordens (ue precisa# ser dadas 3e pra (ue# elas te# (ue ser dadas4 paraalcan-ar o resultado do #)todo deiar+retoEBranco& E para o #)todo deiarColorido* Con"ira no"onte do +intura o (ue ele "e? para conseguir este e"eito&

Agora altere o #)todo desenhar acrescentando no0as instru->es& Dê u#a 3ou #ais4 no0a orde# para o sol para (ue ao clicar e# desenhar34 o co#putador al)# de desenhar a casinha co# o sol#ostre u# e"eito de prdosol ou se<a o sol desli?ando lenta#ente para ;aio at) desaparecer nohori?onte& ,e#;rese (ue o sol 3(ue ) u# o;<eto da classe Circulo4 sF sa;e reali?ar os 5% #)todosda classe Circulo& +ortanto a orde# (ue 0ocê 0ai dar te# (ue ser u#a das 5% (ue ele sa;e reali?ar&

Depois de conseguir este e"eito des"a-a a altera-.o (ue 0ocê "e? de #odo (ue o #)todo desenhar"i(ue de no0o do <eito (ue era 3desenhe u#a casa e u# sol parados4&

Crie u# no0o #)todo cha#ado entardecer34 (ue produ? o e"eito de prdosol& Ou se<a 0ocê 0ai"a?er a #es#a coisa (ue antes #as sF (ue e# 0e? de alterar o #)todo desenhar34 0ai criar u#no0o #)todo para isso& Agora ao clicar co# o ;ot.o direito e# ci#a do o;<eto pintura5 de0er.oaparecer (uatro #)todos e n.o apenas três& O (uarto #)todo de0er$ ser <usta#ente o entardecer34&Ao clicar e# entardecer34 aP de0ere#os 0er o sol se pondo& ,e#;rese (ue para testar te#os

 pri#eiro (ue clicar e# desenhar34 para poder aparecer a casinha e o sol& SF ent.o 0a#os clicar e#entardecer para 0er o sol se por&

Se 0ocê conseguiu "a?er o #)todo entardecer34 "uncionar crie agora u# #)todo cha#adoa#anhecer34 (ue "a? o contr$rio do entardecer34 ou se<a #ostra o sol su;indo no c)u& ,e#;rese(ue para testar o a#anhecer34 ) preciso pri#eiro desenhar34 e depois entardecer34&

Estas s.o apenas algu#as id)ias de ati0idades a sere# "eitas co# o;<etos dos pro<etos "or#as e pintura #as outras poder.o ser criadas ;asta usar a i#agina-.o&

Page 74: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 74/86

Curso B$sico de JAVA 2/

APQ0$4E 8 % E3em2los de Programas 4omentados

Os progra#as 3ta#;)# cha#ados de aplica->es ou aplicati0os4 escritos e# Ja0a pode# serdi0ididos e# três categorias: aplica->es console aplica->es gr$"icas e applets&

A2licaç+es 4onsole s.o a(uelas (ue usa# a <anela de console para rece;er dados do usu$rio oui#pri#ir dados na tela& Se o progra#a pede para o usu$rio digitar algu#a coisa o cursor "ica piscando na <anela de console indicando (ue est$ aguardando o usu$rio entrar co# algu#ain"or#a-.o& Zuando o usu$rio ter#ina de digitar e tecla EH7ER o progra#a continua a eecutar&Se o progra#a te# algu#a instru-.o de i#press.o 3Sste#&out&println4 o teto a ser i#pressoaparece na <anela do console& As aplica->es console s.o #ais si#ples de aprender e (ue# est$iniciando na progra#a-.o co#e-a "a?endo essas aplica->es para poder praticar e entender as regrase sintaes do Ja0a&

A2licaç+es *rá-icas s.o a(uelas (ue usa# recursos das classes gr$"icas& Essas classes "ica#ar#a?enadas na ;i;lioteca de classes do Ja0a nas pastas <a0a&at e <a0a&sing& +ara "a?er

aplica->es gr$"icas ) preciso conhecer #uito #ais do (ue aprende#os nesta apostila ;$sica& Hor#al#ente sF co#e-a#os a aprender aplica->es gr$"icas depois de ter do#inado as aplica->esconsole& Hestes progra#asee#plo 0a#os usar alguns recursos gr$"icos por)# se# entrar e##uitos detalhes para n.o co#plicar&

A22lets s.o aplica->es gr$"icas "eitas especi"ica#ente para rodar dentro de u# ;roser& Os ;roser s.o os progra#as usados para na0egar na internet& Os #ais conhecidos s.o o Internet Eplorer dobindos e o 9ire"o do ,inu& Essas aplica->es usa# classes gr$"icas (ue est.o na ;i;lioteca

 <a0a&applet& Assi# co#o as aplica->es gr$"icas nor#al#ente co#e-a#os a aprender a "a?er appletsdepois de ter#os aprendido ;e# as aplica->es console&

Va#os portanto criar alguns progra#as si#ples e 0a#os co#entalos passoapasso&

Programa = , Programa4omEco

V$ no BlueJ crie u# no0o pro<eto e crie u#a no0a classe dentro desse pro<eto cha#ada

+rogra#aCo#Eco& Delete as linhas de ee#plo criadas pelo BlueJ e digite o cFdigo a;aio:

import >ava$util$5canner;pu(lic class Uro6rama)omIco  pu(lic static void main"5trin678 ar6s#    5canner teclado % ne+ 5canner"5:stem$in#;  5:stem$out$println"NTi6ite qualquer coisa e tecle IP3IMO#;  5trin6 lina % teclado$nextFine"#;

5:stem$out$println"lina#;!

!

Page 75: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 75/86

Curso B$sico de JAVA 21

Co#pile e eecute o progra#a& Este progra#a pede para 0ocê digitar u# teto e a seguir i#pri#ede 0olta o teto (ue 0ocê digitou& O resultado de0e ser algo parecido co# o da 9igura /1 a;aio:

9igura /1 8 Resultado da eecu-.o do +rogra#aCo#Eco

Va#os analisar o progra#a& Ha pri#eira instru-.o do #)todo principal ) criado u# o;<eto cha#adoteclado pertencente classe Scanner (ue ) u#a das '&166 classes da ;i;lioteca do Ja0a& +ara

 poder#os ter acesso esta classe te#os (ue usar o co#ando im2ort  )ava6util6.canner na pri#eiralinha do progra#a para indicar ao co#putador onde encontrar a classe Scanner& Esse o;<eto3teclado4 "uncionar$ co#o entrada de dados do nosso progra#a ou se<a ) atra0)s dele (ue ousu$rio ir$ digitar os dados de entrada&

 Ha segunda instru-.o do #)todo principal h$ u# co#ando de i#press.o (ue i#pri#e na tela aString KDigite (ual(uer coisa e tecle EH7ERM& Co#o o co#ando Sste#&out&println i#pri#e natela de console e nFs esta#os eecutando o progra#a de dentro do BlueJ 3e n.o de dentro da tela deconsole co#o "i?e#os no progra#a Bo#Dia na p$g& '%4 o BlueJ ir$ a;rir u#a <anelinha de console

 para poder i#pri#ir a String&

 Ha terceira instru-.o ) declarada u#a 0ari$0el do tipo String cha#ada lin5a e ) atri;uPda a ela oresultado da cha#ada do #)todo ne3tLine! direcionada ao o;<eto teclado& Este o;<eto 3teclado4(ue cria#os na pri#eira instru-.o ) da classe Scanner e portanto ele nasce sa;endo eecutar todosos #)todos da classe Scanner& Entre estes #)todos h$ u# cha#ado net,ine34 (ue ) <usta#ente o#)todo (ue nFs esta#os in0ocando& +ortanto teclado6net,ine34 signi"ica: KEi o;<eto teclado (uer"a?er o "a0or de eecutar o #)todo net,ine34 *M&

O #)todo net,ine34 aguarda o usu$rio digitar algu#a coisa e teclar EH7ER e a seguir retorna ao progra#a principal u#a String contendo o teto (ue o usu$rio digitou& +ortanto ) nesta parte do progra#a (ue o cursor "ica piscando espera do usu$rio& Depois (ue o usu$rio ter#inar de digitar eteclar EH7ER o #)todo net,ine34 retorna u#a String co# o conteQdo& Ho ee#plo da 9igura /1

o usu$rio digitou a "rase K7estando &&& 5%' &&&M e teclou EH7ER& +ortanto ao retornar a eecu-.o para o progra#a principal a instru-.o .tring lin5a F teclado6ne3tLine!I ir$ se trans"or#ar e#.tring lin5a F G#estando 666 =>>K 666HI (ue ) u#a instru-.o de atri;ui-.o& O co#putador ir$ar#a?enar dentro da 0ari$0el linha a String K7estando &&& 5%' &&&M&

9inal#ente na (uarta instru-.o h$ u# co#ando de i#press.o: .;stem6out62rintlnlin5a!IApFs su;stituir a 0ari$0el linha por seu conteQdo a instru-.o se trans"or#ar$ e#.;stem6out62rintlnG#estando 666 =>>K 666H!I (ue ) u#a instru-.o de i#press.o na tela de console&Co#o <$ esta#os na tela de console ir$ aparecer a String digitada e o resultado ser$ igual ao da9igura /1& Hote (ue h$ na tela do console duas 0e?es a #es#a String& A pri#eira ) a String (ue "oidigitada pelo usu$rio e a segunda ) a String i#pressa pelo co#putador (ue ) igual do usu$rio& +or isso o progra#a se cha#a +rogra#aCo#Eco&

Page 76: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 76/86

Curso B$sico de JAVA 2

Programa , Programa*ra-ico4omEco

Va#os agora criar u#a 0ers.o deste progra#a usando recursos gr$"icos& Ao in0)s de usar a <anelade console para rece;er dados do usu$rio ou i#pri#ir "rases na tela 0a#os usar duas <anelinhasgr$"icas da classe JOption+ane& V$ no BlueJ crie u# no0o pro<eto e crie u#a no0a classe dentrodesse pro<eto cha#ada +rogra#a=ra"icoCo#Eco& Delete as linhas de ee#plo criadas pelo BlueJ e

digite o cFdigo a;aio:

import >avax$s+in6$@4ptionUane;pu(lic class Uro6ramarafico)omIco  pu(lic static void main"5trin678 ar6s#    5trin6 lina % @4ptionUane$so+VnputTialo6"DTi6ite qualquer coisaD#;

@4ptionUane$so+Lessa6eTialo6"null& DBocY di6itouR D - lina#;!

!

Co#pile e eecute o progra#a& Eu testei digitando a "rase K7estando progra#a gr$"icoM e o;ti0eco#o resultado a "igura a;aio:Va#os analisar o progra#a& Este progra#a pode ser considerado u#a aplica-.o gr$"ica por(ue usaco#ponentes gr$"icos& Os progra#as gr$"icos s.o ;e# #ais co#pleos (ue as aplica->es console&

 Heste ee#plo 0a#os usar apenas u#as poucas instru->es gr$"icas para n.o di"icultar de#ais&

A classe JOption+ane ) u#a classe gr$"ica (ue "ica ar#a?enada na ;i;lioteca <a0a&sing portantoco#e-a#os o progra#a co# a instru-.o de i#porta-.o im2ort )ava36s<ing6JO2tionPaneI

Esta classe possui 5 #)todos& Entre eles eiste# alguns #)todos est$ticos& U# método estático )

u# #)todo (ue pode ser cha#ado se# a necessidade de criar u# o;<eto e direcionar a cha#ada do#)todo a este o;<eto& Co#o 0i#os o nor#al ) criar u# o;<eto 3ee#plo: Circulo sol T neCirculo344 e depois cha#ar u# #)todo direcionado (uele o;<eto especP"ico3e: sol6tornarVisi0el344&

+or)# se o #)todo (ue pretende#os in0ocar ) est$tico n.o h$ necessidade de criar u# o;<etoda(uela classe& as se n.o cria#os u# o;<eto (ue# ) (ue 0ai eecutar o #)todo* A prFpria classe&Ou se<a (ue# eecuta u# #)todo est$tico n.o ) o o;<eto #as si# a classe& A sintae de in0oca-.ode u# #)todo est$tico ): Ho#edaclasse6no#edo#)todo34& O (ue indica se u# #)todo ) est$tico) a presen-a da pala0ra static no ca;e-alho do #)todo&

A pri#eira instru-.o do #)todo principal est$ declarando u#a 0ari$0el cha#ada linha do tipoString e est$ atri;uindo a ela o 0alor retornado pelo #)todo shoInputDialog da classeJOption+ane& O #)todo shoInputDialog #ostra na tela u#a <anelinha e "ica esperando o usu$riodigitar na tela e clicar e# O! 3ou teclar EH7ER4 para retornar ao progra#a principal& Zuando ousu$rio digitar e clicar e# O! 3ou teclar EH7ER4 ele retorna u#a String contendo o teto (ue ousu$rio digitou& Esta String retornada pelo #)todo shoInputDialog ser$ atri;uPda 0ari$0el linha&Ve<a (ue (uando cha#a#os o #)todo shoInputDialog passa#os u#a String co#o par#etro&Essa String ser$ i#pressa na <anelinha e nor#al#ente digita#os u# teto in"or#ando ao usu$rio o(ue ele de0e digitar& Heste progra#a passa#os co#o par#etro a String KDigite (ual(uer coisaM&Ao eecutar o #)todo ir$ aparecer na tela u#a <anela igual da 9igura / a;aio:

Page 77: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 77/86

Curso B$sico de JAVA 22

9igura / 8 <anela de input 3entrada de dados4 do +rogra#a=ra"icoCo#Eco

Se n.o aparecer nada pode ser (ue a <anela este<a enco;erta pela <anela principal do BlueJ ou poroutra <anela (ual(uer& ini#i?e todas as <anelas a;ertas at) (ue "i(ue so#ente a <anelinha de Input&

 Ha segunda instru-.o do #)todo principal h$ u#a in0oca-.o ao #)todo shoessageDialog (ueta#;)# ) u# #)todo est$tico da classe JOption+ane& Este #)todo #ostra outra <anelinha na telacontendo a String (ue "or passada co#o par#etro& Ho nosso caso a String (ue est$ sendo passadaco#o par#etro ) KVocê digitou : K linha& Ou se<a ) "eita u#a concatena-.o 3uni.o4 da StringKVocê digitou: M co# o conteQdo da 0ari$0el lin5a 3(ue ar#a?ena a String digitada pelo usu$rio na

 <anela de input 3entrada de dados44& O resultado da concatena-.o ser$ i#presso na <anelinhaessage 3#ensage#4&

+or ee#plo se "or digitado na <anela de input a "rase K7estando progra#a gr$"icoM o resultado da <anela de #ensage# ser$ igual ao da 9igura /2:

9igura /2 8 <anela de #ensage# do +rogra#a=ra"icoCo#Eco

 Hote (ue a String a ser i#pressa na <anela ) o segundo par#etro do #)todo shoessageDialog O pri#eiro par#etro ) a pala0ra null& H.o 0a#os eplicar para (ue ser0e este null por(ue precisariaeplicar u# #onte de coisas pri#eiro& Basta sa;er (ue a orde# da passage# de par#etros ) esta:

 pri#eiro a pala0ra null depois a String a ser i#pressa na <anela& Co#o s.o dois par#etros eles0e# separados por 0Prgulas&

Programa K % 4alcula&atorial

Este progra#a pede ao usu$rio para digitar u# nQ#ero inteiro e i#pri#e o "atorial deste nQ#ero&9atorial de u# nQ#ero ) igual ao produto dos nQ#eros 5 at) o nQ#ero dese<ado& Ee#plos:

• 9atorial de ' T 5 % ' T • 9atorial de 2 T 5 % ' / 1 2 T 1&6/6• 9atorial de 5% T 5 % ' / 1 2 56 55 5% T /2&665&66

V$ no BlueJ crie u# no0o pro<eto e crie u#a no0a classe dentro desse pro<eto cha#adaCalcula9atorial& Delete as linhas de ee#plo criadas pelo BlueJ e digite o cFdigo a;aio:

Page 78: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 78/86

Curso B$sico de JAVA 2@

import >ava$util$5canner;pu(lic class )alculaatorial  pu(lic static void main"5trin678 ar6s#    5canner teclado % ne+ 5canner"5:stem$in#;

  5:stem$out$println"NTi6ite um numero inteiroO#;  int num % teclado$nextVnt"#;  int total % 1;  int contador % num;

+ile "contador 2 0#    total % total * contador;  contador;  !

5:stem$out$println"N4 fatorial de N - num - N éR N - total#;!

!

Co#pile e eecute o progra#a& Se 0ocê digitar o nQ#ero 2 o resultado de0er$ ser igual 9igura /@:

9igura /@ 8 Resultado da eecu-.o do Calcula9atorial

O inPcio do progra#a ) idêntico ao progra#a 5 3+rogra#aCo#Eco4& As #udan-as co#e-a# naterceira instru-.o do #)todo principal: int num F teclado6ne3t$nt!IA(ui est$ sendo declarada u#a 0ari$0el inteira cha#ada nu# e est$ sendo atri;uPda a ela o 0alorretornado pelo #)todo netInt34 do o;<eto teclado&

 Ho +rogra#aCo#Eco "i?e#os u#a cha#ada ao #)todo net,ine34 do teclado (ue aguarda0a ousu$rio digitar algu#a coisa e retorna0a o teto digitado e# "or#ato String& A(ui esta#oscha#ando o #)todo netInt34& O #)todo netInt34 "a? a #es#a coisa (ue o net,ine34 ou se<aaguarda o usu$rio digitar algu#a coisa e retorna o teto digitado& +or)# ele retorna o teto digitadono "or#ato int 3inteiro4 e# 0e? de String& Se (uis)sse#os (ue o usu$rio digitasse u# nQ#ero realin0ocarPa#os o #)todo netDou;le& Se (uis)sse#os (ue o usu$rio digitasse u# 0alor true ou "alsein0ocarPa#os o #)todo netBoolean34 e assi# por diante&

Ve<a (ue a0isa#os ao usu$rio (ue era para ele digitar u# nQ#ero inteiro& Ho entanto se ele digitar(ual(uer coisa di"erente disto 3u#a String por ee#plo4 o progra#a 0ai dar erro&

A seguir ) declarada u#a 0ari$0el inteira cha#ada total e iniciali?ada co# o 0alor 5& Hor#al#ente(uando cria#os 0ari$0eis para contar 3so#ar4 algu#a coisa costu#a#os iniciali?$la co# o 0alor

Page 79: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 79/86

Curso B$sico de JAVA 2

?ero& +or)# a(ui 0a#os usar a 0ari$0el total para #ultiplicar os nQ#eros de 5 at) nu# por issoiniciali?a#os co# o 0alor 5&

Depois ) declarada u#a 0ari$0el inteira cha#ada contador e ) iniciali?ada co# o 0alor de nu#&,e#;re (ue nu# est$ ar#a?enando o nu#ero digitado pelo usu$rio&

A seguir 0e# a instru-.o hile& O co#putador 0ai eecutar os co#andos dentro do hile at) (ue acondi-.o testada se<a "alsa& Da pri#eira 0e? (ue testar a condi-.o 3contador ^ 64& Supondo (ue ousu$rio digitou o 0alor 2 a epress.o se trans"or#ar$ e# 32 ^ 64 (ue ) 0erdadeiro e o progra#aeecuta as instru->es de dentro do hile& A pri#eira instru-.o ) total F total contadorIApFs as su;stitui->es ela se trans"or#a e# total F = NI (ue resulta e# N e portanto a 0ari$0eltotal passar$ a ar#a?enar o 0alor 2& A segunda instru-.o ) u#a instru-.o de decre#ento so;re a0ari$0el contador ou se<a contador 0ai ter seu 0alor di#inuPdo de 5 e passar$ a 0aler &

Co#o n.o h$ #ais instru->es a sere# eecutadas dentro do ;loco do hile o progra#a 0olta a"a?er o teste da epress.o 3contador ^ 64 (ue desta 0e? se trans"or#a e# 3 ^ 64 o (ue ) 0erdadeiroe o progra#a 0olta a entrar no corpo do hile& A pri#eira instru-.o do hile ) total F total

contadorI (ue desta 0e? se trans"or#a e# total F N RI  (ue resulta e# S e portanto a 0ari$0eltotal passa a ar#a?enar o 0alor S& A segunda instru-.o decre#enta o contador (ue passa a 0aler 1&

 Ho0a#ente ) testada a condi-.o do hile e desta 0e? a epress.o 0ira 31 ^ 64 (ue ) 0erdadeiro e o progra#a torna a entrar no hile e etc e etc&

O progra#a 0ai "a?er isto at) (ue na s)ti#a 0e? (ue ele "or testar o hile o contador estar$ 0alendo5 e a epress.o ser$ 35 ^ 64 o (ue ainda ) 0erdadeiro e o progra#a entra #ais u#a 0e? no hilecalcula o 0alor do total e decre#enta o 0alor do contador& Desta 0e? contador passa a 0aler 6 3?ero4&

Zuando "or testar no0a#ente a condi-.o do hile a epress.o 3contador ^ 64 0ai se trans"or#ar e#36 ^ 64 o (ue ) "also e o progra#a ter#ina de eecutar a instru-.o hile e passa para a prFi#ainstru-.o&

A prFi#a instru-.o ) u#a instru-.o de i#press.o (ue i#pri#e o resultado da concatena-.o de KO"atorial de K #ais o conteQdo da 0ari$0el nu# 3(ue ) 24 #ais a String K ) K #ais o conteQdo da0ari$0el total 3(ue ) 16/64& O resultado ) (ue 0i#os na 9igura /@&

Programa S % 4alcula&atorial

Va#os "a?er u#a outra 0ers.o do Calcula9atorial desta 0e? usando os #)todos shoInputDialog eshoessageDialog e# lugar da <anela de console e a instru-.o -or e# lugar da instru-.o <5ile&

V$ no BlueJ crie u# no0o pro<eto e crie u#a no0a classe dentro desse pro<eto cha#adaCalcula9atorial% Delete as linhas de ee#plo criadas pelo BlueJ e digite o cFdigo a;aio:

Page 80: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 80/86

Curso B$sico de JAVA @6

import >avax$s+in6$@4ptionUane;pu(lic class )alculaatorial.  pu(lic static void main"5trin678 ar6s#    5trin6 numero % @4ptionUane$so+VnputTialo6"DTi6ite um numero inteiroD#;  int num % Vnte6er$parseVnt"numero#;

int total % 1;  for "int i % 1 ; "i % num# ; i--#    total % total * i;  !

@4ptionUane$so+Lessa6eTialo6"null&N4 fatorial de N - num - N éR N - total#;!

!

Este progra#a "a? a #es#a coisa (ue o anterior pede para o usu$rio digira u# nQ#ero inteirodepois calcula o "atorial deste nQ#ero e #ostra o resultado e# u#a <anela&

 Ho progra#a anterior usa#os o #)todo netInt34 (ue retorna u# 0alor digitado pelo usu$rio& A(uiesta#os usando o #)todo shoInputDialog (ue retorna u#a String digitada pelo usu$rio& A

 pri#eira instru-.o do #)todo principal declara u#a 0ari$0el do tipo String cha#ada nu#ero eatri;ui a ela o resultado da cha#ada do #)todo est$tico shoInputDialog aonde pedi#os aousu$rio para digitar u# nu#ero inteiro& H.o eiste na classe JOption+ane u# #)todo para retornaru# 0alor nu#)rico co#o ) o caso do netInt usado na aplica-.o console anterior& Zual(uer coisa(ue o usu$rio digitar 3#es#o (ue se<a apenas u# 0alor nu#)rico4 0ai ser retornado para o progra#a

 principal co#o sendo u#a String& Acontece (ue n.o pode#os "a?er c$lculos e# ci#a de Strings&7e#os (ue trans"or#ar essa String e# u# 0alor nu#)rico&

A segunda instru-.o do #)todo principal int num F $nteger62arse$ntnumero!I "a? eata#ente

isto trans"or#a a String digitada pelo usu$rio 3ar#a?enada na 0ari$0el nu#ero4 e# u# nQ#erointeiro e ar#a?ena este nQ#ero na 0ari$0el inteira nu#&

A classe Integer possui u# #)todo est$tico cha#ado parseInt (ue rece;e u#a String co#o par#etro e retorna u# 0alor inteiro& Co#o ) u# #)todo est$tico n.o precisa#os criar u# o;<etoda classe Integer para cha#ar o #)todo ;asta escre0er o no#e da classe 3Integer4 #ais ponto e#ais o no#e do #)todo 3parseInt4 passando co#o par#etro a String (ue (uere#os trans"or#ar e#u# nQ#ero inteiro 3no nosso caso a 0ari$0el numero (ue guarda a String digitada pelo usu$rio4&

Esta classe Integer est$ na ;i;lioteca <a0a&lang& 7eorica#ente de0erPa#os iniciar o progra#aescre0endo u#a instru-.o de i#porta-.o im2ort )ava6lang6$ntegerI  para poder#os ter acesso

esta classe& Ocorre (ue a ;i;lioteca <a0a&lang ar#a?ena as classes #ais "unda#entais do Ja0a& Elass.o t.o utili?adas (ue n.o ) preciso i#portalas para poder "a?er uso delas&Zual(uer classe da ;i;lioteca <a0a&lang pode ser usada se# a necessidade de escre0er a instru-.o i#port <a0a&lang&

Ali$s a instru-.o de i#press.o 3Sste#&out&println4 u#a das #ais usadas nos progra#as Ja0ata#;)# usa u#a destas classes& Ha 0erdade ao usar#os o co#ando de i#press.o esta#oscha#ando o #)todo est$tico println34 direcionado u#a 0ari$0el cha#ada out  3saPda4 (ue "oide"inida dentro da classe Sste#& Esta classe Sste# est$ de"inida dentro da ;i;lioteca <a0a&lang e

 por isso pode#os usar o Sste#&out&println se# ter (ue i#portar a classe&

A instru-.o de repeti-.o 3(ue no progra#a anterior era o <5ile4 a(ui ) o -or& Ha sintae do "or

de"ini#os pri#eiro a 0ari$0el (ue 0ai contar o nu#ero de repeti->es& Heste caso esta#osdeclarando u#a 0ari$0el inteira cha#ada i e esta#os iniciali?ando co# o 0alor 5& Depois de"ini#osa epress.o (ue ser$ testada neste caso 3i YT nu#4& +or "i# de"ini#os (ue instru-.o3>es4 de0e ser

Page 81: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 81/86

Curso B$sico de JAVA @5

eecutada apFs a itera-.o 3eecu-.o dos co#andos dentro do "or4& Heste caso apFs eecutar osco#andos de dentro do "or o progra#a 0ai incre#entar o 0alor de i ou se<a 0ai so#ar 5 ao 0alorde i&

Co#o i "oi iniciali?ado co# 5 da pri#eira 0e? (ue "or testada a epress.o 3i YT nu#4 ela setrans"or#ar$ e# 35 YT 24 (ue ) 0erdadeiro e o progra#a eecutar$ as instru->es dentro do corpo do

"or& SF h$ u#a instru-.o 3total T total iN4 (ue apFs as su;stitui->es 0irar$ total F = =I o (ue ir$ar#a?enar o 0alor 5 dentro da 0ari$0el total& A seguir ) eecutada a instru-.o i (ue ir$incre#entar o 0alor de i (ue passar$ a 0aler %&

 Ho segundo teste a epress.o ser$ 3% YT 24 (ue ta#;)# ) 0erdadeiro e o progra#a eecutar$ ainstru-.o total F total iI (ue agora se trans"or#ar$ e# total F = I o (ue ir$ ar#a?enar o 0alor %dentro da 0ari$0el total& A seguir i ser$ incre#entado passando a 0aler '&

 Ho terceiro teste a epress.o ser$ 3' YT 24 (ue ta#;)# ) 0erdadeiro e o progra#a eecutar$ ainstru-.o total F total iI (ue agora se trans"or#ar$ e# total F KI o (ue ir$ ar#a?enar o 0alor dentro da 0ari$0el total& A seguir i ser$ incre#entado passando a 0aler /&

E assi# por diante& Zuando a 0ari$0el i esti0er 0alendo @ o teste da epress.o 3i YT nu#4 resultar$e# 3@ YT 24 o (ue ) "also e o progra#a ter#ina a eecu-.o da instru-.o de repeti-.o e segue e#"rente&

A prFi#a instru-.o ) a JOption+ane&shoessageDialog (ue 0ai #ostrar u#a <anelinha de#ensage# co# o resultado do c$lculo&

Programa D % 4alcula"endimento4arro

O progra#a a seguir pede ao usu$rio para digitar o nu#ero de litros (ue "ora# necess$rios paraa;astecer o tan(ue de co#;ustP0el& A seguir pede (ue o usu$rio in"or#e (uantos (uil#etros "ora#rodados desde a Qlti#a 0e? (ue ele co#pletou o tan(ue& A seguir #ostra o rendi#ento do carro ouse<a (uantos (uil#etros ele est$ "a?endo por litro de co#;ustP0el&

import >ava$util$5canner;

pu(lic class )alculaMendimento)arro  pu(lic static void main"5trin678 ar6s#    5canner teclado % ne+ 5canner"5:stem$in#;  5:stem$out$println"DTi6ite o número de litrosD#;  dou(le litros % teclado$nextTou(le"#;  5:stem$out$println"DTi6ite o número de quilometrosD#;  dou(le quilometros % teclado$nextTou(le"#;

  dou(le total % quilometros / litros;5:stem$out$println"D5eu carro está faSendo D - total - D quilometros por

litroD#;

!!

Page 82: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 82/86

Curso B$sico de JAVA @%

A 9igura / #ostra o resultado de u# teste do progra#a CalculaRendi#entoCarro:

9igura / 8 Resultado da eecu-.o do CalculaRendi#entoCarro

A Qnica no0idade neste progra#a ) o uso do #)todo netDou;le34 e# 0e? de netInt34 u#a 0e? (uetanto os 0alores de litros (uanto de (uilo#etros rodados pode# ser epressos usando casasdeci#ais& Repare (ue as 0ari$0eis litros (uilo#etros e total "ora# de"inidas co#o sendo do tipodou;l) ou se<a (ue aceita# 0alores nu#)ricos co# casas deci#ais&

Programa R % $m2rime$nvertido

Este progra#a pede ao usu$rio para digitar (ual(uer coisa e depois i#pri#e na tela o teto (ue eledigitou sF (ue i#presso ao contr$rio&

import >ava$util$5canner;pu(lic class VmprimeVnvertido  pu(lic static void main"5trin678 ar6s#    5canner teclado % ne+ 5canner"5:stem$in#;

5:stem$out$println"DTi6ite qualquer coisa e tecle IP3IMD#;  5trin6 texto % teclado$nextFine"#;  5trin6 textoVnvertido % DD;  int tamano % texto$len6t"# 1;

for "int i%tamano ; i 2% 0 ; i# 

textoVnvertido % textoVnvertido - texto$carAt"i#;!

5:stem$out$println"textoVnvertido#;!

!

 A 9igura 16 #ostra o resultado de u#a eecu-.o do progra#a I#pri#eIn0ertido digitando a

 pala0ra 0arginha:

Page 83: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 83/86

Curso B$sico de JAVA @'

9igura 16 8 Resultado da eecu-.o do I#pri#eIn0ertido

A id)ia a(ui ) ler as letras ao contr$rio da Qlti#a para a pri#eira e #edida (ue 0ai lendo 0aiso#ando as letras lidas a u#a 0ari$0el cha#ada tetoIn0ertido& A (uarta instru-.o do #)todo

 principal cria u#a 0ari$0el do tipo String cha#ada tetoIn0ertido e iniciali?a co# u#a String nula(ue seria o e(ui0alente a inciali?ar u# contador nu#)rico co# o 0alor ?ero&

Zuando o progra#a ler a Qlti#a letra do teto digitado pelo usu$rio 0ai concatenar a(uela letraco# o conteQdo de tetoIn0ertido (ue ) u#a String se# letra nenhu#a& O resultado ser$ a Qlti#aletra do teto& Isto seria o e(ui0alente a so#ar ?ero a u# nQ#ero (ual(uer& O resultado seria o

 prFprio nQ#ero& Zuando o progra#a ler a penQlti#a letra 0ai concatenar o conteQdo detetoIn0ertido co# esta penQlti#a letra e assi# por diante at) chegar pri#eira (uando ent.otetoIn0ertido 0ai estar ar#a?enando o teto digitado ao contr$rio&

 Heste progra#a in0oca#os dois #)todos da classe String& A classe String te# 1 #)todos algunsdeles ;astante Qteis co#o toUpperCase34 (ue con0erte todos os caracteres do String para#aiQsculas o su;string3int inicio int "i#4 (ue retorna a su;string 3peda-o da String original4 (ue0ai da posi-.o inicio at) a posi-.o -im passadas co#o par#etros o replace3char antigo char no0o4(ue percorre a String da pri#eira at) a Qlti#a posi-.o procurando por ocorrências do caracter antigo3passado co#o par#etro4 e (uando encontra su;stitui o caracter antigo pelo caracter no0o3ta#;)# passado co#o par#etro4 e #uitos outros&

7odo o;<eto de"inido co#o sendo do tipo String <$ nasce sa;endo eecutar estes 1 #)todos& Honosso progra#a de"ini#os as 0ari$0eis teto e tetoIn0ertido co#o sendo do tipo String& +ortanto

 pode#os in0ocar cha#adas de #)todos da classe String direcionadas a essas duas 0ari$0eis&

Va#os usar dois #)todos da classe String& O pri#eiro ) o #)todo length34 (ue (uando in0ocadoconta (uantos caracteres te# a String e retorna u# 0alor inteiro contendo o nu#ero de caracteres& O

segundo #)todo ) o charAt3int n4 (ue (uando in0ocado retorna (ual o caracter (ue ocupa an)si#a posi-.o do String&

+or)# ) preciso conhecer u# detalhe i#portante: as posi->es da String n.o s.o contadasco#e-ando da posi-.o 5 e# diante& Elas s.o contadas da posi-.o 6 3?ero4 e# diante& A pri#eira

 posi-.o da String ) contada co#o ?ero& Assi# a String KBO,AM por ee#plo te# ta#anho de /3length34 T /4 e te# as seguintes posi->es: charAt364 T jBk charAt354 T jOk charAt3%4 T j,k echarAt3'4 T jAk&

Va#os ao progra#a: co#e-a#os co#o nas outras aplica->es console i#portando a classe Scanner&A classe String ta#;)# ) u#a classe da ;i;lioteca do Ja0a e a rigor ta#;)# teria (ue ser declarada

u#a instru-.o i#port para ela& +or)# a classe String "a? parte da ;i;lioteca <a0a&lang (ue co#o0i#os no +rogra#a / ) a ;i;lioteca das classes "unda#entais t.o utili?adas (ue o Ja0a per#ite (uese<a# usadas se# a necessidade de escre0er instru->es i#port para elas&

Page 84: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 84/86

Curso B$sico de JAVA @/

A seguir ) declarada a 0ari$0el teclado (ue 0ai ler os dados digitados pelo usu$rio e ) i#pressa natela do console u#a #ensage# pedindo ao usu$rio para digitar algu#a coisa na tela de console&

 Ha terceira instru-.o do #)todo principal ) "eita a leitura do teto digitado pelo usu$rio e estaString ) atri;uPda 0ari$0el teto& A seguir ) de"inida a 0ari$0el tetoIn0ertido ta#;)# do tipoString e iniciali?ada co# o 0alor KM ou se<a u#a String 0a?ia&

A instru-.o seguinte in0oca o #)todo length34 direcionado 0ari$0el teto di#inui o 0alor retornade 5 e ar#a?ena o resultado e# ta#anho& +or ee#plo se o usu$rio digitou K0arginhaM a instru-.oint taman5o F te3to6lengt5! % =I se trans"or#ar$ apFs a cha#ada de #)todo e#int taman5o F T % =I  o (ue ar#a?enar$ 2 na 0ari$0el ta#anho&

A prFi#a instru-.o ) a instru-.o de repeti-.o "or& Ha pri#eira se-.o da instru-.o "or ) declarada a0ari$0el inteira i e iniciali?ada co# o 0alor ta#anho 3no nosso ee#plo ta#anho co#e-a co# o0alor 2 (ue ) o ta#anho de 0arginha 3@4 #enos 54& Ha segunda se-.o ) de"inida a epress.o a sertestada: 3 i ^T 64& Ha terceira se-.o ) de"inida a instru-.o a ser eecutada ao t)r#ino da itera-.o:i ou se<a i ter$ seu 0alor di#inuPdo de 5&

 Ha pri#eira 0e? (ue "or testar a epress.o 3i ^T 64 o resultado ser$ 32 ^T 64 3le#;rese (ue i "oiinciali?ada co# o conteQdo de ta#anho 32 no nosso ee#plo44& Co#o 2 ) #aior (ue ?ero oresultado ) 0erdadeiro e o progra#a eecuta as instru->es do corpo do "or& SF h$ u#a instru-.o deatri;ui-.o (ue ar#a?ena na 0ari$0el tetoIn0ertido o resultado da concatena-.o de tetoIn0ertidoco# o resultado da in0oca-.o do #)todo teto&charAt3i4& Co#o i co#e-a co# o 0alor 2 o #)todoin0ocado ) teto&charAt324 (ue retorna o caracter (ue ocupa a s)ti#a posi-.o da String K0arginhaM&Co#o as posi->es s.o contadas de 6 at) 2 a s)ti#a posi-.o ) ocupada pelo caracter jak (ue )retornado para a instru-.o&

Co#o a String tetoIn0ertido "oi iniciali?ada co# KM a instru-.o de atri;ui-.o se trans"or#ar$ e#te3to$nvertido F GH UaI  Concatenar u# caracter co# u#a String trans"or#a o resultado e#u#a String& Assi# concatenar o caracter jak co# u#a String 0a?ia trans"or#a o resultado naStringMaM (ue ser$ ar#a?enada dentro da 0ari$0el tetoIn0ertido& A seguir a 0ari$0el i ser$decre#entada passando a 0aler &

 Ho segundo teste da epress.o 3i ^T 64 o resultado ser$ 3 ^T 64 (ue ) 0erdadeiro e o progra#aentra no0a#ente no corpo do "or& Agora o #)todo teto&charAt34 retorna o caracter jhk& A instru-.ode atri;ui-.o será te3to$nvertido F GaH U5I (ue resultar$ na String KahM (ue ser$ ar#a?enada na0ari$0el tetoIn0ertido& ApFs ao decre#ento o 0alor de i passar$ a ser 1&

 Ho terceiro teste da epress.o 3i ^T 64 o resultado ser$ 31 ^T 64 (ue ) 0erdadeiro e o progra#a entrano0a#ente no corpo do "or& Agora o #)todo teto&charAt34 retorna o caracter jnk& A instru-.o deatri;ui-.o ser$ te3to$nvertido F Ga5H UnI (ue resultar$ na String KahnM (ue ser$ ar#a?enada na0ari$0el tetoIn0ertido& ApFs ao decre#ento o 0alor de i passar$ a ser /&

E assi# por diante at) (ue (uando o 0alor de i "or igual a 6 a epress.o 3i ^T 64 ser$ igual a36 ^T 64 o (ue ) 0erdadeiro e o progra#a tornar$ a entrar no corpo do "or& O #)todo charAt364retornar$ o caracter j0k 3le#;rese (ue o Pndice 6 e(ui0ale pri#eira posi-.o da String4& A instru-.ode atri;ui-.o ser$ te3to$nvertido F Ga5nigraH UvI (ue resultar$ e# Kahnigra0M (ue ser$ar#a?enada na 0ari$0el tetoIn0ertido& ApFs o decre#ento o 0alor de i passar$ a ser 5&

Desta 0e? (uando "or testada a epress.o 3i ^T 64 ela se trans"or#ar$ e# 35 ^T 64 o (ue ) "also e o progra#a ter#ina a eecu-.o da instru-.o de repeti-.o "or e passa para a instru-.o seguinte&

Page 85: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 85/86

Curso B$sico de JAVA @1

A Qlti#a instru-.o i#pri#e na tela o conteQdo da 0ari$0el tetoIn0ertido&

Programa N % ParOu$m2ar

O progra#a a seguir si#ula u# <ogo de par ou P#par entre o usu$rio e o co#putador&

import >ava$util$Mandom;import >avax$s+in6$@4ptionUane;pu(lic class Uar4uVmpar  pu(lic static void main"5trin678 ar6s# 

  5trin6 par4uVmpar % @4ptionUane$so+VnputTialo6"DTi6ite U para par ou Vpara ZmparD#;

par4uVmpar % par4uVmpar$toKpper)ase"#;  5trin6 usuario % @4ptionUane$so+VnputTialo6"DTi6ite um numero entre 0 e10D#;

int numKsuario % Vnte6er$parseVnt"usuario#;  Mandom aleatorio % ne+ Mandom"#;  int num)omputador % aleatorio$nextVnt"11#;  int soma % numKsuario - num)omputador;  int resto % soma < .;

5:stem$out$println"DBocY >o6ou D - numKsuario#;  5:stem$out$println"D4 computador >o6ou D - num)omputador#;  5:stem$out$println"D3otal % D - soma#;

  if "par4uVmpar$equals"DUD##if "resto %% 0#

  5:stem$out$println"DUAM E BocY venceu EEED#;  else

5:stem$out$println"D[LUAM E BocY perdeu EEED#;  else if "resto E% 0#  5:stem$out$println"D[LUAM E BocY venceu EEED#;  else

5:stem$out$println"DUAM E BocY perdeu EEED#;

!!

,ogo no inPcio ) pedido ao usu$rio digitar K+M se ele (uiser escolher +AR ou KIM se ele escolher]+AR& O (ue o usu$rio digitar ser$ atri;uPdo 0ari$0el parOuI#par&

A instru-.o parOuI#par T parOuI#par&toUpperCase34N ) u#a cha#ada ao #)todo toUpperCase34direcionada 0ari$0el parOuI#par& Ela ir$ trans"or#ar a String digitada pelo usu$rio e# #aiQsculacaso o usu$rio digite KpM ao in0)s de K+M 3ou KiM ao in0)s de KIM4&

A no0idade a(ui ) a classe Rando# (ue ) usada para gerar nQ#eros aleatFrios 3conhecidos co#o

nQ#eros rand#icos4& A instru-.o Rando# aleatFrio T ne Rando#34 declara u#a 0ari$0el do tipoRando# cha#ada aleatorio  e a iniciali?a co# u# no0o o;<eto da classe Rando#&& A instru-.oint num4om2utador F aleatorio6ne3t$nt==!I escolhe u# nQ#ero inteiro entre 6 e 56 e atri;ui 0ari$0el nu#Co#putador&

Page 86: Apostila Java SRE

7/23/2019 Apostila Java SRE

http://slidepdf.com/reader/full/apostila-java-sre 86/86

Curso B$sico de JAVA @

A instru-.o i" co#e-a testando se a 0ari$0el parOuI#par ) igual a K+M& Repare (ue n.o usa#os osinal TT (ue usa#os (uando co#para#os dois 0alores nu#)ricos ou ;ooleanos& O sinal deigualdade TT sF pode ser usado para co#parar 0ari$0eis pri#iti0as& Zuando esta#os co#parandodois o;<etos te#os (ue usar o #)todo e(uals34&

Co#o a 0ari$0el parOuI#par ) do tipo String e String ) u#a das classes do Ja0a isso signi"ica (ue parOuI#par ) u# o;<eto& A String K+M (ue esta#os co#parando co# a 0ari$0el parOuI#parta#;)# ) u# o;<eto 3toda String ) u# o;<eto pertencente classe String4& O #)todo e(uals34 )in0ocado direcionado a u# o;<eto passando co#o par#etro o outro o;<eto a ser co#parado& O#)todo e(uals34 retorna true 30erdadeiro4 se os dois o;<etos "ore# iguais e retorna "alse 3"also4 casocontr$rio& Ho nosso progra#a esta#os cha#ando o #)todo direcionado ao o;<eto parOuI#par e

 passando co#o par#etro a String K+M& +ortanto o pri#eiro teste do i" 0eri"ica se parOuI#par ) igual a K+M ou se<a se o usu$rio escolheu+AR& Se "or 0erdadeiro ent.o o progra#a eecuta o prFi#o teste 3i" resto TT 64& A 0ari$0el resto"oi de"ionida co#o sendo do tipo inteiro e "oi iniciali?ada co# o resultado de so#a % onde so#a

ar#a?ena a so#a de nu#Usuario co# nu#Co#putador& O operador calcula o resto da di0is.o&Co#o esta#os "a?endo u#a di0is.o por % se o resto "or ?ero isto signi"ica (ue o nQ#ero ) par&Caso contr$rio 3resto di"erente de ?ero4 isto (uer di?er (ue o nQ#ero ) P#par&

Caso o segundo teste 3resto TT 64 se<a 0erdadeiro o progra#a i#pri#e K+AR L Você Venceu LLLM&Caso contr$rio o progra#a entra no else e i#pri#e K]+AR L Você perdeu LLLM&

+or)# se o resultado do pri#eiro teste 3parOuI#par&e(uals3K+M44 "oi "also isto signi"ica (ue ousu$rio escolheu I+AR& O progra#a entra no else do pri#eiro i" e eecuta o teste 3resto LT 64 parasa;er se o resto ) di"erente de ?ero Se resto ) di"erente de ?ero 3so#a ) P#par4 o progra#a i#pri#eK]+AR L Você 0enceu LLLM& Caso contr$rio o progra#a entra no else e i#pri#e K+AR L Você

 perdeu LLLM&

A 9igura 15 a;aio #ostra u# ee#plo da eecu-.o do progra#a: