Você está na página 1de 492
q g eet ® 3 oe 3 & a" © Bs — g S @ we g & Pense Java - Guia de Aprendizager Use a Cabeca! “ant ent ie ea ex Usp ctu oma ail + toa apes bo dep i ede’ ‘Teatampion ‘wasn ‘npn plc tn ved Dan ei ent sce ten point dna seem rca eh bs ii taenemieen ea inst heommistenilias stpitehicatpeie at Di ho ‘ob lcd tr bi Insendsopciosdndreil ) Si Spc eu hppa dt thi chs mo Wee Carel ME eu, Kl Se eae sows wearers GF CAC LP ieseaco ~ osn 2 inteugdo Sumario Introdugéo ‘Seu cérebro € 0 Java. Aqui esta vood tentando aprender algo, enquanto 0 seu cérebro est he fazendo o favor de garant cue o aprendzado ndo vingue. Sau cérebro est pensando “E melhor deixar espaco para colsas mais importantes, como que animais sehagens evar e se praticar snowboard pelado ¢ uma ma iia". Portanto, como voc faré 0 seu cérebro pensar que sua vida epende co que vocé conhecer a respeito do Java’? Pan quem xe io? wi No quo Su cota et ponsando a wi Netornecimana x x Fag sou crt se cara a wi Requsos gr reel ait ap Agatecmeios 03 wv Aprofundando- Java 0 levard a novas fronteiras. No humid langamento par o pico como a (suposta) verso 1.02, 0 Java seduziu os programadores com sua sintaxe amigave, recursos orientados a bjetos, gerenciamento de meméri e, o melhor de tudo ~ a promessa de porabildade, Examinaremos isso rapidamente e escrevereros, compllaremos e execularemnos alguns codigos. Felaremos sobre a sintae, loops, ramiicagdes e o que torna o Java tao interessante, Mergulhe, (Como Joe uncona 2 Estiurag otsgo om va 5 ‘ona de wna casse 6 (omatoco mi) 5 Los 8 Ranifegto condiciones i) 9 Coxcandoo apeato"B8 gral de cowjat ” a 2 Bat apo na foc: comple vs. 8 Exccos equetrecabeas 8 Uma viagem até Objet6polis ‘Ouvi dizer que haveria objetos. No Capitulo 1, colocamos todo o igo no método main). Essa nfo 6 exatamente uma abordagem orientada a objetos. Portanto, agora temos que deixar esse universo procedimental para ts © comecar a crar alguns objtos por nossa propria conta. Examinaremos o que torna 0 desenvolvimento orientado a objetos (00. object-oriented) em Java tio divertido.Discuremos a cferenga entre uma casse o um objeto Examinaremos como 08 [pros pede metorr sue via June classe Gera nas Caters (ad 0 Adepo de 00 vs Lary 0 Usui ge Pacers) Herr ur into) Sebreponcométaas uma duc) ‘que exte om uma case (ros, verdes inl)? ‘Cando seu prima objeto sano ma) muitos Cicigo oop de Anhao objetos —Eurcciosequab-cateras SeNeREeRs Conhega suas variéveis Existem duas verses de variaveis: primitivas e de referéncia. Deve haver mais coisas a vida além de ines, strings e matrizes. E se voce tr um objelo DonodeAnimal com uma varvel de instancia C30? Ou um Carro com um Motor? Neste captuo desvelaremos os mistérios os tipos usados no Java e exarinaremos o que voc’ pode declarar como uma varaval, 0 que ace insenr em uma varivel eo que pode fazer com ela. E para conclirdiscutremos 0 que ‘acontece realmente na pha de Io coetive. Detsendo na varve 0a a recepero como te) % “Thos rms (Ovrun dsb com equa ler) 8 aovashave no Jn 3 ‘sis eer (anol renet geumcieo) 2 Bret 9 —desxazto ain de tte a ‘bjs pita do att @ satertooka Mates (a ines) 6 de cbjete eros « qubracaboas a ‘Como 0s objetos se comportam C estado afeta 0 comportamento, o comportamento afeta 0 estado. Sebernes que 0s ‘bjetos tém estado e comportamento,representados peas verdveis de instancia e métodos. ‘Agora examinaremos como o estado o compertamento eso relacionados. O comportamento de ‘um objeto usa um estado exclsivo dele. Em outas palavas, os métodos usam os valores das aaar pox variéeis de instincia. Por exernlo “Se o cdo pesar menos de 27 qulos rite de aleatia, caso water conto." Allremos alguns estados! aa (0s nto sam esa do obj at tern) 2 os (0s agumeres tos de rexmo co mado 3 Pasa px abr (al sare cop] 5 17] ts tea eotgnte ® reaps (ono argue ae a ehh) 7 = rs sae ted naa mir o foo.gols]: void gplints) (1 Emrelos qutracabeaat a 5 Métodos extra fortes ‘Aumentemos a forga de nossos métodos. Voo8 apredeu sobre as varies, brincou com alguns objeos e escreveu um pequano obdigo. Mas precisa de mais feramentas. Como os ‘operadores. E os loops. Pode ser it gerarnmeros aleaérios. E converter uma sting em um sim, sso sera avangado. E por que néo aprender tudo através da criaco de algo real, para vers como € escever (e tester) um programa a pat do zero, Tlvez um jogo, como 0 Sink a Dot Com (semelhante& Batatha Naval) CortarscrSik Data » | Consrars zm Sek Dt Casings aa vec in) n z fsa cg patio bse 0) 1" = ‘pode do et Com snes ® 3 ak : Casticando © jogo Dat Com simples 7 + bn Chao Dt Ca se ” ] Geno neren sone ahrinton) 5 Cio perio prac dota bo apt dnehadeconando [ | team pe & asf Contos sprites otras oa an revo nea 8 Tae ee Ennion eebmcaere 8 s inirodu Usando a biblioteca Java O Java vem com centenas de classes predefinidas. Voce nao tera que reinventar a roda eae none ference rman a ‘Bom saber gue hd wna ArrayList no pacot java Mas como pderiadescobrir iso soca?” -Anatsanioo oro de ogo Det Com sige » ‘ay (enaciandese de AP Joa) a ‘erga acoso de case Drom 102 Censind agp el (Sek ot Cam) 103 ‘ego reparatti do jo reat 107 40d go reat 108 esses tolenas 12 sano ita (PI J) 14 sano pacts (rats porta, none ones quater) 1 sand os decent hs reer co API HTM 1" becsbeas 10 Eri. Melhor viver em Objetépolis Planeje seus programas com o futuro em mente. E se vocé pudesse escrever cddigos que 17) asec hctias saatus mie €is place ter tas fa tas es oa mnie (es steer satus thea ope saree Comes tere a0 Plano de Polimorfismo, vooé aprendera as 5 etapas para a obtengdo de um projeto de classes ieee tnane eeeenn tntam mec Cannone | ar ‘agora — uma ligéo banus sobre as 4 dicas para a exploragdo da heranga. Erlend herange(lconaneris da siperdase «stot 1% Projo wna ror eran simul da cass Aina) oo vtand a dupcar deco json haar) wa Sabepardo métosee na 2. e TEM guar bart) 130 (que vo eared a supers? 133 ‘ue ena he frreer een? 14 Pelnarieno kan a rn eu spe amet asa) 15 ages a scrap ro mea nests arguments toed 10) 18 ‘Sebrecags do mld nad mas do que a etiaodo nome do mbt) 19 Bris e qunracabecas 0 Polimorfismo real ‘Anheranga & apenas 0 comego. Para exploraro polimorsmo, prec'samos de interfaces. Temos que ir além da simples Neranga e alozngara lxibiliade que vooé s6 conseguiré projetando e codifiando em interfaces. O que é uma interface? Uma classe 100% abstraia. O que ( uma classe abstala? Uma classe que no pode Ser istanciada, Em que isso GUI? Lela o capil, aaa Agana cases sinlemete ni oven se nto oo = ‘Chistes shui (no pe se taneacas) we eto sstaos See ser meets) 1 Opelmenan a 1 q eer )). Chase Oj (0 sperase al ct) 12 rm J Eine cts ous Ary less apads com go Obet 19 ime Shea ‘ compiador vere © tpo de rfernci (ates de permite que vo chame un método) 185. Entando em canta com seu abt nim 156 oe Retro pomicas 187 Comer una eurtrcia do obj assanio mas para baie ra verde hora 188 Losango Ft pretinna de are ms 2 sad ees (oer so) 12 Earloor eget @ Vida e morte de um objeto Objetos nascem e objetos morrem. Voc 6 quem manda, Voeé decide quando e como construes. Decide quando abanconéos. O Coletor de Lixo (ge, garbage collecto solcta emia, Exeminaremos como os obetos so criados, onde residem e como manter ou abandoné- los eficienterent. Isso significa que falaremos sobre o heap, a pia, o escopo, constutores, superconstrutores, referencias nuas e qualicagéo para o go. ‘pn 0 eap on os cos wa ares m ods dita m Onde vari eaten 1” (nde as vais de rst ede m CO miage da eae oe ebtos 0 Conair (cig ue serd urea quan oc sa ou) 1 Inala stato gum or eto Duck Pat) id Corereres obecarapados 19 Consrures de suprcasse (ctl de conte) ww Se Charan constr sobecarogados usando mt) 8 mt et mh cig Ave deum abeto ea am Calta de Lio (como trot ete ase) ‘9 ethos Sa sri quota sabes 196 10 Os niimeros séo importantes Faga 0 célculo. 0 API Java tem métodos para valor absoluto,aredondamenio, minimax, el. Mas e quanto a formatago? Voo8 pode querer que os nimeros sejam exbidos apenas com das, ‘casas decimais ou com pontos em todos os locas coretos.E pode querer exbir e manipular datas, também. E quanto & conversa de uma sting em um nimero? Ou a carwerséo dum rnimero em uma string? Comegaremos aprendendo o que signfica para uma varvel ou método set esidtico. arLavets estiticas ato compartiibadas por totas Ssatdnclas de uma cla Case Mat (ic precisa realest Gouna sta cla) ‘98 anne oe lo ations 9 | Vera esicas mm Consates (ale ets fis) a elodos de Nat (andor). our) abs). a Cases encapsloraenege, Bolan Cheeta, a0 ‘évinseo 20 Ferratago de nines 22 Forataioe maripsacode cates 2 Inporagiesetoas m rercies e quctaaboss m 11 ‘@ rirodugdo Comportamento arriscado Problemas acontecem. 0 arquivo ndo esté no local. O sorvdor est travado, Independentemente de quanto vocé ¢ bom em programacéo, nao # possivel controlar tudo. {Quando crar um método perigaso, precsara de um cécigo para manipuar 0 que acontecer de ‘errado, Nas como saber quando um método é perigoso? Onde inser cidigo que manipulerd a stuagdo excepeiona? Neste capitulo, construremos um MIDI Music Player, que usard o pergoso [AP| JavaSound, portato, & melhor descobrirmos. Cran un set oom e098) = Eon eh eras canir sso parse? am Ese aan hacen pote oi. ma compro vere) un sk gS on Py Cartan een an ra no ta at 2 —e— Cav de bos iach = ave 86a dng cr spo am soa SED SEES capensis gis (ede importa) x Dc aa nai pers es) x Nano ec ana 20 festa cin oreo rs) a res equates aa 12 Uma histéria muito gratica Encare a realidade, vocé precisa criar GUIs. Mesmo se acredita que durante o resto de sua vida escreve’ somente o6digo no lado do servdor, cedo ou tarde tera que iar feramentas e vai {querer uma interface géfca. Dedicaremas dois captuios &s GUIs @ aprenderemos mais scbre determinados recursas de linguagem, inclusive a Manipulagdo de Eventos ¢ as Classes Internas. Inserremos um botdo na tela, pintaremos a tela, exbrernos uma figura jpeg & trabalharemos ate meso com um pouco de animagao. ne si rina GUA 2 peeeery Capra eo de i pt me es are Implement uma interface ouvirte oe vases sme weaned haa), Capsencos ct Acer du bio 26 bapehog og irs ene 2 Drs compton) 2 ——s eee oc Gapiszd 2 SS SSE ani ntti enune 28 Clowes wept are cine ne cass) 2 ieee area iss neh sears} z= ‘oe ee mi oe et opie fe sno ata) ms writs ace mars avn: Ee gcse m 13 Trabalhe em seu Swing (© Swing é facil. A menos que vocé se import realmerte com o local de cada elemento. O igo Swing parece fi, mas depois de compl, exocuare examine nos daros conta dst ‘sso nto deveria estar ai"O que toma fci a cadifcagdo &0 que toma df o contole— 0 GGerenciador de Layout. Mas com um pouco de esfogo, vocé pode fazer os gerenciadores de layout se curvarem a sua voniade. Neste capitulo, trabaharemos em nosso Swing e eprenderemos ‘aie sobre os elementos gros. Componentes do Swing me erences de Layout es conclam otro eo ae) me “Wes Gerensaderes do Layout bard, hx, a) 78 xi eos Bore oat leontle enc rete ca tarts) Futana a re aman rece) 76 Bayt como no xo as ade empitarconponents verse) ze Tonia (pr enact de sue de a ha) 0 endra (para tet ce cage arias) 70 Jor orto tate cron fia a eos?) mn 6 panteo tguet | st unas desl lave) 2. cot o gue esbear | Recta citgo (0 cig comple —consundn olan de tate-pap Bastx) 250, & ——_| exercase enecatecas ar Salvando objetos s objetos podem ser achatados e reconstituidos. Os cbetos possuem estado © 4. Srotonttcpranonsern mesecancr eto Seo seu programa iver que salvar 0 estado, yoo poderd fazéi0 da maneia mais cf, exarinanda cada objeto e ravando melicuiosamente 0 valor de cada varivel de instncia, Ou, da maneira mais tél, orientada a objets — smglesmente congleo abet (serilize-c) @ reconsttua (desseraize), para que vole ao que ea. \ Sshand ead do obo a raano un ott erica en un arvo a8 Fos Java de enreda sl (ometos«encadeanerce) so Seratzagio de oj 05 Inplomerand a aarace Sraate 6 sigue santo varies ransnas 8 persue Gessersese30 Dpeerisendo um ojo te (eae am arquivo ce oxo 32 jvaioFie a8 Leno emum ao se exo 37 Dino ua singe has cm spi) x Receta de ctigo st Execicosequtracaboae mm Crie uma conexéo efiridos pelas classes na biblteca java.net. Um dos melhores recursos do Java é que enviar @ receber dacos através de uma rede é realmente apenas uma alvdade de E'S com um fuxo de Cconexio um pauco dierente ra extremidade da cadeia, Neste capitulo criarams soquetes do cliente. Craremos soqueles de Servidor. Criaremos cienles e servdores, Antes do fm do capitulo, \vocé teré um cliente de bate-papo totalmente funcional com varios segmentos. Disseros com 1 5 Conecte-se com 0 ambiente externo.€ tic. Todos 0s detalnes de nivel inferior de rede sto vars segmentes? ete Vio al 0 era oe oppo a0 Cnet ening ores a Soames 32 Fora TOP we Ler bos nso sad ured x ead dane enum que snd Pine) 5 scene ora Oat ave Cet x8 Cheon sete soie a ig Cy Ate Sener a J Cento cent ae capo = ee Vira tase taraca 30 a =o Inca un rx pmo) xs [marace Runa (att sagt) Ts esas de um ow oes Tread (ove, exe, em exauo) (oop exci em aero Agoriaer de sognanios (8 quam decide eno vost) ‘Clean um sapmeno em sspensio ‘tandoeiniondo di segnenns Proiomas 6 ccc a casa pte sr abo? ‘problema de crcrincs de yan Mica, em cigo Boqueando sar gear aomictate “esto tem um loueo tem pobla ‘Aung Pesta? Méodossnoniates (ante um toque) lass (5ago de Chatctet cam ves sects (gp ree para SinleCatSer Enecicos e qutracaberas RSSRSRRRREREEEEE Estruturas de dados AA classficagao & instanténea em Java. Voc tem todas as feramentas para coletar € ‘manipular dados sem te que escrever seus prprios algoitmos de classicagéo. O Java CColections Framework tem uma estrutua de dads que deve funcionar para pratcamerte {qualquer coisa que voo’precisar fazer. Quer manter uma lista que voc possa aumentar facimente? Enconrer algo pelo name? Cria una lista que excua automaticamete fodos os dados repetidos? Classifica seus colaboradores por quanta vezes lhe tata? Corjnios wo Classica exo Aa. cm Calectons st) m7 Dados generic gaara po ae (lasscando ites ue gemertan a etertice Canparate ey Cee om um ergata ereoaiza me (AP de cones, carunose mapas 38 tan date rapes cor Hest Sotrepard shade) equ) Hasan sand carga pare gor polnersno Enacicos equtracaberzs 0 S228 Lance seu cédigo E hora de pr em pratica. Vocé escreveu seu codigo. Testu 0 cédigo. Aprimorouo. Vos ‘contou para todo mundo que conhece que, se nunca se deparar com uma linha de cbdigo novamente, no haveré problema. Mas, no fm das conias, ter crado uma obra de arte. negécio funciona mesmo! Porém, fazer 0 que agora’ Nesses dos timos capituls, etudareros como ‘organizar, empacolare implantar seu cbdigo Java. Examinaremos ope6es de implantacdo local, ‘semiocal e remo, incluindo arquivos ar executave's, 0 Java Web Start, RMI ¢ Serves. Calma ‘Aiguns dos recursos mais interessantes em Java so mais facels de usar do que voce imagina pets de mlrtapso om Nartenaos amos de seucilon ons ede sis classes sepraos as Cento um aio JAR Jor ARs) nesta a6 Procesando um aro JAR eect an Ine suse anes em um peel a (Os pacts caver er une astute de aio adoquade 46 Compa e exeutane com pactas es top case Compete con 6 «0 Ciena un aie AR saa a a 1B, 222 et it) par ime na Wed “8 vm Coe elt om ele a fmccbs qutrecteas a Computagao distribuida ‘Trabalhar remotamente no precisa Ser ruim. Caro, as coisas sao mais ces quando 1B terse ates dicate eo n un ll enum an com um JV par regu a. as rem semove isso € possvl. Ou desejvel. Ese sou aplcatvo manipular céluls poderosos? E se fle precisar de dades de um banca de dados Seguro? Neste capiuio, aprenderemos a usar O| surpreendenlemenie simples Remote Method Invocation (RM) do Java. Também examinaremos repidamente os Servlets, 0s Enterprise Java Beans (EJB) € 0 Jin. a AD) onset mse si ett a : ee es imal s 4 TTY Enmore) so rae s Q) 4 Oo Joi, © melhor entre todos 08 ruques 0 QD DQ Q er cree ner na a mee |S om ‘o ‘Apéndice A O projeto final da receita de cédigo. 0 cédigo completo do beat box de bate-papo cliente- cicero Bosal (io cleria) 2 sis cdg sencn) 6 yh \ \ ah Apéndice B ‘mundo. Tamos mais lgumas coises para voo8, mas é aqui que acaba olvo,E dessa vez & B Os dez princpais itens que no apareceram no lvro. Ainda no poderns soto no verdade ma doe dae “0 wi © que esto dizendo sobre Use a Cabecal ‘AAmuzonescalheu Use a Cabepa! Java A Software Development Magszine indo «como Top Ten Editor's Choice for Use a Cabea! Java para finalist do 14 Compute Books of 2003 (primeira ego) Annual ot Col/Praduct Excellence Awards “O lio “Use a Cabea! Jeo", de Katy e Ber, transforma a pgina impress na coisa mais préxima de uma GUI que vooe jamais vi, De uma maneiradivertida modem, os autores teeram oaprendizado de Jva uma experiéscia enelvente do tip 9 ‘que ees vo invent agora?” Warren Keuffel, Software Development Magazine ‘nica manera de saber o valor de um toil &comprovar sel eficene em ensnar. Use a Cabra! Java sores 20 «sina. Cet, ache infant, pom percebi que eta entendendo completamente o pices enquato peor olvro.” “O estilo de Use a Cabega! Jane tormon 0 prendizad,digamos, mais ici.” slashdot (resenha de um alternativo sri) Alem do cso seq conti eg s0 ss de dees ead da, Usa Cabea! Jove so vin uestes rts qu onto ies ia dea como ote exer pr ei. inigeme, oso, moder € rico - i xs mutes os qu conse gr hse sistent slay cou nian sri de ots Poco ining eee De Dan Ras, intr do User Sciences and Experience Research TM Almaden Research Center (gue ensina Intigécia Arica na Universidade de Sanford) ripid, neyo diver ices, Tome ai - yep alent aprender alo!” Ken Arnold, ex-engenheiro senior da Sun Microsystems ‘Coautor de Linguagem de Programagio Java” (om James Gosling, criador do Java) A tecnologia ava eat em todos os lugares se vo for desenvolvedor de saftwares eno tive prendid Java, defnitvamente gow ahora de mergular- Be ebega ~ Scott MeNealy, Presidente, conselheirw ¢ CEO da Sun Microsystems Use a Cabeca! Jana & come o Monty Python encontrando a gangue dos quit... text to bem diviido po quebr-cabeas cchistrias, testes ¢exemplos, que vet abordardtereno como em nesburn ou liv de computagi.” Douglas Rowe, Grupo de Usudrios Java de Columbia Elogios a Use a Cabecal Java “Leia Use Cabea! Jaa evo pasar experinentarnovamente a versio ao aprender. Pra pessoas qu ost de sprender nova linguagens, em experiaciaem coca da computa e programas, ete io uma i. am iro {ue toma dveidooaprenizao de uma iaguages de computador conplea Espero qo aa ais anor quedo dear 0 velho mole dos estilo esr “radios, Aprende inguagens de compu deve er diver ee df” = Julth Taylor, Southeast Ohio Macromedia User Group Se vot quer aprender Jaa, no procure mais: bem-vindo 20 primero vo tenico beseado em GUI! Este formato nova ¢ ‘bemelaboradoforecebeneficos que outros texts sb va simplesmente no conseguem... Prepares para uma jorada realmente notivel pelo univers do Java Neil R. Bauman, Captio & CEO, Geek Cruises (www.GeekCruisescom) ‘Se vot for slatvamenteiiianteem programa;oeesve interes em Java, aguiest seu iva. Abordundo tudo, dos objets & crag de imterfacesgrifieas de wsurio (GUI, graphical wer interface, da manipulagio de excegbes ero) i ees (soguctes) esegmestao mille até mesmo o empacckamenta desu pila de clises em um agua de instalago, ese io {hem completo. Se oct apreci ess estilo, eon certo de que sao lvoe, como en desea que a sie Use a Cabesa! se «tend a mutes outros asst = Linux Questions.org “Fiqueivieado nos conte, egos comentades, entrevista engragads execs ments.” Michael Yuan, auto, Enterprise J2ME "Use a Cabecat Java. um novo sentido frase de marketing “Hé sempre um O'Reilly paraiso. Adi ext vo porque ‘is pescus que respi o dsereveram com temnos como ‘revolionia’ diendo qu ea uma sbordagen tlmente Aiereae para um lv. © resultado &engragado, reverent, ata, ntrativ lhane...Ler est vo & como setar na sala de «espera de wma conten, aprendendo~erndo ~ com colegas...Se vot quiser ENTENDER ava, compre.” ~ Andrew Pollack, wwwthenorth.com “Sef alguém no mundo faiiarizado com o canceto de “Use a Cabesa,provavelmenesou ea Este iv io bom, que me casaria com elena TV — Rick Rockwall, comeiante ( noivo original do programa de elevisio da Fox “Who wants to marry a i aire” "Ewe nego € to esranamente bom que me fa querer CHORAR Esto perplxo.” Floyd Jones, autor sénior de texts tkenieoPoolboy, BEA. ‘Alguns dias ats ecebi mina fia de Use « Ceca! Jaya de Kathy Sierra e Bert Bates. Li apenas pare do liv, mas © que me supreendeu é qe, meso no tendo consepuido dormir naguea primera nie, me vi pensado: "Cer, sé mais ura pina, tio iri pura acama" = Joe Liton a introdugao Elogios a outros livros da série Use a Cabega! de co-autoria de Kathy e Bert [Amazon escolheu Use w Cobea! Series como {A Software Development Magarne indioon ‘Top Ten Edtcr’s Choice for Computer Books of Use a Caberal Serle Ure Cabesa! 2004 (primeira edo) Design Partems como finalists do 13* Annual Product Excellence Awards ‘Simone como se milhaes de sos tivessem sd iad de cima de minha cabea." Ward Cunningham, inventor do Wiki efundador de Hilde Group Ri chore, que comorida” ~ Dan Steinberg, editor-chefe, java.net “Minha primeira reaso fi rolar no cho de tanto rit: Dopis deme refer, prcei que ese iro no € apenas atamente pecs, «sim que se trata de melhor obra de inrodiojépublicada sare pies de projet.” Dr. Timothy A. Budd, professor assciado de cincia da computasio na Universidade do Estado do Oregon e autor de varios livros inclusive C++ fr Java programmers “0 wom preciso para ocadificadoe geile casual guru que existe em todos és. A oa de referncia eta para estatis ritca de desenvolvimento este vo me fz acompanbaroassunto sem a necessidae de agdentaraulrapascdaecansaiva aduia academia,” Travis Kalanich fundador do Scour and Red Swoosh e membro do MIT TRIO “FINALMENTE ~ um lvrosobe Java escrito a maneira que euesofhria seen fsse eu esto. Falando si este fo efinivamente dina para rs qualquer outro vo sobre softwar que ine Um bom i é muito diel de eserever,€ preciso muito tempo para deixar as coisas se desdobrarem em uma segiéacia natural, “rent ao let. £ muito tabalose. A malaria dos autres clrumente ni est altura do desi, Parabéns &equpe do Use a Cabea! EIB por um aalho de primira classe! = Wally Flint Nao poderiaiaginar uma pessoa sono ao esuar um vo de TH! Usand cs mates do Use a Cabeca!EYB, ace ‘natant (91%) ecoaepui um recone mundial come o mas jovem SCBSD, 14 anos” ~ Afsah Shafquat (SCBCD mais jovem do mundo) Olivo Use a Cabegal Serlets & tio bom quanto o Use a Cabera EJB, que me fer rt E acer 97% do exame! = Jef Cups, eonsultor de J2EE, Cronos sea Cubes Java ooriginal Head Fist Java Copyright © 205 da Eaitora Alta Books Li ‘Auhorized ransltion from English language edition, ented Head Fest Java, ISBN 0-S96-00820-, by Katy Siera and Bert ‘Baie. published by O'Reilly Media, Inc, Copyright © 2003, 2005 by O'Reilly Media, Ine PORTUGUESE language elton published by Ediora Alta Books, Copyright © 200S by Eaicra Aba Books. ‘Todos os direitos reservados e rotezdos pela Lei S988 de 14/12/73. Nenhuma pate deste liv, sem autorizago prvi por crit da elitr, poder ser epredurida ou tansida seam quis forem os meiosempregads: eletnico, mecnico, foci, grvaglo ou quisuer outs, ‘Ted o esfogo fi feito para fornecer a mais completa eadequad informasto, contudo aera eos) autres) no assume responsabilidad pos eslados esos da informa fomnecida, Recorpendamos ans ores tsar nformaso, bem como tomar todos os euiaosnecessirios (como o backup), anes da efetivautlizag. Este lv io entém CD-ROM, dsguete ou qualquer coma mia Eratase atualizaies: Sempre nos esfrgames para etregar a voce ei, um vo ive de eros teens ou de cone: orn, nem sempre isso &conseguio, sea por motive de alterago de software, interpretgio ov mesm quando algus desis constam) myers orginal de alguns livros que wauzinos. Sendo assim, criuosem nosso sit, wwwaltabooks comb, asco rras cle ‘etre, com a devia come, qualquer err encontato em nossos iss, Avisos e Renna de Direts: Este ir €yendido como est, sem garam de qualquer tipo sja express ou implicit “Mareas Registradas: Taos os termes mecionadosrecoshecidos como Marc Revista eeu comercial so deresponsabiliate E ne() mumbtst = (245.812 readberile onyFite.tat*1 1ovotFounasneeption 9) ( P.: ot que exist oJeva 2 0 Jva 5.0, mas xstram oJea3 «47 E porque Jee 606 no Java 207 RR: ss oinacers do maratn.. cuando avers do Jor pasou de. para 12 a8 alerass fen bo sspleche uso tao teagan eta ot Teed Wl Gos TOC seaooeon Sunsin ote d aa qn vo ove aivouna 12 Pot, eovenden30 vt contnaran er Graves croc 2 rea hore o foe 3 on Comer pela volo 18,comundore Sock ars qu atlases Mo uctren qv eacune wa tect (os aks ot devenovedres ecru eels evalua opt. © roan Nanoha saline o Yona soa ins cruaro ve 8 de tv Spree mas cok perbntSosa maesse sre 8 pra at 0°60 (onto ‘ogni conpeenda 0 rote au de 10 (opine nana ofc corks sian cone Asbo 2 130 18 covom nota ZF comeran ma vento Soa ‘passou a se chamar “Java 5.0". Mas vocé também o veré sendo chamado de “Java 5” (sem 0 °.0") e "Tiger" (seu Soda fg), No rosie do eur sorts cms prsare veo Voja como & fécil escrever codigo Java. og mybog = nor Dog ina, size vette te 1 caten|Fiiewoerounderception ex) Estrutura do cédigo em Java Respostas Go exericio Ny ume ssn ind rc se recipe em entender tue! um Merguino Rapido Tudo que se encontra aqui éexplicad com maioresdetahes no i, grande pare 1s primsras 40 pigins eo Java embrar una ingager que ve wou 0 passa, ans deses tens parecerio simples. Caso conti, no se reocupe com iso. Chegaremos I ee re fn as I, rice Se eee O que existe em um arquivo-FONTE? ‘Um anguvo de cSigo-fnte (coma extensio Java) cotém ua defini de clase. A classe representa uns porte de seu prerama, bora ‘um aplicativo mato pequeno psa precisar spenas de uma clase. Ache deve fcr dentro de uma par de chaes. © que existe em uma CLASSE? [#15 O55: 5 {Una clase tem um u mais més, Na clase Dog mle hark cond nsgies de am 0 co dev ait. Sew metodo devem sr Aclarados dent de uma clase em otras palavras, dent das haves da cls), 5 uma classe Java pit eines bog ( que existe em um METODO? void bask rio ds caves de um métoda,escreva ans como ce seerapots LET okey snetrugdo2: eve ser execu, O ego do meted € basicamente um cnjunto de instrgies,e por enquatovoo? pode eonsieraro método como fosse uma fungio ou procedimeto Anatomia de uma classe (Quando aJVM comegar er exeutada, procurar a classe que wad frneceu a inka de comand. Em seguid,comesar a procarar um metodo especialmente esr que se paregacxatamente com: public static votd main (string) args) 4 , Depoisa JVM exccvard tudo que estver ente as chaves (| de seu ‘mo principal. Todo aplicativo Fava precisa ter pelo menes una ‘dase eu metodo main (ao um método main por clase, apenas um 0 apliarivo). aura de \ i \r FEF / ee \ AY \ / snacriz 0 chanaré ‘args Te] Feats Pots a] (SETS I weal Graten-cut print |r mater") Sea cee RT| ee lees a — Criando uma classe com um método main En ava tuo inserdo cm uma ease Ve® cra seu arquivo de eige-one (com exenso java) em ‘equi. o converters em um novo aguvo de clase (om extesto.cfss. Quando exer se programa, ma ‘endade estar executed uma clas, Executar am programa sige infrmar3Jva Virwal Machine UVM) pra “carregara classe Hello e, em sequia,excute seu metodo main), Cornu exeeutando até rd 0 cio de main ter erin”, No Capitulo 2, nos aprofundaremos no assunto das clases, mas, por enqunt, voc precisa pensar ns: ‘como eserever um cétigo Java de modo que ele sejaexeatado? Eta comega com main). (0 métoo main () € onde seu programa comegar a ser exeoutado, Independertement do tama de sou programa (em curs pars, no importa quanta clases 0 Seu programa vai usar preciso que hj um modo main) que inicio ao process, 46 um Mergulho Rapido peblle clase myxicatagp ¢ public etatic vold main (steingt] arse) ¢ Gratan.oxt.printin(=t tate! Spatencovt-peiatin(vme Weed"); yrieerron. fave O que vocé pode inserir no método main? (Quando voeesiver dentro de main (ou de qualquer metodo), dversio omer. Voé pode instr todas s cosas que costumum ser usa na maria ds inguagens de programario para fazer o computador executar algo. Seu eign pein a IVM © sazer aise @ sarex aigo revetidanente pe fe aprenderd todos of elpoe Jars tazer algo sob essa condicéo ‘0 Capituto 3) Ianitieagto: testes it/elee at weight fon i 1) tipor iat, anes volte pubibe void gol ) ¢ ? chest aque 7 aspects basicas da Java e Iterando e iterand e... (era em rt cue dao pis: wile doi ofr Vo rk ‘anemia e nda cn ops poses ras oe ot ds P i forma, usemas while po enquanto. verdadeszo) ¢ A snraxe (para o mencionar a igica)€ to simples, que rovavelmente ‘oo deve ter adormecido. Contano que algum condo sa verdadeira, yoo far algo dato do loco de lop. 0 bloco de loop & ‘Se vod diser algo como “Enquanto (while) soreteNoPate for verdadero, continue air, ter clarmene um tet boleano Hd sorete no pot 0 no hd Mas se voo® dssesse“Enqunto Bob continua rat, io tea realmente um este ara faze isso Fncionr, oo tia ler pr Algo como “Enquano Bob ester roneando..” ou “Enquano Bob ndo| cetiver usando sae Testes booleanos simples ‘oe? pode rar um est boolean simples para verificaro valor de uma varivel, wsando um operador de comparago somo: «(menor que) > (maior que) igualdade (sim, So dos snas de igualdade) (Observe a ierena ene o operador de ribuido (apeas um ial de igus) €oopeador ual (dis sins de gualade). Matos programadoresdigtam acidentalmente = quando querem dizer= =, (Mas no 3) N&o existem Perguntas Idiotas P® porque tomas que inser do em una css? Rio so sur trained tes (00). No & cane stsamet que rans cones ‘antiquados ¢ eridvamos um arquivoorta menalteo com uma piha de procedimantos. No Capitulo 2, voce _aprendera que uma classe consste no projeto de um objeto e que quase tudo em Java é um objeto, Peo qu nsec um rtd ran toda clams que cia’? Ri naa um ronan ta pote wes ces mesa ots), mes vor pd ts econ ur nde na quar opogaacatept ar eco Vr pe i nes deen ela Cie tentan nalodon mah prota sat aan Cass, 1 um Merguho Répido P.: em mime our ngugen, pose er um te Bolan con ump ina Em Jv, posse dar tig cone sane G16) "Nao. Um boalesno e um inero nBo so tpos compativeis em Java. Como o resultado de um teste condicional deve ser um booleano, a nica vardvel que vocé pode testa drelamente (sem usar um operador de comparagdo) & ‘um booleano, Por exenpo, voo8 pode dizer eitetisioe) 1) DISCRIMINAGAO DOS PONTOS As insrugiesterninan em pont--virgul: Exemplo de um loop while Syaten.out.pristla(“istes Loop") wile treo Syeten.cut.peintln(oMe leep*) Syoten-cut prineln(*0 valor da x € * + 2) ‘system. cut-pe Os Bloes de cdig so definidos por um pr de chases a Declare uma vrivel it com um nome eu tip: int 0 operador de atibuigo é un snl de gua © operador gual a ods sinas de gua 0 oop whl exeutar tudo que etiverdnto de seu boco (find po caves, comtanto gue ote condicional sea verdadero, fate ee tap Se tee condo fr fa, obo dio do to eee Jac whe no ser exeutd, eo processes Orton dex 63 pam fnco nooo meinen posterior an boo a a te tow CCologue ur est boteano ete punts: wile (e==4) () Ramificago condicional Em Java, um est i basicamenteo mesmo que o ete booeano de um oop wile —s6 que em vez de ier “while sida houver cervea.”, voc dr "if (se) ain boner cere.” lee Speten.cuk peinelattx deve ser igual a 3") void main (steinal} args) ( 1 java retest x deve ser dguat e 3 H (0 tig anterce execu alnha que ibe "x dee ser igual 3" somente se condo (igual a3) foratendda.Independentemente de ser verde, no entano,Tinha que exe "Iso seri executado de qualquer forma" sei executada, Porno, dependendo do “alo , um ov dua instugdes sero exis Mas pemosadcionar una instusio es condicio, pan podermos dizer algo como “If sind hoover cervja, comin aco cr, else(csoconeso) pegue mais cere e enti continu." cbesth agdy 9 apictvo Java profssonel 1 Jara rerenta xo 6 ipa a> eso abcd eacutado a qualquer form Codificando um aplicativo empresarial real 1 dave pootes Preencha es lacunas do eéiga: aese) , 1 ’ ‘Colcaremos todas as uss nova aptdes em Jva em uso com algo pitico.Precismos de wma classe com tum método main}, um tipo i © una varive Siig, um lop while eum teste ff Mis alguns rerogus © oe estar conuindo ese back-end empresrial sem demon. Mas anes examina o ego dest pin € pensar poe um instante em como voc coificara ese grande cio, "9 paafs de cere public static void main (Strinot) args! ( 5 lbeertun > 0) 10 cap of beer on the wall" nd a pea ae 009 Aig. eset pad ect, ‘ae ie nn 0% prt Wn ‘comet ete + a er 46 umn Mergulno Rapido ‘Segunda de manhé na casa de Bob CO desperador de Bob toca 8:30 da mand de segura, com em todos os otros dis da seman Mas Bob texe um fim de semana canssiv eprocur hot SNOOZE. E 6 a que aa come eo sparelhos habltaos com Java despentm, a v Primeiro, odesperadr envi uma mensagem pra a cfetee:* “Ei, o espetinko esti Suuhaenmn ancvaee oma =— ‘ ‘Acafeoir envis una measagem para a toraeira i “Motorola: “Segue trad, Bob est tando 0 ara vanbén Em equ, odespertador envia uma mensagem para o| cll Nokia Navigator de Bob: Chane Bob is 9 horse diga par ele qu estamos Fcano um oven atasados” Para con, despetadorenvia uma mensagem para colera sem fo de Sam (Sam & 0 cahoro), com un sinal bastante familar que significa: "Pegueo joa, mas io cspete set leva pra um psi.” Alguns minutos depois, o despertador toca novament. E mais wave: Bob apertao bolo 'SNOGLZE, eo apareioscomegam as comunicar. O desprtador toca uma tereira vez, Mas, ‘ssi que Bob alcagao botio SNOOZE, o despa envi o sina “sate lt para cola de San. Taro & consefnca por ese chaque, Bub se vant, eto poe suas apes em ava e ‘um poqueno psseio& Radio Shack™ tere melhor a rotia dra desu vids Sua toads et pron sacteton art en cal ext que i Seu call est quent =n Seu jomal esti esprando Apenas mais una maravilhosa mani wa Casa Habiitada com Java, ‘oc também pode er um lar habilitado com Java, Adote una slug sensata que use Jaa, a theme a tecnologia Fin. Cuidado com initaes ao war outs platafomas plug and play” (que ma ‘verde sigrifica“eoect e pers os prximos ts dis tentado fazer funciona”) “pres” im de Bob, Betty testo una dss otras ptformas cos resultados foram, digunes, no muito acne, ‘seguro. Também no deu cero com sea cachot, ssa histia pera ser verde? Sime no, Emborahaja verses de Java sendo executes em spiivos, dente os quis os PDAS. telefonescelulares(pricipalmente nos telefones celular), pager, slarmes cartes inelgenes ¢ otros —talvez voc no enconre uma tradi ou cola com Java, Ms mesmo sé voc io conseguir encontar uma versio habla para Java de seus apaelos favorites, ainda oder execut-los come se ester wn dispstvo Java, conrlando-ssravs de alguma our interface (como seu laptop) que este executando Java so conbecid como arquttrasubstiat Tii. Si, voot pode er ess asa. dos snhos de um ned 1 mio se fst som clan a abe ood esié aquim 11 SU vablic static void main (String) argel ( Tate meu noo cio a= Pros ob fara ngenosanent come otal 0 psenal de mang ifs es eg fr 9. plegdo. Adicione o que quiser! wh feste ‘senda na bt, s4ifend ree lana", seaninto critica", *ainénice” © cveunee quantas patevees exieton on cuca Lista Sine oe diene STape paces pre secret ao caer” @ OUTST Ge tata sence) » nest furan ca tae) mano © See GES DESIST S coed aceale QQ aorn construe una tease ferurn quando eativer distecnde mae string vonliativo(eenda] + * > + wordhiettiren{san] @ 1 exite « tease Syeten.out-pelnsln|*Precinanee de * + phrase Cédigo da parafrase Como funciona En sume organs cra tis de pscem eid, seins serine a plead coda uma dass Hit exe oss, Nao se pcre sec exter meng eth conecendo em cada iba, Or, tos o liv itezo a frente, portant, relaxe so 6 apenss um pido raligmaalaancadoe desinadaexibir 10.000 metros de independéncia de mga 4. primsn caged i matin de ngs —on cine qu amateur dss pee, Decker a maiz sei mcs uma pon Tosa lara eto ete ssp (como tad sing pres estar) e fora separa por vel. 22. im cada uma das tes lista (matrizes), 0 objetivo € selecionar uma palavra aletGria, portato, temas que saber quai lara existem em cada ist, Se owver I pulavras em una ist, prossaemos de a lea entre Oe 13 (as matizes Java comegam em 2e0, logo pier palara esta na posi 0, a segunda na psig 1 € tin na psig 13.em uma mati de 4 elementos. Ua mati Java no far cjesbes em exibir seu tmanho imediatamente. Voc? 56 precisa perzuntar Na matric de animals de estima, itamos ‘agora x erin valor. 12 cap 8 um Mergulho Rapido ‘3. reciamo des irs tris, Ova vem npc. indepeden, pref hit a mera cel com un cone mins ek (por Coma, omierox cn es). O én radon) tee ine aio Ogu praisamoeaqu 6 um, ene Oe quae 1, portant, temos que molipti-o pea quantidade de elementos (0 ‘amanbo da mari) dasa que exivennos usando, Temos que forgar prague 0 resulado Processo destinado @ ‘ja um intro (cimais no so permitidos) logo, vanes insece uma conversio (voce fundido ‘eros detalhes no Capitulo 4). £0 mesmo que se tivéssemos um mero de poo Ponto méximmo dindmico ‘uteane gue quiséstomos converter em am inte: Independente da maquina int = (int) 24.65 4, sg0ra construremos a frase, selecionando uma palavra em cada uma das ts listas © sna (alm de inser espags entre elas, Usaemoso operador “que eemcwenard Habiltagéo no nicieo distrbulda e inteligente Mindshere habiltado em 24/7 (preerimos a palavra mais tonics ‘wird’ os objets Sting. Para sleionarumelemento Visio de 30.00 pés em que da matiz voc forecerto imero do adice(psigo) do item que quer us: todos ganham seeing 2 = pelo 1/ age 26 string “Hao Portal em rede sels sigma agora 2 6 "PSs € sm clot 5. Para conclir,exibiremos frase na tina de comand e,.. voila! Somos do marketing. Bate-papo na fogueira oy € ‘A Méquina Virtual Java (0 que, ve est rincando? Old Saw o ava. Sou eu quem efeivamentfaz-um programa sr exeewado. comgilador apenas Ihe forece um argv 6. Apenas um arquivo. Vex? ie imprimir ews como papel e pared para acender ogo, forara gil de piss ou sea oq or mas © nui no fan nad a menos gu eu ej para execu io apecio ese tom, E ess € oto problema, ocompladr no tem senso de humor: Légico, se ocd tivesse que pasar o dia intcio ‘enifiando pens volgen siniaceminciosment.. Desculps mas sem amin preseag,o gue exataneate vot nectar? Hi uma rato pra Java te sd poeta para usar um umplador de byecde, se vot no sabe. Se ele fosse ‘uma lnguagem puramente imerpreada, onde - no tempo de cxeeugdo-méguina virtual vesse que coover eigo-fnte liamenie de um editor de texto, programa Juv seria ‘executado a ums veloeidade comicamere lent, O ava ‘demo tempo sufiient para convener as pessoas de gue & rid ¢ perso o bastante para a msoria dos aka, Ni esto alan qu ved, digamos. completamente in Mas convesharos, que vod fa? Sti. Nao fago iia. Um programadar peri apenas escrever bytecode manualmente © 21 0 wari. Voe pode car sem aba em breve, amigo, Desculpe, mas esse é um pono de vita bem dspliceme (para bo dizer arrogant). Ember ej venade gue — teoricamene — voeé poss exectar qualquer bytecode formato apropiadamente mesmo se le no vier de um ‘ompilado ev, na prt iso um abs, Un voo8 esté aquin 13 ‘ compilador © a JVM (or continua insistindo na venice.) Mas vo ands nil respondeu mia prgunta qu far realmente? ‘Mas algunas ainda pss! Poss lngarexceges ClassCastExcepion es veze vejo pessoas teniando insert 0 tipo eral de coisa em uma matiz que foi declared como cuntndo alg diferente e (OK, Cent, Mas quanto seguranca? Veja tudo que eu fago com lag & seyuragae voe® fc, digamos,pocurando Snas de pont-evrgula? Ooooob, masque grande sco 3 seguansa! Muito obvigndo! Nic importa. Acabe tendo que fazer a mesma evsas6 pra me ceria se algém obteve acesso depos de voc ealtrou 0 bytecode ares de exccutil, (Oh, poe coma cm st. Amiga 14 capitulo 1 programaoresrevend bytecode manualmente como se ‘voce execuase seu procesamento de palarss usando PostScript pra Ee apresiaria se no ergs a mim como “aig Lembve-se de que o Java € una lnguagem foemente ‘iia, o que significa que no posso permite gus as vardveisarmazenem datos com otpoerado Esse € um ecu de segurana eraciale posse bloquar a grande mara das voles antes que elas cheguem até ved, Al dss Desculpe, as no teins, E sim, hd lgumas excegies de tipo de dado que podem suri no tempo de execusio, mas algumas dela tm qu ser permits, pra que oto recurso Java importante tenha suport a vincalagio dnimics, No tempo de execuso, um programa ava pade inl novos objetos qu no eam cnecids nem mesmo plo programador origina, portant, tenho que pemitr um certo vel defMewiiidade, Mas meu trabalho é logue qualquer cosa que nunca seri -poderia ser - bem sued no trp ‘decxecugio,Gerlmenteconsgo saber quando algo no vai funcionar por exemplo, se um programadortentasse acientalmente usr um objeto Buton como uma conexto de soquete, ea detectaria iso eevitra que ele eausasse danas no tempo deexecuao Desculpe, mas sou print linha de dees, como dizer. As olagies de tipo de dado que dese antercementepodeian Aanifcar am programa efosse permit que classe manifetassem,Tumbém sou eu que impo as violas de acess, como, por exemplo, um cigo qe tetas chara um metodo privado, ow lkerar um mtedo gue parades de seguranga- no pudesse nunca se alterado. mpeg as pesos de mexer em egos que no tenbam permisso para ver inclusive edges qe tent acesar dos riticos de outa classe, Demoraia horas. talvez dias, para eu conseguir descreveraimpoinci de meu aba claro mas como descr amteiomene, se oinpdise ‘qu talvezchegue a 9% dos problemas paca, oct seas tavandoE parce qe io tees mas tmp, peru, remes qo vaio em un Bat-ppo psi 8 um Mergulho Rapido 228 |) Its com cbt J] im progsama va funciona est todo misurado sobre apo da gel. Vood r conseguir eorgnizar os rechos de cigo para rar wn programa Java \ Exercicio funcional que provuzsse asada listadaabuito? Algumas das chaes exam no io eso muito pequnas para qu a ecuperemos, portant, que a votade ra iionar quanta dels precisa! ie eat System.out print (+2 ot) Soja 0 compliador Cad um dos aguvos Java dessa pina epresenta um arquvo-foate completo, Sua area € pesonificaro compare determina se cada um dle pode ser compilade. Se no ) Exercicio dre ser ompilads, como ve® os origi? B A eee | Geiie static vod main(String 1) TINT eRH ELE ) whe Cea) oe esta aquie 18 quebracabepa palawra cuzada Horizontais universotecnoligico. cee ae Verticals 1.Nao um neo (ou seu barco @um objeto _) 2, Votou de maos vazias 3.As porta esto abertas 4. Dept, de manipuladores de LAN 5. Contdinares de tens! 7.Até que as attudes melhorem 10, onsumidor de cbigoforte 12.Nio possive fxd la 14, Moificadorinesperado 15.€ prociso ter um 16. Como fazer algo 19. Consumidor de bytecode Um progaa Java cro Stotadoasegur Un oo do programa el lato Seu oY desafa¢ compararobloco de céligocancidato(@ exquerd) com asaida que Mensagens oc vera se ee oseiserio. Nem das as nas de sid serdousacs algunas misturadas — dolas podem ser usadas mais de uma vez. Desenhe Inhas conectando os biocos de cbdigo candidatos a sada de linha de comando correspondent. (As respostas esto noi cai) aaa Candidatos: Saidas possiveis: piblie static vold msinistring (1 args) (| FMIRIEVE wus tres tL ws veyed, aia 02 14 26.38 yerou ona ae a bis wuane ) yryes ' wanes ) / resi Sree te edi) (Wea Ko Ft oa S425 26 a7 } yaven 16 captuo 1 Mergulho Rapido Quebra-cabegas na Piscina Sua trea § pega rechos de ogo ma piscine inser ms Tinhas em branco dood. Voot pee io usar o mesmo ‘wet mas de um vere do er gue empregr todos os twechos, Seu objeto écriar uma classe que sea corpilada ¢ executadaprodvindo sald listada, Nao seengae - esse cexereiiog mas del do qu parece solugies dos exerci Solugdes dos Exercicios linis com cbdigo: A ase céatgo serk comptiago « Vina adictonada ao programa, ele public static vold main(steing( args) ( © sédige do ioup ‘vile’ deve thea Gestro de un nitoto, Mo pode flone 8 Solugées dos quebra-cabecas petancoet plat at), © pen lrstenot. print C0" frente cvmterns speiat ("D1 System. out. pea (*eoys") Syaten.out print ("oles") Candidatos: Saldas possiveis: veeen versa RES: tere ¢ e230 2638 s on 10 36.48 aetrcsye ae fees vy 7; eee oa 14 25 3607 > 2 classes e objetos Uma Viagem até Objetopolis ‘Vamos para Objet6pats? Estamos deixardo essa cidade tempocirada de procedimentos antigos para sempre. Manda! um cartao-posal Ouvi dizer que haveria objetos. No Capitulo 1, colocamos todo © cédigo no método main). Essa néo é exatamente uma abordagem orientada a objetos. Na verdade ela defintivamente nao ¢ orientada a bjetos, Bem, usamos alguns objetos, como as matrizes de strings no cédigo da paréfrase, mas no desenvolvemos nenhum tipo de objeto Por nossa prépria conta, Portanto, agora temos que deixar esse Universo procedimental para tds, sair de main( ) ¢ comegar a criar ‘alguns objetos por nossa prépria conta. Examinaremos o que torna o desenvolvimento orientado a objetos (00, object-oriented) em Java to divertido, Discutiremos a diferenga entre uma classe e um objeto. Examinaremos como os objetos podem methorar sua vida (pelo menos a parte dela dedicada & programagéio. Ndo podemos fazer muito com relagéo a moda). Uma vez chegando em Objetépolis, voc ode nao voltar mais. Envie-nos um cartao-postal este é um novo capitulo 19 era uma vez em Objetine Guerra nas Cadeiras (04 como os objetos podem mucar sua vida) Era uma vez em uma oj de softwares, dos programsdores que reccberamas mesmusespecificagdes ea oem “eonsruam”, O Geren ‘e Projos Muito Chao orgu os dis codiicadores compete, wometendo que quem aahasse pinsiro ganharia uma daguees ‘ders cadets Aeron que todo mundo no Vale de Sata Clara tem, “Tanto Lary 0 posramador de procedimeatos, quanto Bra, 0 adept da (00, sian qe iso seria ii. Senta em sua ban, Lary pensou: "0 que ese programa precisa fazer? ‘de queprocedimentsprcisarns” respondeu “pare emit som” Pestana cle comesou a consi os pocedimentos, Afra, que ¢ un rogram além de uma pila de procedimentos? Enquano ss, Brad voltow ao restaurant epensou “Que fens «siriam nese programa. . Quem si os principals eniidas” Primei cle pensou nas Formas Geomsétrias claro que ele ‘onside outros objtos como o Usui, o Som eo ever de Chica Mas tnha uma biblictca de csios para esses ites, prtanio, se ediou&consrugo das Forms. Continue er para aber como Brad e ejecaataniadsmrcuctoaan on igiecnpeane Scomcoea inn me Na baia de Larry No laptop de Brad dentro do restaurante eae ee ee ae eT | eee oe «creer seus Procedimentos Importants, Ele riourtatee playSound ern demora, Larry achou que tinha conseguido. Podia quase sentir a8 rodas de ago da Aeron rolando embaixo de seu. Mas sper! Houve uma alteraco na especifieages. “Cenc, resricamente vos venoeu, Lan”, dss o Geren, “mas ems gu: acinar apens mas um pequen iter ao programa. Nio seri problea para prgramadores avangados como voe8s dis Se eu ganhase wna moeda sempre qu ovis 30", pensou Lay. saben qu alterages as especificagdes sem problems eu sio. “E mesmo asso Brad porceestrarhameno trangia. O qu estar ‘acontecendo?” Larry continua mantendo sis crenga de que fazer du mmaeiraerientad 3 objetos, boca avangado, ea lent, E que, se zum quisessefazd-lo mudar de data qu avers fora, © aus fol adtetonado Ae sspeostteagtas 20 capil De volte & baia de Larry 0 procedimeno de rt ainda funcionara 0 cigousava ‘uma abela de pesquisa pars comparroarguneatoshapeNum coma figura uma forma real. Mas playSound teria que smudar. Eo gue dies é am arquivo i? io prec ser uma grande ii, rae se sentia desconfrtvel em alterar cdg testo, Entre todas 1s pessoas le sabia que, independentemente do gue o getente de ojos sess, at espciicases sempre seam ateadas classes © objets Usando 0 laptop de Brad na praia Brad sia, tomo um gle de sua magueriaecriow wna ovo clase, As veesoque ee mas acrava na OO ero ser preciso mexerem ego que jtvese sido estado e sisrbuido,Flexbildade, extensible." ele pensou, reletindo sobre os heneficios da 00. Larry acabou alguns minutos na frente de Brad. (Ah to ao por ages esis de OO.) Ma sos de Lt esprecen quando o Geren de Projets Muito Chao disse (com esse tom de desapontamentd: “Oh, no, no & asin que aamebs deve git." (0s dos programadores acaba excreven seu cig de roto dss forma: 1) determine o retingulo que cireula.a forma 2)eaeule o centro esse retangulo gre 2 forma ao redor desse ponte, Masa forma de ameba devia gira a0 redo de um pono em una extremidade, como um pnt de rego, “Exo fio” pensou Lary, vsualzando um Wondetread™ chsmuscado, Poréa, mmm. Eu peri pens Mcionae our instrgo els a procedimento de rota em sega, embut e6igo do posto de rota da amcha,Provavelmente iso no atrspalhars nada” Mas uma vo loging em su ment dia E um grande era, Voe®acha honestamente que as especifcages no mudaronovament? era uma vez om Obie De volta a bala de Larry le achou que sri melor acinar s pons de rao com arguments do procedimesto de roago. Grande part do ‘digo fo aftada Teste, compl tado o aba teve que ser feito novament, © qe furcionava dio de funciona, 11 9 deslocanents do ponte de rotacko Entdo, Brad, 0 adepto da OO ganhou a cadeira, certo? Nao to rpdo. Lasryeocontoa una falha na sbordagem de Bra, gu ina crea de que, se ganhasse a cad, tami e daria bem com a Ley da cntailidade, inka gue revertera siuagio, Larry: ood tem cig duplicado! © procediment de rotagio aparece er tos os quatro itens Shape ‘Brad: Tras de um método eno um procedimento esas si elases € a tens Larry: Nio importa, £ um projet estipido. Veet tem que mater quatro mods” de rex diferentes, Em queso podria ee bom? Brad: Oh, acho que voc novi o projet inal Deve queen the mote como a heranea 42.00 fncion, Lary. Usendo o laptop de Brad em sua cespreguigadeira no Festival de Bluegrass de Telluride Sem perder nada, Brad modifico 0 método de roto, mis sina clase Amoeba. Elen tcou no cédig funcional testa ¢compilado das oats partes do programa. Para fomece classe Amoeba um pont de roto cle aiionan tumateibuto que todos os objets Amoeba tram. Ele ‘madiicou, estou e distribu (com wenologia sem fo) 0 rogramarevisto apenas durante o show de Bela Fleck chav que 8 cedbire a npeesstonaria) Suse ial Sp [ise f [Sie Ho formas 9 totes ‘thran e reprodusen som oot pode ler isso como “Square herda de Shape, “Circle herda de Shape” assim por-dare. Rmovi ola) playSoun) as outs formas, portant, agra ht apenas [Sa¥4F6 tumecspiaa mane, Dizse que a classe Shape €a superclass ds ‘utras quatro classes, AS otras quatro so as subelasies de Shae, As sukclassesherdam os metodos da superclass, Em otras plavas se a classe Shape ver wna Juncionalidode, ero, cwomaticanente, as subclasses tro essa mes furconaidate 2 capiuo 2 lasses» objetos E quanto ao método rotate( ) de Amoeba? Brad: Método, Larry: Nao import. Como « amebs poe fazer se clase Shape? 0 deren se ela “herds” su ancionaidade da Brad: Ess altima etapa A clase Amosha sobrepéeos métedos da classe Shape. Porta, noterpo de execu, 2 JVM saber eratamente que métdo ae execuar quando aguém solic qu objeto Amoeba ire Subvlaase rolefinird un de seus navodoe berdadce (quando procieer alterar on sstender © swerciasse 7 Larry: Como vod “rs” um objeto Armoeka pa fazer algo? No € preciso chsmar opocedimento, esclye—meéodo,c, em eg Ihe informa gue tem grr? Brad: Iso €0 que hide mas interesante ma 00. Quando for hora digams, de o tridnguo irr, 0 ‘sigo do programa referencia (chamar) 0 metodo rotate) no objeto Triangle. O resto do programs no saberd ou se importa realmente em como tragulo ofr E quando voc? precisa adicionar algo novo so programa, spenas car una nova classe para 0 novo ip de objeto ara que os noves objets tena seu prépro comportamento econo um jt Shape ove se comport. Sua tata 6 rie rma quetazora3 rsa ear cote No rence seu gra com Peso cia dein. Sa amoum ail Aosta dere ‘tr eres um som oot esti aquie 23 pensendo © suspense esté me matando. Quem ganhou a cad Ay, que traatha no segundo andar (Sem qu ingum soabese,o Gere de Poe ina dad as specicagbes pra és pogramadcres) ‘0 que vocé gosta na 00? “Ajuda a projetar de wm modo mals natural AS ‘ofa tém uma maneira de evolu” Jy. 2 eng desotware “Nio preciso mexerem cédigo qu j teste 6 araaicionar um novo recurs.” ra, rgramador ““Goste do fato de que as dados eos métodos que ‘silizam ficam juntos em uma classe.” sh 2, hed deere “A reutlizao do cdigo em outros apllctivs. ‘Quando cro uma nova clase, posso torn Aexivetosufciente para que sejausada em algo novo posteriormente.” hes 9, gtd proites “Ni poss areditar que Chris disse sso, Ele no ‘escreve uma linha de edigo ha Samos.” Dury aaa pra Ch “alg da caer ‘Amy 34 prrumaira poder do cérebro Hora de ativar alguns neurnios ‘ocd cabo de ew his sobre um prozramador de roedimentos competindo com um programadorcienado ‘jtos.Tivemos uma breve visio ger de alguns concitoschave 14.00, que inclu as clases, métdoseabuos, Passaremos 0 resto do cau examinandoas clases ¢ objets (etomaremes 3 horanga 8 sobrepesiio em eaptlosposterires) Baseado no que vor vu até agora (eno que deve ser de alguna inguagem oientaaaobjtos com a qual abalhou), ‘ag uma pas para pensar ness erga! (Quis si sites fandumentas que vor? le que corsidere ‘qundo projetar uma clase Java? Que pergunts tei que fer pra og mesa? Se pdesse projet uma sta de conerncia para sae quando esiver projet una classe, o gue incira nls? dica metacognitiva Se vot empacou em um exert, tate {alr sobre elem vor at. Fala (¢ out) ativard uma pate diferente dese cerebro Enbor isso funeione melhor quando temas outa pessoa com quem scat, tambénfuncons com ima de extimagio. Foi assim que oso clo aprende plimortisn, Quando vocé projetar uma classe, pense nos objetos que serdo criados com esse tipo de classe. Considere: a coisas que o objeto conhece as coiss que o objeto faz classes « objetos [As coisas que um objeto conhece sobre si mesmo se chamam ated innia ‘As coisas que um objeto pode fazer se chamam todos varkavets do Tneedneta (exteao) connece {conportaneato) Ascot punch conte te ce shana de aries delntnds Elsen 9a do am te oad ¢ podem ter valores excites parca obj dese pe, ON prone seat Cede tc co eet na noi As coisas que un objeto faz so chamadas de métodes. Quando projear _Preeachacom o que um objeto tlvisio ‘ma case, vocé pensar nos dados que um objeto eri que conhecer pode Ter que saber fazer: sobre si meso e também projetardos métados qu operao sobre esses tos. Eeomum um objeto ter mtados que lear cw gravem os valores as varives de instnca, Por exemplo, 0 objetos Despertadortém uma \arivel de instincia que amaze ahora de desperados mods «que copturam e configura essa hora Porto, os objetos én vives de insti e metodo, mas esas ‘varies de insti e métodos so projetats como pate da classe. Qual é a diferenga entre uma ola > @ um objeto? usa classe Uma classe nao é um objeto. (Mas 6 useda para construt-ios.) ‘Uma dase € 0 projeto de um objeto. Ha informa 3 guia vital como craw objeto dese tipo expec, Cad objeto criad a partir dessa clase tert su prpros valores para as waives de instncia da classe. Por exemplo, ve poe usar clase Button para ‘muitos tar virios hoes diferenes,e cas boto poder te ua Objetos pri cox, amano, forma, rtuloe assim per dans, Othe dessa bina. ‘Um objeto seria como um registro de sua agenda de endereos. ‘ima anaogia que poefamos usar para os objets seria um conjure de ichas Rolodex nao utiliza. Todas Fichastem os mesmos campos em Banco (as ‘aries de instncia), Quando voo®preencher uma ica, estar criando una Instn (obj), eas entradas que criar nessa cha representaro sev ea (0s métodos da clase sos coisas que vot pode faze com una ichasspciis; one poline iene bterNome! )alterarNome ,configurarNome todos poderam ser métodos dt ‘elstone 555-0009 See Eraalt potvio Porta, os sfchas fice as mesmas cosas (oberNome( ),alearNomet), «.), masa ura cone eos exclusiva sobre si mess, Giando objetos Criando seu primero objeto Mas o que 6 nooessro pa aca © uso de um chet? Voo pci de as asses ‘Una paaotpo de objeto que deseja usar (Dog. AlarmClock, Televison ete oura para evar sua nova classe. E na classe etadore que voc incr o modo principale nese mado nin) rian eaessard objets de seu novo tipo de case. clase ‘esdora ted apenas uma arf: restar os métodoevardveis de seu n0¥0 tipo de classe de objeto. Desse ponto do ivo em diane, vec# ver dua classes em muitos de nossos exemplas. ae Uinastrdacaseree!-aclasecajscbeosralnentequeemswareacurasenia | Sy, clas estado ns camaro de cualqerQnceoNomeStaClenesTeaDvie Por | 1 erie ‘cei ein te ae ges in eis ce tl Bungee'TestDrive. Sé a classe TestDrive teri um método main ). eee te sn nc finlidade serra objet de eu novo ip a case qe no fora de et) eal eared Pret ope t sepeadr pots|) prvontrse ioiweveiiwe towers | sa bet. Faris nino mit ars os utmplosa g 17S coecador ponte ane Dog ( @ cris sna cates sortators(retarive) Mplie stacie woid mag (string) args) ( © x sun ciasso tostacore, erie ur ebieto « sce sean veridvets © mitodor stagt) args) ( .baekt)s ‘Se vot j tem algun ¢6tig0 00 promo, sae que no estes usando encapsulant ‘Abordaremas esse assur no Capitulo 4 28 capitulo 2 asses» objatos Criando e testando objetos Movie three, genre = “Bragie but ultiaately op objeto 1 Aclase MovieTetDrivecria ‘objetosinstinias) da classe Movie e usa. eperador pont () ation para configura as waives de insiciacom um valor espe, Etatambém referencia (cham) sméiodo em um ds objetos. Preecha'a figura dita com os ayes 9 valores que os ts bjetos sapesetan nfm demain objeto 2 | cone Rapido! Saia de main! ‘Se yet esiver em main). no estar reaimente em Ojetipolis.F aeusdo um programa de teste ser ‘execu dentro do método man, mas, emt um aplicativo OO rel, voc previ de objtos que se -omuniguem com outros objets nie de um mo man) ettcn cia testa oe, ‘As duas finalidades de main: + testar sua classe real ‘Um aplicatvo Java real nada mais é do qu objets se comuicando com otros objeto. Ness x, ‘ccmanicar-sesgifieao objeto chamando os méiedos uns dos outros. Na pin anterior, «no Capt 4 sala logo ve mai xamins ous de um mtn main em uma classe Teriv separa para criare tesa os métoosevarveis de outa classe. No Capitulo 6 ‘evaminremos ous de ura clase com tum meted main) princi um aglicatio ava real (ciando objeto, em seguia, dexando-s lives para interagir om ours objeto, et.) [Notun como wna pia decomp um apicatv Java real pode se ‘cmp agi es um pequeno exemple. que anda estamos nos estos ini do aprendizado de va, ablhareros com um pequeno kit de feramenias ,poranto, vot ach ese programa um pouc complicadoe neice, Tver pense no gue poderia arr para spefeigs-o, em capitulo posterior &exatament so que faremos. Nos preocupe se pare do iz for conf; © ponc-chave dese exemplo & qu os objets se jogo de adivinhagaio Resumo: | PoE Fee pessinesiael J sont I< (jogo de svi crcve um abt ‘game's tox‘ jogo gera um nme aletéio etree 9 os us objets player tent ivihi, (No disemes qe seria um jogo deri) Classes: GuessGane.class Player.class Ganetauncher.clt A l6gica: 1) mcs GameLauncher quo aplication elem 0 née mai 2) Nomviod mic) um eo GosGane iad seu mtd stant chamado 3) £0 méte starGamet ) do objeto GuessGume que o jogo iti se desta Ele crates jgaores , em seguids, “penser vm nimerd aleatio(aquee que os gators tem que avin. Depo soicita& ca jopador qe avinhe,veifiao resultado exe informa sobre (os) jogadrts)vencedr(s} ou pede que aver novamente 2. Eat (uatherondea|) * 017 €— 28 capitulo 2 asses objetos O puistiane pienight = crus; im do 1009 11) tm da el ‘Sala (or anrente cage vez que vot execu) Executando o jogo de adivinhagao no existem pe Nao existem Perguntas Idiotas Pic wu precear do ariel © mstoos las? Camo coop! t,t to proia ‘cr ou dase? RR: nao um conoto de vate © miadoe ‘glbals' em um programa Java orientado a objeos. Na pratica,entetani, haveré stuepdes em que voot pode {querer que um meétodo (ou uma constante) esta

Você também pode gostar