Escola Secundria de Barcelos 2000/2001 2 JAVA 1 Introduo Sendo a World Wide Web o maior sistema de informao do mundo esta comeou !or ser esttica ou se"a a informao era a!resentada tal com num li#ro im!ressa e definiti#a$ As !%inas desen#ol#idas na lin%ua%em tradicional o &'() t*m limita+es decorrentes da !r,!ria nature-a da lin%ua%em .ue no est #ocacionada !ara a!lica+es .ue incluam animao multim/dia e formas e#olu0das de interaco entre o utili-ador e e#entuais a!lica+es residentes no ser#idor de 1nternet$ 2 JAVA introdu-iu na WWW a !ossibilidade de inte%rar #erdadeira interacti#idade nas !%inas atra#/s da utili-ao de !e.uenas a!lica+es denominadas applets .ue !odem ser directamente inte%radas no c,di%o &'() e assim tornar acess0#el a uma !%ina tudo a.uilo .ue normalmente se conse%ue obter de um !ro%rama desen#ol#ido em .ual.uer das outras lin%ua%ens de !ro%ramao$ Ao contrrio do &'() !raticamente acess0#el a .ual.uer !essoa mesmo sem .uais.uer con3ecimentos ou e4!eri*ncia de !ro%ramao o JAVA / uma #erdadeira lin%ua%em de !ro%ramao com todas as dificuldades de a!rendi-a%em inerentes 5 com!le4idade da mesma !or mais sim!les .ue se"a a lin%ua%em JAVA$ Resenha Histrica 2 JAVA comeou !or c3amar6se 2A7 de#ido 5 r#ore .ue crescia !erto do escrit,rio do seu !rinci!al criador James 8oslin%$ Ele descobriu toda#ia .ue " e4istia uma lin%ua%em de !ro%ramao denominada 2A7$ Sendo assim a e.ui!a te#e de !rocurar um no#o nome$ Eles com!ra#am o caf/ .ue consumiam numa lo"a !r,4ima e um dos ti!os de caf/ com!rado era Ja#a$ Portanto foi este o nome escol3ido$ 2 JAVA foi desen3ado !or uma e.ui!a da Sun (icros9stems na :alif,rnia E$;$A$ Este a!areceu da necessidade de construir software !ara electrodom/sticos < tele#is+es telefones !a%ers e tal#e- =um dia> torradeiras$ As lin%ua%ens ,b#ias na altura : e :?? tin3am des#anta%ens < no era fcil trans!ortar o software !ara um no#o !rocessador$ Portanto o JAVA nasceu com os ob"ecti#os de criar !ro%ramas !e.uenos r!idos e trans!ort#eis$ O que o JAVA 2 JAVA / !ro#a#elmente uma das mel3ores lin%ua%ens de !ro%ramao !ara a!render e usar no fim do s/culo @@ de#ido 5s se%uintes caracter0sticasA O JAVA pequeno e agradvel 2s criadores do JAVA dei4aram deliberadamente de fora todas as caracter0sticas su!/rfluas das lin%ua%ens de !ro%ramao$ 2 resultado / uma lin%ua%em .ue !ossui todos os caracter0sticas necessrias combinadas de uma maneira ele%ante e l,%ica$ 2 JAVA / fcil de a!render e !oderoso$ O JAVA orientado a objectos As lin%ua%ens orientadas a ob"ectos so o Bltimo %rito na !ro%ramao$ A !ro%ramao orientada a ob"ectos / a mais !o!ular forma de !ro%ramao no fim da d/cada 1CC062000 e no in0cio do no#o mil/nio$ 2 JAVA / com!letamente orientado a ob"ectos desde a base at/ ao to!o$ Do / uma lin%ua%em em .ue a orientao a ob"ectos foi acrescentada !or cima de uma estrutura clssica de lin%ua%em de !ro%ramao$ E2001 !or Ant,nio AraB"o de 2li#eira JAVA F O JAVA suporta a Internet A !rinci!al moti#ao !ara a utili-ao do JAVA / !ermitir aos utili-adores desen#ol#erem !ro%ramas .ue usam a 1nternet e a World Wide Web$ 2s !ro%ramas em JAVA !odem ser facilmente in#ocados a !artir de broGsers como o Internet Explorer ou o Netscape Navigator !ara obter mais #alias em facilidades e es!ectacularidade$ Ainda os !ro%ramas em JAVA !odem ser facilmente transmitidos !ela 1nternet e ser e4ecutados em .ual.uer com!utador$ O JAVA uma linguagem de propsitos gerais Embora desen3ado !ara desen#ol#er a!lica+es !ara a Wold Wide Web o JAVA / realmente uma lin%ua%em de !ro!,sitos %erais$ Hual.uer coisa .ue :?? Ada etc$ !odem fa-er tamb/m o JAVA !ode$ O JAVA independente da plataforma 2s !ro%ramas JAVA correm em !raticamente todos os com!utadores < sem .ual.uer alteraoI Den3uma outra lin%ua%em o !ermite$ 1sto fica resumido no slo%an Jescrito uma #e- < corre em todo o ladoK$ O JAVA robusto Se um !ro%rama em JAVA cont/m erros =todos os !ro%ramas t*m esta tend*ncia> este no criar !roblemas ou resultados im!re#istos no sistema onde corre$ 2s !ro%ramas JAVA correm dentro de uma Lcai4aM de !roteco os efeitos de .ual.uer erros esto limitados e controlados$ 2s !ro%ramas JAVA esto ainda !rote%idos contra a infiltrao de #0rus$ O JAVA usa bibliotecas ( libraries ) Pelo facto de o JAVA ser uma lin%ua%em !e.uena a maioria da sua funcionalidade / fornecida !or !artes de !ro%ramas mantidos em bibliotecas$ 'oda uma %ama de bibliotecas de softGare esto dis!onibili-adas !ara lidar com %rficos acesso 5 1nternet e su!orte !ara interfaces %rficos com o utili-ador =8;1> < assim como !ara as coisas .ue as lin%ua%ens de !ro%ramao clssicas fa-em$ Programas em JAVA & #rios ti!os diferentes de !ro%ramaoA !rocedimental l,%ica funcional fol3a de clculo #isual e orientada a ob"ectos$ Em JAVA fa-emos !ro%ramao orientada a ob"ectos assim como em lin%ua%ens como Ada :?? Eiffel e SmalltalN$ 2 JAVA / uma lin%ua%em standard sem #aria+es ou dialectos e cu"o desen#ol#imento e manuteno / da res!onsabilidade da Sun Microsystems$ 2 JAVA est em desen#ol#imento embora a%rada#elmente de#a%ar$ A !rimeira %rande #erso foi denominada 1$0 e a se%unda 1$1$ a !artir da0 a #erso 1$2 forneceu bibliotecas adicionais mas a lin%ua%em em si no mudou$ Em de-embro de 1CCO a Sun decidiu mudar o nome de JAVA 1$2 !ara JAVA 2$ ;m !ro%rama em JAVA !ode ser e4ecutado de duas formas diferentesA como um !ro%rama distinto e inde!endente =c3amado aplica!o>P a !artir de um broGser WWW =c3amado applet> Programao orientada a objectos (OOP) A maioria dos !ro%ramas .ue se desen#ol#em numa escola so !e.uenos mas os !ro%ramas .ue usamos diariamente na sua maioria no o so$ Por e4em!lo o !rocessador de te4to Word da (icrosoft cont*m cerca de Q00 000 lin3as de c,di%o fonte$ A Q0 lin3as !or !%ina so 10 000 E2001 !or Ant,nio AraB"o de 2li#eira Q JAVA !%inas ou cerca de Q0 li#ros$ 2 !roblema !rinci!al no est na dimenso mas sim na com!le4idade$ ;m !ro%rama no / como um romance .ue se !ode com!reender lendo6o se.uencialmente do in0cio !ara o fimP / mais !arecido com mil3+es de !%inas na 1nternet directamente li%adas entre si atra#/s de 3i!erli%a+es$ :om #ista a mel3or lidar com a com!le4idade os !ro%ramadores !rocuraram formas de !artir !ro%ramas em !artes mais !e.uenas e mane"#eis$ 'ais !artes so normalmente c3amadas m,dulos$ Ri#idindo 10 000 !%inas em Q0 li#ros !ode ser criar m,dulos$ Em cada li#ro !odemos criar di%amos 20 ca!0tulos os .uais tornaro o todo ainda mais di%er0#el$ Em cada ca!0tulo !odemos ainda criar sec+es$ 2b#iamente no #amos a se!arao do te4to aleatoriamente < de#emos fa-er di#is+es naturais e a!ro!riadas aos conteBdos$ 2s !ro%ramas orientados a ob"ectos so constru0dos a !artir de m,dulos c3amados ob"ectos$ Estes so os ti"olos .ue !ermitem a construo de !ro%ramas com!le4os$ (esmo os !e.uenos !ro%ramas beneficiam !elo facto de terem sido criados a !artir de ob"ectos$ 2 JAVA / considerado uma lin%ua%em orientada a ob"ectos !or.ue !ermite criar !ro%ramas a !artir da utili-ao de ob"ectos$ OBJECTOS 2 conceito de ob"ecto / essencial !ara a com!reenso da tecnolo%ia de orientao a ob"ectos$ Podemos ol3ar 5 nossa #olta e #er e con3ecer muitos e4em!los de ob"ectosA o nosso co a nossa mesa a nossa tele#iso a nossa bicicleta$ 'odos estes ob"ectos do mundo real !artil3am duas caracter0sticasA todos !ossuem um estado ou condi!o e um comportamento$ Por e4em!lo um co tem um estado =nome cor raa fome> e um com!ortamento =ladrar fare"ar e abanar a cauda>$ As bicicletas !ossuem um estado =!edaleira actual cad*ncia da !edaleira duas rodas nBmero de !edaleiras> e um com!ortamento =tra#ar acelerar !arar mudar #elocidade>P notar .ue com !edaleira .ueremos di-er uma das rodas dentadas .ue com!+e o sistema de mudanas da bicicleta$ ;m ob"ecto / o a%ru!amento de al%uns dados com as instru+es .ue actuam sobre esses dados$ A seleco de dados e ac+es no / arbitrria < os dados e as ac+es de#em estar fortemente relacionados tal .ue o ob"ecto se"a al%o com si%nificado$ 2s ob"ectos de software so modelados se%undo os ob"ectos do mundo real !ossuindo tamb/m um estado e um com!ortamento$ 2 estado de um ob"ecto de software / dado !or um con"unto de atributos$ :ada atributo desse ob"ecto / re!resentado !or uma varivel =item de dados referido atra#/s de um identificador>$ ;m ob"ecto de software im!lementa o seu com!ortamento atra#/s de m/todos$ ;m mtodo / uma funo =subrotina> associada ao ob"ecto$ RefinioA um objecto / um !acote de software com!osto !or #ari#eis e m/todos associados$ 2 mundo real !ode ser re!resentado modelado ou simulado !ela utili-ao de ob"ectos de software$ Podemos re!resentar !or e4em!lo ces como ob"ectos de software num !ro%rama de animao ou uma bicicleta como um ob"ecto de software num !ro%rama .ue controla uma bicicleta de %instica electr,nica$ Podemos ainda ob"ectos de software !ara modelar conceitos abstractos$ Por e4em!lo um evento / um ob"ecto comum usado em 1nterfaces com o utili-ador baseados em "anelas =8;1> !ara re!resentar a aco de um utili-ador .uando !ressiona o boto dum rato ou a tecla de um teclado$ ;m ob"ecto !ode ser re!resentado #isualmente !orA E2001 !or Ant,nio AraB"o de 2li#eira Vari#eis =estado> (/todos =com!ortamento> JAVA S 'udo .ue o ob"ecto de software con3ece =estado> e !ode fa-er =com!ortamento> / e4!resso !elas #ari#eis e m/todos dentro do ob"ecto$ ;m ob"ecto de softGare .ue modele uma bicicleta teria #ari#eis .ue indicam o estado actual da bicicletaA a sua #elocidade / 20 Nm !or 3ora a cad*ncia da !edaleira / de C0 rota+es !or minuto e a !edaleira actual / S$T$ Estas #ari#eis so formalmente denominadas variveis de inst"ncia !or.ue cont*m o estado !ara um ob"ecto bicicleta em !articular e na terminolo%ia da !ro%ramao orientada a ob"ectos um ob"ecto em !articular / c3amado uma inst"ncia$ A fi%ura se%uinte ilustra uma bicicleta modelada como um ob"ecto de softwareA Al/m das suas #ari#eis a bicicleta de softGare de#e ter tamb/m m/todos !ara tra#ar mudar a cad*ncia da !edaleira e mudar de !edaleira$ A #elocidade da bicicleta em mo#imento / um efeito secundrio da !edaleira em .ue est e da #elocidade com .ue o ciclista !edala da !osio dos tra#+es e de .uanto a colina / inclinada$ Estes m/todos so con3ecidos como mtodos de inst"ncia !or.ue eles ins!eccionam ou alteram o estado de uma instUncia !articular de uma bicicleta$ 2 dia%rama do ob"ecto mostra .ue as #ari#eis do ob"ecto constituem o centro ou nBcleo do ob"ecto$ 2s m/todos rodeiam e escondem o nBcleo do ob"ecto de outros ob"ectos no !ro%rama$ Em!acotar as #ari#eis de um ob"ecto sob a cust,dia !rotectora dos seus m/todos / denominada encapsula!o$ Esta ima%em conce!tual de um ob"ecto < um nBcleo de #ari#eis em!acotados dentro de uma membrana !rotectora de m/todos < / uma re!resentao ideal de um ob"ecto e / o ideal .ue os criadores de sistemas orientados a ob"ectos !rocuram alcanar$ 'oda#ia a 3ist,ria no acaba a.ui$ Vre.uentemente !or ra-+es !rticas um ob"ecto !ode dese"ar e4!or al%umas das suas #ari#eis ou esconder al%uns dos seus m/todos$ Da lin%ua%em JAVA um ob"ecto !ode es!ecificar um de .uatro n0#eis de acesso !ara cada uma das suas #ari#eis e m/todos$ 2 n0#el de acesso determina .ue outros ob"ectos e classes !odem aceder esta #ari#el ou m/todo$ 2 enca!sulamento de #ari#eis e m/todos relacionados num !acote bem definido de softGare / uma ideia sim!les e !oderosa .ue !ro#idencia dois benef0cios !rimrios !ara os !ro%ramadoresA #odularidadeA 2 c,di%o fonte !ara um ob"ecto !ode ser escrito e mantido inde!endentemente do c,di%o fonte de outros ob"ectos$ Ainda um ob"ecto !ode ser facilmente reutili-ado !or outros no sistema =!ode dar a sua bicicleta a outra !essoa e ela continua a funcionar>$ Ocultar informa!oA ;m ob"ecto tem um interface !Bblico .ue outros ob"ectos !odem utili-ar !ara comunicar com este$ 2 ob"ecto !ode manter informao !ri#ada e m/todos .ue !odem ser alterados em .ual.uer altura sem afectar os outros ob"ectos .ue de!endem deste =no / necessrio con3ecer o mecanismo de mudanas da bicicleta !ara a usar>$ 2utro benef0cio tamb/m im!ortante / a simulao < uma ideia !oderosa !ara modelar os !roblemas do mundo real$ E2001 !or Ant,nio AraB"o de 2li#eira (udar !edaleira (udar cad*ncia 'ra#ar 20 Nm/3 C0 r!m S$T #el$ W JAVA CLASSES Do mundo real temos fre.uentemente #rios ob"ectos do mesmo ti!o$ Por e4em!lo a sua bicicleta / s, uma de muitas bicicletas no mundo$ ;sando a terminolo%ia da !ro%ramao orientada a ob"ectos di-emos .ue o ob"ecto da sua bicicleta / uma inst"ncia da classe de ob"ectos con3ecida como bicicletas$ As bicicletas !ossuem um con"unto de atributos =!edaleira actual cad*ncia actual duas rodas> e com!ortamento =mudar de !edaleira tra#ar> em comum$ 'oda#ia o estado de cada bicicleta / inde!endente e !ode ser diferente do de outras bicicletas$ Huando constru0mos bicicletas os construtores tiram #anta%ens do facto de as bicicletas !artil3arem caracter0sticas construindo muitas bicicletas a !artir do mesmo desen3o/!ro"ecto$ Seria muito ineficiente !rodu-ir um no#o desen3o/!ro"ecto !ara cada bicicleta manufacturada$ Em softGare orientado a ob"ectos / tamb/m !oss0#el ter muitos ob"ectos do mesmo ti!o .ue !artil3am caracter0sticasA rectUn%ulos re%istos de funcionrios temas musicais etc$ 'al como o construtor de bicicletas !odemos tirar #anta%em do facto de os ob"ectos do mesmo ti!o so semel3antes e !odemos criar um modelo !ara estes ob"ectos$ Em softGare um modelo !ara ob"ectos / c3amado uma classe$ RefinioA uma classe / um modelo ou !rot,ti!o .ue define as #ari#eis e m/todos comuns a todos os ob"ectos de um certo ti!o$ :ada ob"ecto / uma instUncia de uma dada classe$ A classe !ara o nosso e4em!lo da bicicleta de#eria declarar as #ari#eis de instUncia necessrias !ara conter a !edaleira actual a cad*ncia actual e os demais atributos de cada ob"ecto bicicleta$ A classe de#eria ainda declarar e fornecer im!lementa+es !ara os m/todos de instUncia .ue !ermitem ao ciclista mudar de !edaleira tra#ar e mudar a cad*ncia com .ue !edala como !odemos #er na fi%ura se%uinteA Re!ois de criada a classe bicicleta !odemos criar .ual.uer nBmero de ob"ectos bicicleta a !artir da classe bicicletas$ Huando criamos uma instUncia de uma classe o sistema aloca mem,ria suficiente !ara o ob"ecto e todas as suas #ari#eis de instUncia$ :ada instUncia obt/m a sua !r,!ria c,!ia de todas as #ari#eis de instUncia definidas na classe$ As classes fornecem ao !ro%ramador %eneralidade a !ossibilidade de definir .ual.uer coisa uma #e- e de!ois fa-er montes de c,!ias$ Al/m das #ari#eis de instUncia as classes !odem definir #ari#eis de classe$ ;ma varivel de classe cont/m informao .ue / !artil3ada !or todas as instUncias da classe$ Por e4em!lo #amos E2001 !or Ant,nio AraB"o de 2li#eira Pri#ado =detal3es de im!lementao> PBblico =AP1> (udar !edaleira (udar cad*ncia 'ra#ar #elocidade cad*ncia !edaleira Sistema de Pedaleiras =im!lementao> JAVA X su!or .ue todas as bicicletas !ossuem o mesmo nBmero de !edaleiras =rodas dentadas>$ Deste caso definindo uma #ari#el de instUncia !ara %uardar o nBmero de !edaleiras / ineficienteP cada instUncia teria a sua !r,!ria c,!ia da #ari#el mas o #alor seria o mesmo !ara todas as #ari#eis$ Em tais situa+es !odemos definir uma #ari#el de classe .ue conten3a o nBmero de !edaleiras$ 'odas as instUncias !artil3am esta #ari#el$ Se um ob"ecto altera a #ari#el esta muda !ara todos os ob"ectos deste ti!o$ ;ma classe !ode ainda declarar m/todos de classe$ ;m m/todo de classe !ode ser in#ocado directamente da classe #isto .ue estes de#em ser in#ocados numa instUncia em !articular$ $lasse Inst"ncia da $lasse HERANA 2 Bltimo dos conceitos .ue #amos estudar / c3amado 3erana$ Huando as !essoas comeam a !ensar acerca de classes !ensam em es.uemas de classificao$ 2 e4em!lo mais comum / o dos seres #i#os$ ;m sistema de classifica+es !arece6se com o se%uinteA Este dia%rama si%nifica .ue cada classe !artil3a al%umas caracter0sticas com a classe imediatamente acima desta a superclasse$ Por e4em!lo todos os !ssaros t*m es.ueletos$ Ri-emos .ue a classe 3erdou as caracter0sticas de todas as classes acima desta na r#ore 3ierr.uica$ Por e4em!lo todos os !ssaros so seres #i#os$ Acontece o mesmo !ara os ob"ectos criados !elo 3omem$ Por e4em!lo todas as m.uinas de la#ar !artil3am caracter0sticas comuns tais como um cilindro e um com!artimento !ara o deter%ente$ Das lin%ua%ens orientadas a ob"ectos tamb/m temos muitas #e-es classes relacionadas com outras classes de uma maneira similar$ As classes 3erdam certas caracter0sticas =dados e/ou m/todos> das suas su!erclasses mas estas !ossuem as suas !r,!rias caracter0sticas adicionais$ E2001 !or Ant,nio AraB"o de 2li#eira (udar !edaleira (udar cad*ncia 'ra#ar #elocidadeY20 cad*nciaYC0 !edaleiraY2 DumPedaleirasYS NumPedaleirasYS (udar !edaleira 'ra#ar (udar cad*ncia Seres #i#os Plantas Vun%os 1n#ertebrados Vertebrados Pei4es Anf0bios Z/!teis (am0feros Pssaros O JAVA :ada classe tem uma su!erclasse =acima na 3ierar.uia> e e#entualmente subclasses .ue 3erdam as suas caracter0sticas$ A subclasse 3erda o estado da su!erclasse =na forma de #ari#eis declaradas> e os seus com!ortamentos atra#/s dos m/todos declarados na su!erclasse$ As subclasses !odem tamb/m redefinir =override>os m/todos 3erdados e fornecer im!lementa+es es!eciali-adas !ara estes m/todos$ Por e4em!lo se temos uma bicicleta de montan3a com um con"unto e4tra de !edaleiras !odemos redefinir o m/todo [mudar !edaleira\ de maneira a .ue o ciclista !ossa usar as no#as !edaleiras$ Do 3 limite !ara os n0#eis de 3erana$ A r#ore de 3erana ou %ierarquia de classes !ode ser to e4tensa .uanto necessrio$ 2s m/todos e as #ari#eis so 3erdadas em ordem descendente atra#/s dos #rios n0#eis$ Em %eral .uanto mais abai4o est uma classe na 3ierar.uia mais es!eciali-ado / o seu com!ortamento$ A mais #alia .ue a 3erana tra- ao !ro%ramador / a !ossibilidade de reutili-aoP o !ro%ramador !ode criar no#as classes .ue utili-am as facilidades de classes " e4istentes estendendo estas facilidades tanto .uanto se"a necessrio$ As su!erclasses so tamb/m denominadas classes abstractas .ue definem com!ortamentos %en/ricos$ OBJECTOS VS. CLASSES Pro#a#elmente notou .ue as ilustra+es de ob"ectos e classes !arecem muito semel3antes$ E de facto a diferena entre classes e ob"ectos / muitas #e-es a fonte de al%uma confuso$ Do mundo real / ,b#io .ue as classes no so elas mesmas os ob"ectos .ue descre#em$ 2 modelo/!ro"ecto de uma bicicleta no / a bicicleta$ 'oda#ia / um !ouco mais dif0cil de diferenciar classes e ob"ectos em software$ 1sto acontece !or.ue os ob"ectos de software so meros modelos electr,nicos de ob"ectos do mundo real ou de conceitos abstractos$ Acontece tamb/m !or.ue o termo [ob"ecto\ / al%umas #e-es utili-ado !ara referir tanto classes como instUncias$ Das fi%uras acima a classe / re!resentada sem !reenc3imento !or.ue esta re!resenta um modelo de um ob"ecto e no o ob"ecto em si$ Em contra!artida um ob"ecto / !reenc3ido indicando .ue o ob"ecto e4iste e !ode ser usado$ 2 O primeiro pror!m! em JAVA Su!ondo .ue o leitor " con3ece outras lin%ua%ens de !ro%ramao muitos dos conceitos inerentes ao acto de !ro%ramar no sero no#os !ortanto iremos abordar os conceitos conforme estes forem utili-ados nos nossos e4em!los$ A!ica"es e A!ets ;m !ro%rama / uma coleco de instru+es !ara um com!utador$ Pro%ramas de com!utador so #ul%armente con3ecidos como software e 3 muitos ti!os diferentes de software$ JAVA / uma de muitas lin%ua%ens destinadas a comandar com!utadores$ 2s !ro%ramas JAVA so de dois ti!os distintosA a!lica+es e applets$ Ambos os ti!os so !ro%ramas$ A diferena est no facto de .ue uma a!licao / um !ro%rama com!letamente aut,nomo < no fa- !arte nem !recisa de nen3um outro !ro%rama !ara correr$ :ontrariamente uma applet / in#ocada como !arte de uma !%ina Web e !ortanto necessita de um browser ou de um #isuali-ador de applets !ara a in#ocar$ & diferenas im!ortantes entre a maneira como uma applet e uma a!licao so escritas em JAVA$ A.ui iremos abordar essencialmente a escrita de applets !ois actualmente / esta a !rinci!al forma de utili-ao do JAVA na !rtica$ E2001 !or Ant,nio AraB"o de 2li#eira JAVA C Prearao de um rograma em JAVA Para escre#er um !ro%rama em JAVA necessitamos de um editor de te4to$ Para isso !odemos recorrer a .ual.uer editor de te4to corrente como o ER1' do (s6Ros o Dote!ad do WindoGs o Vi do ;ni4 ou )inu4 ou recorrer a al%um !acote de desen#ol#imento inte%rado os .uais dis!onibili-am recursos !ara resol#er todos os !assos de criao com!ilao li%ao e #isuali-ao de um !ro%rama =!or e4em!lo o VisualA%e da 1B(>$ Portanto !ara a criao de um !ro%rama em JAVA !recisamos dos se%uintes recursos/!ro%ramasA 1$ Editor de te4toP 2$ :om!iladorP F$ )inNerP Q$ A!!let #ieGer ou broGser$ 2 !rimeiro !asso consiste ento na di%itao do c,di%o !ela utili-ao de um editor de te4to$ 2 nosso !rimeiro !ro%rama ter o se%uinte as!ectoA Re!ois de introdu-ido o te4to acima num editor de te4to de#emos %ra#6lo em disco num fic3eiro com o nome da classe criada ou se"a &audacao e com e4tenso java o .ue d &audacao'java$ Re#e6se ter em conta .ue o JAVA distin%ue maiBsculas e minBsculas$ 2 !asso se%uinte !assa !ela com!ilao do !ro%rama$ Para isso iremos usar o com!ilador de JAVA o "a#ac di%itando na lin3a de comando o se%uinteA javac Saudacao.java A!,s a com!ilao se no 3ou#er erros ser %erado o fic3eiro binrio cu"o nome est li%ado ao nome da classe definida no c,di%oA Saudacao.class Por Bltimo resta e4ecutar o !ro%rama$ Ao contrrio de outras lin%ua%ens o JAVA no %era um fic3eiro binrio e4ecut#el directamente !elo sistema o!erati#o =c,di%o m.uina>$ Este %era c,di%o !ara uma m.uina #irtual denominado byte code .ue / inter!retado localmente em cada m.uina es!ec0fica !or um !ro%rama c3amado Java Virtual Macine =(.uina Virtual Ja#a>$ Para e4ecutar o !ro%rama usamos o se%uinte comandoA java &audacao'class Prearao de uma A!et Para escre#er a a!!let usamos o mesmo ti!o de editores referido !ara os !ro%ramas JAVA na seco anterior$ E2001 !or Ant,nio AraB"o de 2li#eira class Saudacao { public static void main(String args[]) { System.out.println(Ola!); } } 10 JAVA A nossa !rimeira a!!let ter o se%uinte as!ectoA Re!ois de introdu-ido o te4to acima num editor de te4to de#emos %ra#6lo em disco num fic3eiro com o nome da classe criada ou se"a &audacao e com e4tenso java o .ue d &audacao'java$ Re#e6se ter tamb/m em conta .ue o JAVA distin%ue maiBsculas e minBsculas$ 2 !asso se%uinte !assa !ela com!ilao do !ro%rama$ Para isso iremos usar o mesmo com!ilador de JAVA .ue anteriormente o "a#ac di%itando na lin3a de comando o se%uinteA javac Saudacao.java A!,s a com!ilao se no 3ou#er erros ser %erado o fic3eiro binrio cu"o nome est li%ado ao nome da classe definida no c,di%oA Saudacao.class Por Bltimo resta inserir a classe num fic3eiro &'() e abri6lo com um broGser .ue inter!rete JAVA$ Para isso de#emos comear !or fa-er a incluso num fic3eiro &'() da se%uinte maneiraA Re!ois de introdu-ido o te4to acima num editor de te4to de#emos %ra#6lo em disco num fic3eiro com o nome &audacao'%tml o .ual de#er ser aberto !or um broGser ou utili-ando o appletviewer como se se%ueA appletvie(er &audacao'%tml E2001 !or Ant,nio AraB"o de 2li#eira import java.awt.*; import java.applet.Applet; public class Saudacao extends Applet{ public void paint(Graphics g) { g.drawString(Ola!, 50, 50); } } <html> <header> <title>O primeiro apple</title> </header> <body> <applet code!Saudacao.cla"" width!#00 height!$00> </applet> </body> </html> } JAVA 11 2 resultado da applet ser e4ibido numa "anela %rfica .ue ter o se%uinte as!ectoA E2001 !or Ant,nio AraB"o de 2li#eira impor %a&a.a'.*; impor %a&a.apple.(pple; pu)lic cla"" Saudacao e*e+d" (pple { pu)lic &oid pai+ (,rap-ic" g) { g.dra'"ri+g(Ola, 50, 50); } } 12 JAVA ndice ) Introdu!o''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''* Zesen3a &ist,rica$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$2 2 .ue / o JAVA$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$2 Pro%ramas em JAVA$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$F Pro%ramao orientada a ob"ectos =22P>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$F !b"ectos#####################################################################################################################################################################$ %lasses#######################################################################################################################################################################& 'eran(a#####################################################################################################################################################################) !b"ectos vs# %lasses###################################################################################################################################################* * O primeiro programa em JAVA'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''+ A!lica+es e A!!lets$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$O Pre!arao de um !ro%rama em JAVA$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$C Pre!arao de uma A!!let$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$10 E2001 !or Ant,nio AraB"o de 2li#eira