Vous êtes sur la page 1sur 44

Aula1:IntroduoLinguagemdeProgramaoJava IntroduosLinguagensDeProgramao LinguagemdeProgramao: Conjuntoderegrassintticasesemnticas,utilizadosparaseestabelecercomunicaoentreo programadoreocomputador. Sousadasparaseescreverprogramasousoftwares. MtodosdeimplementaodeLinguagensdeProgramao: aformacomoumalinguagemdeprogramaosecomunica(entendidaeexecutada)como computador. Ocomputadorpossuiumalinguagemdemquinadenvelbaixoqueofereceoperaesprimitivas. Osoftwaredesistemadevecriarumainterfacecomosprogramasdenvelmaisalto. Osistemaoperacionaleasimplementaesdelinguagenssodispostosemcamadassobreainterfacede linguagemdemquinadeumcomputador.

IntroduoaoJava Linguagemdeprogramaoorientadaaobjetosdesenvolvidaporumtimedeprogramadores,lideradospor PatrickNaughton,MikeSheridaneJamesGosling,naempresaSunMicrosystems. LinguagemdeAltodesempenho,suportamultithreading,compilaojustintimeeutilizaodecdigo nativo. umalinguagemquecompiladaparaumbytecode,queinterpretadaporumamquinavirtualJVM. PrincipaisCaractersticas Portabilidade OJavapodeserexecutadoemqualquerplataformaouequipamentoquepossuauminterpretadorJavae quetenhasidoespecialmentecompiladoparaosistemaaserutilizado. OrientadaaObjetos ContmasintaxesimilaralinguagemC/C++,masbaseadanomodeloSimula67. Segurana Podeserexecutadoviarede,comrestriesdeexecuo,almdeprotegerosistemadoclientecontra possveisataquesnointencionais. PorqueestudarJava? OrientaoaObjetos:totalmente00permitindoheranaereutilizaodecdigodeformadinmicae esttica. Dinamismo:permiteseraumentadoduranteaexecuo.

Facilidade:DerivadadoC/C++Bemfamilir.Oambienteretiradoprogramadoraresponsabilidadede gerenciaramemriaeosponteiros. UtilizaesEAplicaesDoJava: Desenvolvimentodeaplicativoscorporativosdegrandeporte Desenvolvimentodeaplicativosweb Fornecimentodeaplicativosparadispositivosvoltadosparaconsumopopular(Celulares,Pagers, PDAs,etc...) Muitosoutrospropsitos

FuncionamentoDeUmProgramaJava Editor aescritaoudesenvolvimentodoprogramacdigofonte.Sefaznecessrioumeditordetextosimples comooblocodenotasdowindowsouvidolinux. Existemambientesdedesenvolvimentosintegrados(IDE)quefornecemmuitasferramentasdesuporteao processodedesenvolvimentodesoftwareemJAVAeoutraslinguagens. NetBeans Eclipse JCreator BlueJ Compilador Ocompiladorjavaconverteocdigofonteembytecodes,querepresentamastarefasaseremrealizadas duranteafasedeexecuo.OsbytecodessoexecutadospelaJavaVirtualMachine(JVM)umapartedo JDKeabasedaplataformaJava.Amquinavirtualjava(VMVirtualMachine)umaplicativodesoftware quesimulaumcomputador,masocultaosistemaoperacionaleohardwaresubjacentesdosprogramas queinteragemcomaVM. Carregador Todoprogramadevesercolocadonamemriaantesdepoderexecutar.Ocarregadordeclassetransfere osarquivos.classcontendoosbytecodesdoprogramaparaamemriaprincipal.OCarregadordeclasse tambmcarregaqualquerarquivo.classfornecidopelojavaqueseuprogramautiliza.Osarquivos.class podemsercarregadosapartirdeumdiscoemseusistemaouemumarede. Verificador Enquantoasclassessocarregadas,overificadordebytecodeexaminaoscdigosparaassegurarque elessovlidosenoviolamrestriesdeseguranadojava.Ojavaimpoumaforteseguranapara certificarsedequeosprogramasjavasquechegampelaredenodenifiquemosarquivosdesistema. Interpretador AJVMexecutaoprogramainterpretandoobytecodegeradonafasedecompilaocomissoasequncia

deaesespecificadaspeloprogramadorso,enfim,executadas.AtualmenteasJVMsutilizamuma combinaodeinterpretaoecompilaojustintime(JIT).Nesseprocesso,aJVManalisaosbytecodes medidaqueelessointerpretados.Procurandohotspots(pontosativos)partedosbytecodes,queso executadascomfrequncia.Paraessaspartes,umcompiladorJIT,conhecidocomocompiladorJAVA HotSpots,traduzosbytecodesparaalinguagemdemquinadocomputadorsubjacente.

AmbienteDeProgramaoEmJava OambientededesenvolvimentodesoftwareJava,JavaSDK(antigamente,JDK),formado, essencialmente,porumconjuntodeaplicativosquepermite,entreoutrastarefas,realizaracompilaoea execuodeprogramasescritosnalinguagemJava.Esteambientepodeserbaixadogratuitamenteapartir dositedaSunMicrosystemshttp://java.sun.com. AsferramentasbsicasdokitdedesenvolvimentoJavaso: OcompiladordoJava,javac OinterpretadordeaplicaesJava(VM),java OinterpretadordeappletsJava,appletsviews

EntendendoassiglasdoAmbienteJava J2SEJava2StandardEditionForneceasprincipaisAPIseenfocaodesenvolvimentodeaplicaesna arquiteturaClienteServidor.Nopermitedistribuiodeobjetosnemoferecesuporteatecnologiaspara Internet. J2EEJava2EnterpriseEditionForneceumconjuntodeAPIsparaodesenvolvimentocorporativoe enfocanaintegraoentresistemas.Disponibilizaaltadistribuiodeobjetoseoferecetotalsuportea tecnologiasparaInternet. J2MEJava2MicroEditionForneceasAPIsparaodesenvolvimentodeaplicaesparacomputao mvel,empequenosdispositivosoutecnologiasembarcadas. TiposDeProgramasJava StandaloneAplicaesbaseadasnaJ2SEquetemtotalacessoaosrecursosdosistema,memria, disco,rede,dispositivos,etc. JavaAppletsPequenasaplicaesquenotmacessoaosrecursosdehardware,necessitandodeum navegadorcomsuporteaJ2SEparaseremexecutados. JavaServletsProgramasdesenvolvidosparaseremexecutadosemservidoresWeb,baseadosnaJ2EE, comumenteusadosparagerarcontedosdinmicosparawebsites. JavamidletsPequenasaplicaes,extremamenteseguraseconstrudasparaseremexecutadasdentro doJ2ME. JavaBensSocomponentesdesoftwareescritosemJavaquepodemsermanipuladosvisualmentecom aajudadeumaferramentadedesenvolvimento. ConstruindoUmAmbienteParaProgramaoEmJava ParadesenvolverprogramasemJava,precisamosobteroKitdeDesenvolvimentoJava,quegratuitoe

disponvelparadownloadnoseguinteendereo:http://java.sun.com/javase/downloads/index.jsp Nestelink,aSundisponibilizaumasriedekitsparacadaperfil.SugerimosoJDKJRE. necessrio,ainda,queousurioescolhaaplataforma(ocomputadoresistemaoperacional)ondeokit serinstalado. Parainstalar,cliquenoarquivobaixadoesigaasinstruesdositeparaefetuaracorretainstalao. Nolinkabaixo,existeumartigoqueauxiliaousurionainstalaodoJ2SEnoWindows2000/XP http://www.guj.com.br/article.show.logic?id=163

EscrevendoEExecutandoOPrimeiroPrograma 1. 2. Abraoblocodenotasedigiteocdigo EmJava,umaclassepblicadevesersalvaemumarquivocomomesmonome,comaextenso .java.ComonossaclassesechamaPrimeiroPrograma,devemossalvarestearquivocomo PrimeiroPrograma.java.Muitaatenocomacaixadaletra,poisoJavafazdiferenaentreletras maisculaseminsculas. AbraopromptdoDOS.Paracompilarocdigo,iremosusarumaferramentaSDK,ocompilador javac.Issofazcomqueobytecodesejagerado.Esteprocessofazcomqueoarquivo PrimeiroPrograma.classsejagerado. Observenafiguraabaixoqueestamosnapastaondesalvamosonossoarquivo PrimeiroPrograma.java.Ocomandojavacfoiexecutado,nenhumerrofoiencontradoefoigeradoo arquivoPrimeiroPrograma.class. Paraexecutarestecdigo,temosquechamaramquinavirtual.Paraisso,basta:java PrimeiroPrograma Observequenohnecessidadedecolocaraextensonestepasso.

3.

4.

5. 6.

Aula2:TiposdeDadoseEstruturasBsicasdeProgramao AsconvenesdoJava AlinguagemdeprogramaoJavaCaseSensitive.Existemvriasconvenesutilizadas.Soelas: Nomesdevariveisemtodoscomeamcomletrasminsculas Nomesdeclassesiniciamcomletrasmaisculas Nomescomposto:utilizarletrasmaisculasparainiciaisdepalavras Letrasminsculasparaconstantes

ComentriosemJava Existemtrsformasdeseinserircomentrios: 1. 2. 3. //Comentrioemlinha /*Comentrioemumaoumaislinhas*/ /**Documentocomentrios*/

Quandoocomentriotipo3colocadoimediatamenteacimadadeclarao(defunoouvarivel),indica queocomentriopoderserincludoautomaticamenteemumapginaHTML(geradopelocomando javadocgeradordedocumentaodojava) TiposdeDadosemJava OJavaumalinguagemdeprogramaofortementetipada,oumelhor,necessitaquetodasasvariveis tenhamumtipodeclarado.Existem8tiposprimitivos.Seisdelessonumricos,umocaractereeo ltimoobooleano.

DeclarandoEAtribuindoValoresAVariveis AdeclaraodevariveisemJavaexigequeotipodavarivelsejadeclarado.Vociniciaadeclarao, indicandootipodavariveleonomedesejado,comonosexemplosaseguir:

intx,y//declarandoduasvariveisinteiras x=6//atribuindovaloresavariveis y=1000 floatf=3,141516f//pontoflutuante doublew=3,2310834//pontoflutuantededuplapreciso charch=a//Caractere finalintMAX=9DefineaconstanteMAXcomovalorde9 OperadoresAritmticoseRelacionais Aritmticos

Relacionais

EstruturasBsicasDeProgramao Blocos Conjuntodelinhasdecdigossituadasentreumabreeumfechachaves({}).permitidocriarblocos dentrodeblocos. {//inciodebloco ... /*blocodecomandos*/ ... }//fimdebloco

EscopodeVariveis Escopodeumavarivelindicaemquepartedocdigooublocodecomandosdoprogramaquepodemos utilizarouenxergaravarivel.Existemvariveislocaisevariveisglobais.Oescopodefinetambmquando avarivelsercriadaedestrudadamemria.Aslocaisestovisveisapenasdentrodoblocoenquantoas globaisestodisponveisemqualquerblocodoprograma. ComandoCondicional Desviaofluxonaturaldoprogramadeacordocomoresultadodeumtestelgico. if(expressobooleana) comando1ou{blocodecomando1} else comando2ou{blocodecomando2} Quandooprogramaencontraumcomandoif,aexpressobooleanaavaliada.Casoaexpressoseja verdadeira,ocomando1executadoeocomando2no.Casoaexpressosejafalsa,ocomando2 executadoenoocomando1.Valelembrarqueoelseopcional. Quandoexisteumconjuntodeopes,podemosutilizaraestruturaswitchcase swicth(variavel){ case(valor1):comando1break case(valor2):comando1break case(valor3):comando1break case(valor4):comando1break ... default:comando_genricobreak Naestrutura,oprogramaavaliaavarivel.Casoovalorsejavalor1,ocomando1executadoCasoovalor sejavalor2,ocomando2executadoCasoovalorsejavalor3,ocomando3executadoCasoovalorseja valor4,ocomando4executadoeassimsucessivamente...casonosejaencontradoovalor,o comando_genricoexecutado.

DesviosdeFluxo Existemdoistiposdedesviosdefluxos BreakeContinue. breakOcomandoterminaaexecuodeumloopsemexecutarorestodoscomandoseforaasadado lao. continueOcomandoterminaaexecuodeumlaoseexecutarorestodoscomandos,voltandoparao inciodolao,paraumanovaiterao. Estruturaderepetiooulao

while(expresso) comandoou{laodecomandos} Enquantoaexpressoforverdadeira,ocomandoserexecutado.Quandoaexpressforfalsa,oprograma segueparaoseucaminhonormal. do comandoou{blocodecomando} while(expresso) Fazocomando,enquantoaexpressoforverdadeira.Quandoaexpressoforfalsa,oprogramaseguepara seucaminhonormal.Agrandediferenaentreowhileeodowhile,quenolaodowhile,oprograma executapelomenosumavezocomando. for(inicializaoexpressoincremento) comandoou{blocodecomando} Ocomandoforexecutaolaoenquantoaexpressoforverdadeira,squepodesercontroladaporum contador.Estaexpressopermitequeousurioinicializeeincrementeocontadornocontroledolao ManipulandoComStrings Javaumalinguagemtotalmenteorientadaaobjetos.Ento,todososvaloresutilizadossoobjetos descritosporclasses.Ostiposprimitivosdedadospermitemquepossamoscriartodosostiposdeobjetos necessriosparaseimplementarqualquersistema.UmdosobjetosmaisutilizadosoString(comS maisculoporque,comovimosnasconvenes,Stringumaclasse). Stringumasequnciadecaracteres. Ex.: Stringum=Curso Stringdois=Java Ateno ObjetosdaclasseStringnodevemsercomparadosusandoosoperadoresrelacionais,porqueso objetos.Existemmtodosespeciaisparaexecutartaisfunes.OobjetoStringemJavapossuimaisde 50mtodosdiferentes.

ManipulandoComVetores Vetoressoestruturasutilizadasparaarmazenarumconjuntodedadosdomesmotipo.Essespodemser dequalquertipo,desdevariveisprimitivasatobjetoscomplexos.Asuaalocaonamemriasempre contnua. int[]vetor=newint[100]//Alocareadememriacontnuacom100posiesparaarmazenar100inteiros. int[]pares={2,4,6,8,10} Vetorespodemtervriasdimenses.Matrizesouvetoresbidimensionais.Sovetoresbidimensionais

muitousadosnamatemtica int[][]matriz=newint[2][3] ConversoEntreTiposDeDados Quandotrabalhamoscomexpresses,oresultadodeumaexpressopodeserdeumtipodiferentedos seusoperandos.Ouainda,temosdoistiposdedadosdiferentesequeremosefetuarumaoperao.No possvelefetuarcomparaesouoperaescomtiposdiferentes.Pararesolveresteproblema,podemos converterostiposdedados. Existem,basicamente,doistiposdeconversesdedados.Aconversoimplcitaeaexplcitadedados. Implcita Oprimeirocasoocorresemanecessidadedoprogramadorinterferir.Osvaloressoconvertidos automaticamente.Issoocorrenaconversodeinteiroparareal,denmerosparastringsoucomousode operadoresunrios. Ex.: doublex inti=20 x=i//xrecebeumvalorinteiro System.out.print(i=+x)/*Ovalordexconvertidoparastringeconcatenadocomaoutrastringpara serapresentadanatela*/ Explcita Osegundocaso,oprogramadorcontrolaaconversoinformandoqualtiposerutilizado,atravsdeum operadorunrio. Ex.: floateventos=25.7 floatdias=7.2 x=(int)(eventos/dias)//Oresultadoointeiro3,pois25/33.57

Aula3:Introduoasinterfacesgrficas IntroduoAsIdes IDE,doinglsIntegratedDevelopmentEnviromentouAmbienteIntegradodeDesenvolvimento,um softwarequeenglobacaractersticaseferramentasparaodesenvolvimentodeprogramas. AsIDEsfacilitamatcnicadeRADquetemcomoprincipalobjetivoamaiorprodutividadedeseus desenvolvedores. ExistemvriasIDEsdisponveis.Abaixo,alistadealgumasIDEs RADRapidApplicationDevelopmentDesenvolvimentoRpidodeAplicativos.

ConhecendooNetBeans ONetBeansumaIDEgratuitaedecdigoaberto,totalmenteescritoemJavaparadesenvolvedoresde softwarenalinguagemJava,C/C++,PHP,Groovy,Rubyemuitomais.PorserescritoemJava, multiplataforma,oumelhor,funcionaemvriosambientescomoWindows,Linux,SolariseMacOS.O NetBeansIDEofereceaosdesenvolvedoresferramentasnecessriasparacriaraplicativosprofissionaisde desktop,empresariais,Webemveis. Comprojetoiniciadoem1996pordoisestudantestchecos,tevecomoprimeironomeXelfi,emalusoao Delphi,pormfoitotalmentedesenvolvidoemJava. Em1999,oprojetojhaviaevoludoparaumaIDEproprietrio,comonomedeNetBeansDeveloperX2, nomeestequeveiodaidiadereutilizaodecomponentes,queeraabasedoJava. Nessapoca,aempresaSunMicrosystemshaviadesistidodesuaIDEJavaWorkshope,procurandopor novasiniciativas,adquiriuoprojetoNetBeansDeveloperX2,incorporandooasualinhadesoftwares. Poralgunsmeses,aSunmudouonomedoprojetoparaForteforJavaeomanteveporumbomtempo comosoftwareproprietrio,porm,emjunhode2000,aSundisponibilizouocdigofontedoIDENetBeans tornandooumaplataformaOpenSource.Desdeento,acomunidadededesenvolvedoresqueutilizame contribuemcomoprojetonoparoudecrescer,tornandoseumadasIDEsmaispopularesatualmente. ONetBeansconsideradoamelhorIDEparadesenvolvedoresiniciantes,pois,facilitaoprocessode programao,compilaoeexecuodosprogramas.Estesistemacriaumambientecompletodeteste. Onicoproblemaqueparamontartodoesteambiente,estaIDEexigeumaconfiguraodehardwareum

poucomelhor,principalmenteaquantidadedememria. Existemvriasopesdedownload.Apartirdestaaula,iremosutilizaroNetBeans6.9.1 UtilizandooNetBeans ParautilizaroNetBeans,necessriocriarumprojeto,e,paraisto,sigaospassosaseguir: 1Passo:NomenuArquivo,cliqueemNovoprojeto. 2Passo:DigiteemNomedoProjetoumnomeparaseuProjeto(Ex.ProjAula3)eaperteemFinalizar. 3Passo:abertaentoateladoNetBeansondesercriadooarquivo.java(arquivosfontes). 4Passo:Noteque,najanelapertencenteabaMain.java,estomtodo: publicstaticmain(String[]args){ //TODOcodeapplicationlogichere } Esteomtodoinicial,entoescrevemosalgunscomandosdemaneiraarealizaraprimeiraexecuode umprogramaemJava. 5Passo:Agoradigiteocdigoabaixonomtodomain. publicstaticmain(String[]args){ //TODOcodeapplicationlogichere intnum1=2 intnum2=8 intsoma soma=num1+num2 System.out.println(Asoma%d\n,soma) } 6Passo:Comocdigofontedigitado,vamosexecutaroprojetoprincipal.Paraisso,podemosutilizara tecladeatalhoF6,ouapertarnobotoexecutar. 7Passo:Notenajanelasada,naparteinferiordatela,aexecuodoprojetoeaapresentaodo resultadodemodosemelhanteaoqueocorriaquandoexecutvamosnoterminaldaconsole. AgoravocestaptoaexecutarumprogramanestaIDE,bastaexplorarmaisaferramentaparatiraro mximodeproveitodeseusrecursosefacilidades. IntroduoAConcepoDeInterfacesGrficas Muitosdosprogramasconhecidosinteragemcomosusuriosatravsdatrocadeinformaes.Omeio peloqualapartehumanasolicitaaoprogramaaexecuodetarefas,algumaresposta,ouqualquer comunicaoentreaspartesfeitopelaInterface.Muitasvezesconfundidacomoprogramaemsi. Ainterfacegrficacomousurio(GUI)forneceaumprogramaumconjuntoconsistentedecomponentes intuitivos,familiarizandoousuriocomasdiversasfunesediminuindootempodeaprendizadodanova ferramenta.AsGUIssoconstrudasapartirdecomponentesGUI,quesoobjetoscomoqualousurio

interageatravsdosdispositivosdeentrada,ouseja,omouse,oteclado,avoz,etc. Imaginequeconstruirinterfacesconsisteemcolaradesivosemumateladevidrooucolocarcomponentes emumcontinerdecomponentes.Antesdetudo,necessriopossuirumatela,queserrepresentada peloscontineres.Tambmdispordeadesivosdediversostamanhosquepodemserdistribudose anexadoslivrementepelasuperfciedovidro.Taisadesivoselementaresseroospainis.Almdisso, dispordeadesivosmaiselaboradosquejestoprdefinidoscomfigurasdebotes,rtulos,etc.Estes podemsercoladosdiretamentenovidro,ousobreosoutrosadesivosrudimentares(painis),talquala nossavontade,emboraselimitandocapacidadedoespaofsicodisponvel.Naimagemvocpodever algunsdoscomponentesqueestudaremosmaisafrente. CriaodeInterfacesGrficas EmJava,asclassesnecessriasparacriaodecomponentesgrficos,bemcomoparafornecerlhes funcionalidade,estoagrupadasemdoisgrandespacotes:java.awtejavax.swing.Osdoispacotes definemcomponentescompeculiaridadesdistintasequeserodiscutidasaseguir. ComponentesSwing Opacotejavax.swingfoicriadoem1997eincluioscomponentesGUIquesetornarampadroemJavaa partirdaverso1.2daplataformaJava2.AmaioriadoscomponentesSwingescrita,manipuladae exibidacompletamenteemJava,estessoconhecidoscomocomponentesJavapuros.Issoofereceaeles ummaiornveldeportabilidadeeflexibilidade.OsnomesdetaiscomponentesrecebemumJ,como,por exemplo:JLabel,JButton,JFrame,JPanel,etc.Talpeculiaridadesejustificaparadiferenciaresses componentesdosqueseromencionadoslogoadiante.OscomponentesSwingfornecemfuncionalidadee aparnciauniformeemtodasasplataforma,sendodenominadadeaparnciademetal. OSwingtambmforneceflexibilidadeparapersonalizaraaparnciaeocomportamentodoscomponentes deacordocomomodoparticulardecadaplataforma,oumesmoalterlosenquantooprogramaestsendo executado.AsopessoapersonalizaocomoestilodoMicrosoftWindows,doAppleMacintoshoudo Motif(UNIX). metallookandfeel ComponentesBsicos OesquemaaseguirmostraamaioriadasclassesquecompemoJavaSwingemostratambmarelao entreasclassesAWT(claro)easclassesSwing(escuro):

Painis soreasquecomportamoutroscomponentes,inclusiveoutrospainis.Emoutraspalavras,so elementosquefazemaintermediaoentreumcontainereosdemaisGUIanexados.Socriadoscoma classeJPanel,quederivadadaclasseContainer.AclasseJPanelnotempaineldecontedocomo JFrames,assim,oselementosdevemserdiretamenteadicioandosaoobjetopainel.Almdeagregarum conjuntodecomponentesGUIparafinsdelayout,podesecriarreasdedicadasdedesenhoereasque recebemeventosdomouse. CriandoOPrimeiroFormulrio ComponentesSwing importjavax.swing.* publicclassFrm01 { publicvoidcriaTela() { JFramef=newJFrame() f.setSize(290,100) f.setTitle("Cadastro") f.setLocation(10,10) f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) f.setVisible(true) } } ComponentesBsicos publicclassTestaFrm01{ publicstaticvoidmain(String[]args){ Frm01tela=newFrm01() tela.criaTela() } } OmtodosetDefaultCloseOperation()tambmpodeserexecutadocomoutrasconstantescomoargumento: DISPOSE_ON_CLOSEDestriaajanela HIDE_ON_CLOSEApenasfechaajanela DO_NOTHING_ON_CLOSEDesabilitaopo EXIT_ON_CLOSEEncerraaaplicao

InserindoComponentesnaTela importjavax.swing.* publicclassFrm02{ publicvoidcriaTela() { //criandooFrame JFramef=newJFrame() f.setSize(300,100) f.setTitle("CadastrodeCategorias") f.setLocation(150,200) f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) //criandooPainel JPanelpl=newJPanel() pl.setLayout(null)//gerenciadordeLayout //Criandooscomponentes: LabelJLabelmeuLabel=newJLabel("Cdigo") meuLabel.setBounds(10,10,60,20) //CampodeTexto JTextFieldmeuCampoTexto=newJTextField("") meuCampoTexto.setBounds(80,10,60,20) //Boto JButtonmeuBotao=newJButton("NomeBoto") meuBotao.setBounds(150,10,100,20) //colandooscomponentesnoPainel pl.add(meuLabel) pl.add(meuCampoTexto) pl.add(meuBotao) //colandoopainelnoframe f.add(pl) f.setVisible(true) } }

Aula4:PrincpiosdaOrientaoaObjetos IntroduoClasseseObjetos Todosistemaorientadoaobjetospodeserdefinidocomoumconjuntodeobjetosquetrocammensagens entresi.Ento,quandoprogramamosemJava,queumalinguagemdeprogramaoorientadaaobjetos, estamosescrevendooudefinindoumconjuntodeobjetosquetrocammensagens. Bom,masoqueumObjeto?Oqueumaclasse?Oquemensagens? Asclassesdefinemaestruturaeocomportamentodeumtipodeobjeto.Observeafiguraabaixo: ObjetorvoreClasservore(Qualquerumaespcie) Aclasservoredefineumarcabouodequalquertipodervore.Umarvorereal,serumobjetocom estruturaaestruturadefinidapelaclasse,masosvaloresdecadarvoreseronicas. ClassesUmprottipoquedefineosatributoseosmtodoscomunsatodososobjetosdeum determinadotipoedaprpriaclasse,comafinalidadedeservirdemoldeparaacriaodeobjetos. ObjetosSoarepresentaodeumaentidadedomundoreal,quetemidentificadornico,propriedades embutidaseahabilidadedeinteragircomoutrosobjetoseconsigomesmo.Umobjetoumainstnciade umaclasse.Aclassedescrevetodasascaractersticasefuncionalidadesdeumobjeto.Modelamosos objetosatravsdasclasses. Abstrao 1. 2. 3. Extrairtudoqueforessencialemaisnadaparaoescopodoprojeto oprecessodefiltragemdedetalhessemimportnciadoobjetoreal,paraqueapenasas caractersticasapropriadasqueodescrevamequetenhamrelevnciaparaosistemapermaneam Conceitoaplicadonacriaodesoftwarebaseadoemobjetos,partindodoprincpioquedevemos consideraraessnciadecadaobjetoenopensaremtodososdetalhesdeimplementao

ClasseseObjetosemJava UmprogramaJavaumacoleodeobjetosquesodescritosporumconjuntodearquivostexto,onde sodefinidasasclasses.Pelomenosumadestasclassespublicecontmomtodomain(),que possuiestaformaespecfica: publicstaticvoidmain(String[]args){ //aquioprogramadorinsereoscomandos } Comovimosnasaulasanteriorestodososprogramasfeitostinhamestaestrutura.Eonomedaclasseera onomedoarquivo.Ento,podemosconcluirqueumaclasseemJavaconstrudadentrodeumarquivo textocomomesmonomedaclasseeextenso.java. javacOi.java javaOi Noscomandosacima,ocompiladorJavacompilaoarquivotextoOi.java,gerandoobytecode.Amquina virtualinterpretaaclasseOi,quandoocomandojavaOiexecutado. Lembroqueaclassequecontmomtodomain()chamadadeclasseprincipal. Encapsulamento Mecanismoutilizadoemorientaoaobjetoparaobtersegurana,modularidadeeautonomiadosobjetos Implementamosatravsdedefiniodevisibilidadeprivadadosatributos Ento,devemossempredefinirosatributosdeumaclassecomoprivados Estemecanismoprotegeoacessodiretoaosdadosdoobjeto Permiteacessoatravsdosmtodospblicos adisponibilizaodeumainterfacepblica,comgranularidadecontrolada,paramanipularosestadose executarasoperaesdeumobjeto(*acessopermitido).

Emoutraspalavras,osatributosemtodosdeumobjetopodemserescondidosdeoutrosobjetosporuma interfacepblicademtodos,demodoaimpediracessoindevidos. Paradefinirdiferentesnveisdeencapsulamento,fazseusodoconjuntodemodificadoresdeacesso disponveisnoJavaparaosmembrosdeclasse,commostradonatabela.

DefinindoumaClasseemJava Construindoumaclasse: [modif]classNomeDaClasse{ //corpodaclasse... } Aprimeiralinhaumcomandoqueiniciaadeclaraodaclasse.Apsapalavrachaveclass,segueseo nomedaclasse,quedeveserumidentificadorvlidoparaalinguagem.Omodificadormodifopcionalse presente,podeserumacombinaodepubliceabstractoufinal.Adefiniodaclasse,propriamentedita, estentreaschaves{e}quedelimitamblocosnalinguagemJava.Estecorpodaclasse,usualmente obedeceseguintesequnciadedefinio: Asvariveisdeclasse(definidascomostatic),ordenadassegundosuavisibilidade:iniciandopelaspublic, seguidospelasprotected,pelascomvisibilidadepadro(semmodificador)efinalmentepelasprivate Osatributos(ouvariveisdeinstncia)dosobjetosdessaclasse,seguindoamesmaordenaosegundoa visibilidadedefinidaparaasvariveisdeclasse. Osconstrutoresdeobjetosdessaclasse. Osmtodosdaclasse,geralmenteagrupadosporfuncionalidade. Todaclassepossuiatributosemtodos.Emespecial,todaclassetemumconstrutor,queummtodo responsvelpelainstanciaodoobjeto.Esteprocessofazcomqueoobjetosejacriadocomas caractersticasdesejadas.Paraqueumobjetoexistaemmemria,eleprecisatermemriaalocada,um endereodefinido.Oconstrutororesponsvelporisso. Acriaodeumobjetosedatravsdaaplicaodooperadornew. ClasseNomeobjeto=newClasseNome() OmtodoadireitadooperadornewoconstrutordaclasseClasseNome. Podemosinstanciarquantosobjetosforemnecessrios.Contantoqueguardemosarefernciaparaoobjeto emquesto.Arefernciacomopoderemosacessaraqueleobjeto. Casoumobjetonotenhamaisnenhumarefernciaparaele,ocoletordelixo(garbagecollectorGC) eliminaoobjeto,liberandoamemria. Atributos Elesrepresentamascaractersticasdeumobjeto.Devemserprivados,paramanteroencapsulamento.A definiodeatributosdeumaclasseJavarefletedeformaquasediretaainformaoqueestariacontidana representaodaclasseemumdiagramaUML.Paratanto,asintaxeutilizadaparadefinirumatributode umobjeto: [modificador]tiponome[=default] Onde: Modificadoropcional,especificamenteavisibilidadediferentedapadro(public,protectedou private)

TipodeveserumdostiposprimitivosdalinguagemJavaouonomedeumaclasse NomedeveserumidentificadorvlidodaliguagemJava Valordefaultopcionalsepresente,especificaumvalorinicialparaavarivel

Mtodos Osmtodosrepresentamasfuncionalidadesqueosobjetospodemdesempenhar.Soessencialmente procedimentosquepodemmanipularatributosdeobjetosparaosquaisomtodofoidefinido.Almdos atributosdeobjetos,mtodospodemdefiniremanipularvariveislocaistambmpodemreceber parmetrosporvaloratravsdalistadeargumentos.Aformagenricaparaadefiniodeummtodoem umaclasse: [modificador]tiponome(argumentos){ corpodomtodo } Onde: Omodificador(opcional)umacombinaode:public,protectedouprivateabstractoufinale static Otipoumindicadordovalorderetorno,sendovoid,seomtodonotiverumvalorderetorno OnomedomtododeveserumindentificadorvlidonalinguagemJava Osargumentossorepresentadosporumalistadeparmetrosseparadosporvrgula,onde,para cadaparmetro,indicadoprimeirootipoedepois(separadoporespao)onome.

Umaboaprticadeprogramaomanterafuncionalidadedeummtodosimples,desempenhandouma nicatarefa.Onomedomtododeverefletirdemodoadequadoatarefarealizada.Seafuncionalidadedo mtodoforsimples,serfcilencontrarumnomeadequadoparaomtodo. Comoocorreparaadefiniodeatributos,adefiniodemtodosrefletedeformaquasediretaa informaoqueestariapresenteemumdiagramadeclassesUML,anoserporumadiferenavital:o corpodomtodo. Mtodosdemesmonomepodemcoexistiremumamesmaclassedesdequealistadeargumentosseja distinta,usandoomecanismodesobrecarga.

Aula5:Herana Significaacapacidadedeincorporarascaractersticaseasfuncionalidadesdeumaclasse.Assimcomoa heranadetodasasoperaesedados,vocpodeespecializarmtodosdasuperclasseeespecificar novasoperaesedados,pararefinar,especializar,substituirouestenderafuncionalidadedaclasse progenitora. Umaclassedefineumconjuntodedadoseumconjuntodemtodos Todososobjetosdeumaclassemantmomesmoconjuntodeatributosemtodos Atravsdomecanismodeherana,tendodefinidoumaclassebasepossvelcriarclassesderivadasque:

Herdamosatributosemtodosdaclassebase Definemnovosatributosemtodos Podemredefinirosmtodosherdados Aolado,podemosverqueaclasseMeiosdeTransportesumaclassegenrica.Jasclasses Terrestres,representamascaractersticasdosMeiosdeTransportesmaisaspeculiaridadesdosveculos terrestres.OsmeiosAreos,tambmsomeiosdetransportes,massuaspeculiaridadessodiferentes dosoutrostiposdemeiosdetransportes,assimcomoosMartimos.

Terminologias EstenderCriarumanovaclassequeherdatodoocontedodaclasseexistente. SuperclasseUmaclasseprogenitoraoubase SubclasseUmaclassefilhaqueherdaouestendeumasuperclasse

ClasseAbstrata UmaclasseAbstrataemJavadefineatributoseMtodos. Numaclasseabstrataummtodopodeserdefinidocomomodificador"abstract".Nestecaso: Aclasseabstratanoimplementaosmtodosabstratos. Asclassesderivadasdevemimplementarosmtodosabstrados. Umaclasseabstratautilizadaquandodesejasefornecerumainterfacecomumadiversosmembrosde umahierarquiadeclasses.Osmtodosdeclaradosnaclasseabstrataseroimplementadosemsuas subclasses,atravsdepolimorfismo. Imagineumaclassequenoseusistema,aumafuncionalidadeexistenteemtodasassubclassesquerser apresentadanasuperclasse.EstemtododefinidonasuperclassecomoAbstract.Nassubclasses, estesmtodosseroimplementados,cadaumcomasuapeculiaridade. NotasimportantessobreClasseseMtodosabstratos Comovistoanteriormente,subclassespodemredefinir(sobrepor)ummtododesuasuperclasse. Paraindicarqueummtododeumadevenecessariamenteserredefinidoemcadaumadesuas subclasses,devemosusaromodificadorabstract. Umaclasse,quecontmumoumaismtodosabstratos,deveserdeclaradaexplicitamentecomo abstrata.Esseclasse,noentanto,podeterconstrutoresemtodosconcretos(noabstratos). Seumaclassedeclaradacomoabstract,nopodemsercriadosobjetosdestaclasse. Seumasubclassederivadadeumasuperclassequecontmummtodoabstratoeseesse mtodoabstratonoforredefinidonasubclasse,essemtodopermaneceabstractnasubclasse. Comisso,asubclassedeverserdeclaradaexplicitamentecomoabstract. Declararummtodocomoumabstratoumaformadeobrigaroprogramadoraredefiniresse mtodoemtodasassubclassesparaasquaissedesejacriarobjetos. Comoummtodoabstratodeveserredefinidonassubclasses,nasuperclasseelenoprecisater implementaoalguma.

Vamosimaginaraseguintehierarquiadeclasses:

ondeChefe,PorComissao,PorItemePorHorasoclassesfinais. Todasessassubclassesvoprecisarredefiniromtodoganha().Comosetratamdetiposdiferentesde empregado,cadaumganhadeumaforma: Declarandoomtodocomoabstratonasuperclasse,garantesequenas4subclasseshavera implementaodomtodoganha()paracadatipodeempregado(docontrrio,objetosdestasclassesno poderosercriados). Polimorfismo acapacidadequeosmtodosdemesmonometmdeefetuaremtarefasdiferentes. Omesmomtodocomvriasformas. AcontecededuasmaneirasemJava:Quandoosmtodossodefinidosemfunodaclasseque osutiliza(sobreposio),oudosdiferentesconjuntosdeargumentosdefinidosparacadamtodo (sobrecarga)

Aula6:EncapsulamentoeAssociaesdeClasses Encapsulamento MecanismoutilizadonaProgramaoOrientadaaObjetos,quevisaobtersegurana,modularidadee autonomiaparaosobjetos Conseguido,atravsdadefiniodevisibilidadeprivadadosatributos,ganhandose,assim,autonomia,para definiroqueomundoexternoaclassepodervisualizareacessar,normalmenteatravsdemtodos pblicos.

Concluso: Sempredefinaosatributosdeumaclassecomoprivados,anoserquetenhaumaboajustificativapara isso. OEncapsulamentoprotegeosatributosdeacessodiretoepermiteapenasacessoatravsdemtodos pblicos ModificadoresdeVisibilidade Ummodificadordeacessodeterminacomoseravisibilidadedeumaclasse,mtodoouatributoapartirde outrasclasses. ModificadoresdeAcesso Modificador public protected semmodificador private Abstract Ummtodoabstratonoimplementanenhumafuncionalidade,somenteassinaomtodoefazcomquea primeirasubclasseconcretasejaobrigadaaimplementar.Umaclassequepossuiummtodoabstratodeve serobrigatoriamenteabstrata,comovimosnaaulapassada. Classe X X X X Pacote X X X SubClasse X X Mundo X

Final Podeseraplicadoemclasses,mtodoseatributos.Indicaqueestaaltimaatribuiooudefinioda estrutura.Noserpermitidaumanovareescrita.Paraumaclasse,nohheranaemclassesfinal.Um mtodonopodesersobrescritoeumatributoconsideradoumaconstante. Exemplos SemEncapsulamento


classNaoEncapsulado{ //implicitamentamentehmodificadordeacesso,masnoomaisrestritivo intsemProteo } publicclassTesteNaoEncapsulado{ publicstaticvoidmain(String[]args){ NoEncapsuladone=newNoEncapsulado() //neumainstnciadeNoEncapsulado ne.semProtecao=10//acessodiretoaoatributo System.out.println("Valorsemproteo:"+ne.semProteo)//acessodiretoaosatributos } }

Comencapsulamento
classEncapsulado{ //privateummodificadordeacessoderestriomxima privateintcomProteo publicvoidsetComProteo(intcomProteo){ this.comProteo=comProteo } publicintgetComProteo(){ returnthis.comProteo } } publicclassTesteEncapsulado{ publicstaticvoidmain(String[]args){ Encapsuladoe=newEncapsulado() //OObjeto"e"umainstnciadeEncapsulado e.comProteo=10 //deveseacessaroatributosdeformaindireta,encapsulada e.setComProteo(10) System.out.println("Valorcomproteo:"+e.getComProteo()) } }

MtodosGetseSets Comovimos,precisocriarummecanismoparaacessaroscamposprivatedeumaclasse.Paraisso, comumfornecermtodospblicosparaacessarasinformaesencapsuladas.Estesmtodosso chamadosdeseteget.Omtodosetatribuivaloresaoatributo,enquantoqueomtodogetobtmseus valores. Acomposiodonomedestesmtodossemprecomonomeset+<nomeatributo>ouget+<nome atributo>. Abaixovemosumexemplodeatributoquenopermitealterao,logoseusatributossoprivadosesfoi disponibilizadoosmtodosgets.

AssociaodeClasses umvnculoquepermitequeobjetosdeumaoumaisclassesserelacionem.Atravsdestesvnculos, possvelqueumobjetotroquemensagensouchameosmtodosdeoutrosobjetos. NaUML,quandoestamosmodelandoodiagramadeclasses,temosaAssociao,aComposioea Agregao,comotiposdeAssociaes. AsAssociaestmacoplamentofraco. AsComposiestmacoplamentoforte. AAgregaofazpartede. Naimplementao,nohdiferenaentreasabordagens,oqueasdistinguesooscontrolesadicionados pelodesenvolvedor.UnifiedModelingLanguageLinguagemdemodelagemunificada. Composio Tipodeassociaoondeumanovaclasseusaclassesexistentescomoatributos Relacionamentotemum. Ex.:umacontatemumdono(cliente), umclientetemumnome(string)

classAleatorio{ intnumero Aleatorio(intmax){ numero=newRandom().nextInt(max) } } publicclassNumeroAleatorio{ privateStringnome privateAleatoriovalor NumeroAleatorio(Stringnome,intvalor){ this.nome=nome this.valor=newAleatorio(valor) } publicstaticvoidmain(String[]args){ NumeroAleatorion n=newNumeroAleatorio("Nmerosecreto",50) } }

Podemosterasseguintesmultiplicidadesdeassociaes: 1para1 1para* *para* Onde*equivaleamuitos.

Aula7:InterfacesePolimorfismo AsinterfacesgrficasemJava OJavaforneceumainfinidadedefuncionalidadesparaprovercomunicaohumanocomputador,oumelhor, paradesenvolverinterfaces.SofornecidasduasbibliotecasparadesenvolverumGUI.Elasso: java.awt:AbstractWindowToolkit(classesbsicas) javax.swing:SwingComponetsForneceumconjuntodecomponentsalternativos,mais funcionaisqueosconjuntosfornecidospelajava.awt.

EssasbibliotecassofornecidaspeloJFC(JavaFoundationClasses) Naimagempodemosverahierarquiadasclassesdasbibliotecasgrficas.

Componentesatmicos Soelementosoucomponentesquenopermitemconteroutroselementos.Podemoscitar,dentreoutros, botes,labels,textFields,sliders,checkboxes,scrollbars,etc. JLabel Sortulosestticosque,geralmente,apresentamfuncionalidadesdeoutroscomponentesGUI,comopor exemplo,camposdetexto,conesetc.Tambm,serveparaapresentarumpequenotexto.Asinstrues somostradaspormeiodeumalinhadetexto:somenteleitura,umaimagemouambas.Oconstrutormais elaboradoJLabel(String,Icon,int).Osargumentosrepresentamortuloaserexibido,umconeeo alinhamento,respectivamente.Tambm,possvelaexibiodeconesemmuitodoscomponentes

Swing.ParaJLabels,bastaespecificarumarquivocomextensopng,gifoujpgnosegundoargumentodo construtordoJLabel,ouutilizaromtodosetIcon(Icon),oarquivodaimagemalgumNome.xxxdeve encontrarsenomesmodiretriodoprograma,ouespecificasecorretamenteaestruturadediretriosat ele. AsconstantesSwingConstants,quedefinemoposicionamentodevrioscomponentesGUIeaqui,so apropriadasaoterceiroargumento,determinamalocaodoconeemrelaoaotexto.Soelas: SwingConstants.NORTH, SwingConstants.SOUTH, SwingConstants.EAST, SwingConstants.WEST, SwingConstants.TOP, SwingConstants.BOTTOM, SwingConstants.CENTER, SwingConstants.HORIZONTAL, SwingConstants.VERTICAL, SwingConstants.LEADING, SwingConstants.TRAILING, SwingConstants.NORTHEAST, SwingConstants.NORTHWEST, SwingConstants.SOUTHWEST, SwingConstants.SOUTHEAST, SwingConstants.RIGHT, SwingConstants.LEFT Exerccio: UtilizandooNetBeans,crieumprojetocomoumnovoaplicativoJava.Dentrodesseaplicativo,crieumnovo formulrioJFrame.DonomedeAula7Swing.java. ColoqueumJLabelnoframeecoloqueonomedesejadoqueaparea. Executeoarquivoparaveroresultado. Botes umcomponentequetemocomportamentosemelhanteaodeumbotoreal,querdizer,aoclicarmosou apertamosoboto,umaaoexecutada.UmprogramaJavapodeutilizarvriostiposdebotesde comando,caixasdemarcao,botesdealternnciaebotesdeopo.Parasecriaralgumdessestipos debotes,deveseinstanciarumadasmuitasclassesquedescedamdaclasseAbstractButton,aqual definemuitodosrecursosquesocomunsaosbotesSwing.Essecomportamentosemelhanteaomundo realajudaaosusuriosnacompreensodeinterface. Jbutton umdoscomponentesmaisfamiliareseintuitivosaousurio.Osbotesdecomandosocriadoscoma classeJButtoneseupressionamento,geralmente,disparaaaoespecificadaemseurtulo,quetambm suportaaexibiodepequenasimagens.Aopressionaroboto,geradoumeventoActionEventque, juntamentecomoutroseventos,executamalgumcomandodesejado.Estudaremosafundoeste comportamentonaprximaaula(aula8).

JCheckBox AclasseJCheckBoxdasuportecriaodebotescomcaixademarcao,sendoquequalquernumero deitenspodeseselecionado.Quandoumitemselecionado,umItemEventgerado.Omesmopodeser tratadoporumobjetoqueimplementeainterfaceItemListener.Aclassequeforneceasfuncionalidades paraesteobjetodevedefiniromtodoitemStateChanged,masistoservistonaprximaaula(aula8). JRadioButton Osbotesdeopo,quesodefinidosnaclasseJRadioButton,assemelhamseascaixasdemarcaono queconcerneaosseusestados(selecionadoounoselecionado).Entretanto,costumeiramenteso usadosemgruponoqualapenasumbotodeopopodesermarcado,forandoosdemaisbotesao estadonoselecionado. JTextField Compreendeareadeumanicalinhaquesuportaainseroouexibiodetexto.Podesedefinirseo textopodesermanipuladocomomtodosetEditable(boolean),utilizandonoargumentoovalortrue. QuandoousuriodigitaosdadosemumaJTexFieldepressionaEnter,ocorreumeventodeao.Esse eventoprocessadopeloouvintedeeventoregistradoquepodeusarosdadosqueestonoJTexFieldno momentoemqueoeventoocorre.Essesprocedimentosseromaisbemabordadosnaaula8. JPasswordField umasubclassedeJTextFieldeacrescentavriosmtodosespecficosparaoprocessamentodesenhas. SuaaparnciaecomportamentoquasenadadiferemdeumaJTextField,anoserquandootexto digitado,pois,omesmoficaocultadopelosasteriscos.Talprocedimentosejustificaparaocultaros Caracteresinseridos,dadoqueessecampocontmumaSenha. JTextArea umareadimensionvelquepermitequemltiplaslinhasdetextosejameditadascomamesmafonte. EssaclasseherdadadeJTextComponent,quedefinemtodoscomunsparaJTextField,JTextAreae outroselementosGUIbaseadosemtexto. AsJTextAreasnotmeventosdeaocomoosobjetosdaclasseJTextField,cujopressionamentode Entergeraumevento.Ento,utilizaseumoutrocomponenteGUI(geralmenteumboto)paragerarum eventoexternoquesinalizaquandootextodeumaJTextAreadeveserprocessado.Podeseconfigurarum textocomsetText(String)ouacrescentartextocomome'todoappend(String).Paraevitarqueumlongo textodigitadofiqueinclusoemsomenteumalinha,usaseomtodosetLineWrap(boolean),quedefinea quebradalinhaquandootextoalcanarabordadaJTextArea.Porm,aspalavraspodemficar "quebradas",comcaracteresemumalinhaeoutrosnaprximaIsemnenhumcompromissocomas normasgramaticais.Umamaneiradesanarpaliativamenteesseproblemainvocaromtodo setWrapStyleWord(boolean),oqualdeterminaqueamudanadelinhasejadefinidapelaspalavras.

JScroIlPane ObjetosdessaclassefornecemacapacidadederolagemacomponentesdaclasseJComponent,quando estesnecessitamdemaisespaaoparaexibirdados.JScrollpane(Component,int,int)eoconstrutormais elaboradoerecebeumcomponente(JTextAreaporexemplo)comoprimeiroargumento,definindoqualser oclientedoJScrollPane,ousejaIparaquemembroserfornecidoasbarrasderolagem.Osdoisprximos argumentosdefinemocomportamentodabarraverticaledahorizontal,respectivamente.Paraisso, podesefazerusodasconstantesdefinidasnainterfaceScrollPaneConstants,queimplementadapor JScrollPane. JScrollPaneVejaelas: JScrOllPane.VERTICALSCROLLBARASNEEDED JScrollPane.HORIZONTALSCROLLBARASNEEDEDIndicamqueasbarrasderolagemdevemaparecer somentequandonecessrio. JScrollPane.VERTICALSCROLLBARALWAYS JScrollPane.HORIZONTALSCROLLBARALWAYSIndicamqueasbarrasderolagemdevemaparecer sempre. JScrollPane.VERTICALSCROLLBARNEVER JScrollPane.HORIZONTALSCROLLBARNEVERIndicamqueasbarrasderolagemnuncadevemaparecer. possvelconfigurarocomportamentodoJScrollPaneparaumobjetocomosmtodos setVerticalScrollBarPolicy(int)esetHorizontalScrollBarPolicy(int),valendosedasmesmasconstantes comoargumentos. JSlider ummarcadorquedeslizaentreumintervalodevaloresinteiros,podendoselecionarqualquervalorde marcademedidaemqueomarcadorrepouse.Umadasinmerasutilidadesdessecontroledeslizante restringirosvaloresdeentradaemumaplicativo,evitandoqueousurioinformevaloresquecausemerros. OsJSlidercomportamaexibiodemarcasdemedidasprincipais,secundriasertulosdemedida.A adernciasmarcas(snaptoticks)possibilitaaomarcadoraderirmarcamaisprxima,quandoeste situarseentredoisvalores.Essecomponenterespondesinteraesfeitaspelomouseepeloteclado (setas,PgDn,PgUp.HomeeEnd).Suaorientaopodeserhorizontal,naqualovalorminimoestasituado naextremaesquerda,ouvertical,naqualovalorminimoestsituadonaextremidadeinferior.Asposies devalorminimoemximopodemserinvertidas,valendosedomtodosetlnvert(boolean).comum argumentotrue. JComboBox Assemelhaseaumboto,porm,quandoclicado,abreumalistadepossveisvaloresouopes.Mais precisamenteumacaixadecombinaoquepermiteaousuriofazerumaseleoapartirdeumalista deitens.Atendeseparaquealistadacaixadecombinao,quandoaberta,noultrapasseoslimitesda janeladaaplicao.Tambmpossiveldigitarnaslinhasdeumacaixadecombinao.Elasso implementadascomaclasseJComboBox,herdadadeJComponent.Taiscaixasdecombinaogeram ItemEvents,assimcomoasJCheckBoxes.

Menus Osmenustalvezsejamoscomponentesquemaisaparecemnasferramentascomputacionais. Geralmente,elessoencontradosnotopodajaneladaaplicao,deondedosuporteorganizaoe agrupamentodefunesemummesmocontextovisualoquefacilitamuitoalocalizaoeentendimento porpartedousurio,jqueaestruturadecadamenuestdelineadapelascaractersticasdositens. OsmenusquesoinstanciadosapartirdaclasseJMenu,soanexadosaumabarrademenuscomo mtodoadd(JMenu)deJMenuBar,sendoqueinstnciasdessaltimaclassecomportamseoomo containersparamenus.AclasseJMenuBarforneceosmtodosnecessriosaogerenciamentodabarra ondeosmenussoanexados. Aordenaodosmesmosdependedaordememqueforamadicionadossendoquesoempilhados horizontalmentedaesquerdaparaadireita.Evidentemente,spodeseanexarmenusajanelasdaclasse JApplet,JFrameeJInternalFrameefazseisso.usandoseomtodosetJMenuBar(JMenuBar).Aclasse JMenuItemcapacitaacriaodeitensdemenuque,porsuavez,devemseranexadosaummenu. Podeseusarumitemdemenuparaexecutaralgumaaoouparageriroacionamentodeumsubmenu.o qualfornecemaisitensqueestorelacionadosporalgumacaracterstiracomum. CriandotelasPolifrmicas ParaaplicarosconceitosdeclasseAbstrata,criodetelas,heranaepolimorfismo,iremosfazeruma classegenricadecadastroquepossaserutilizadaparavriasclassesdenegcio.

Aula8:ListenerseAdapters Eventos Eventoumacontecimentorelevantenomeioexternoaosistemarelevante.Podeserconsideradocomoo resultadodainteraodousuriocomalgumcomponenteGUI.Moveromouse,cliclo,digitarnumcampo detexto,selecionarumitemdemenu,fecharumajanela,clicarnumbotoetc.sointeraesqueenviam eventosparaoprograma,normalmenterealizandoservios. Eventostambmpodemsergeradosemrespostaamodificaesdoambiente.Emoutraspalavras, definemseeventosGUIcomomensagens(chamadasamtodos)queindicamqueousuriodoprograma interagiucomumdoscomponentesGUI. Umsistemaorientadoaobjetosdefinidocomoumconjuntodeobjetosinteragindooutrocando mensagens.Oseventosrepresentamasaesdosatoresnesseprocessooualgumarespostaauma mudanadeestado. TratamentodeEventos Quasetodososcomponentespropagameventos.Esseseventosdevemsertratadosemalgumpontodo cdigodaaplicao.Oseventosnuncasotratadosnoprpriocomponente(dadoquenosetemacesso aocdigodocomponente).Paraligarocdigodotratamentodeeventosaocomponentesexistem,noJava, umconjuntodeinterfaceschamadaslisteners.Umlistenerumainterfacequeespecificaosmtodosque umaaplicaodeveterparasernotificadadaocorrnciadeumdeterminadoevento.Oscomponentesque gerameventospermitemquesejamadicionadosouremovidoslistenersemqualqueraltura.

OmodelodeeventosdoJavafuncionadaseguinteforma: OcomponentequeproduzeventospossuimtodosespeciaisdotipoaddXXListener(XXListener)quepermite adicionarouremoverlisteners.XXrepresentaonomedoevento.OmtodoaddXXListenerrecebe,por parmetro,oobjetoqueimplementaainterfaceXXListener. AimplementaodomtodoaddXXListenernocomponenteapenasadicionaoobjeto,passadopor parmetroaumalistainterna.Semprequeocorrerumevento(exp.:botopressionado),ocomponente percorrealistaeinvoca,paracadaelemento,omtododefinidonainterfaceXXListener. NoexemploseguinteconstrudaumaGUIsimplescomumbotoeumacaixadetexto.Semprequeo botopressionadoaaplicaodeveescrevernacaixadetextoumnmerointeiroaleatrio.Para processaroseventos,necessrioanalisaroseventosqueobotoproduz.precisosaberque,sempre queumbotopressionado,criadoumeventodotipoActionEvent. Paraadicionarlisteners,aclassequerepresentaoboto(JButton)possuiummtodochamado addActionListener,querecebeporparmetroumobjetoqueimplementeainterfaceActionListener.NaAPI, vsequeainterfaceActionListenerespecificaummtodochamadoactionPerformed. TratamentodeEventos Resumindo: ActionEventEventogeradopeloboto,quandopressionado.Semprequeobotaoforpressionado,este irpercorrerasualistainternadelisteners,chamandoparacadaumomtodoactionPerformed. ActionListenerInterfacequeespecificaosobjetosquetratameventosdotipoActionEvent.Existemvrias soluespossveisparatrataroevento: Recorrendoprpriaclasse(GUI)Aaplicaogrficatemdeimplementaroslistenersnecessrios. Recorrendoaclasseslocaiscriadaumaclasselocalqueimplementaoslistenersnecessrios. RecorrendoaclassesinternaschamadaumaclassedentrodaGUI.Aclasseintemaimplementaos listenersnecessrios. RecorrendoaclassesannimasCriamseclassesannimasqueimplementemoslistenersdoseventosa tratar.Asclassesannimassoclassesinternasespeciais. Dilogosprdefinidos

OSwingofereceumconjuntodedilogosimples,prdefinidos,parausoeminteraesbrevescomum usurio: MensagemdeErro,dealerta Obtenodeumaconfirmao Entradadeumnicocampodetexto. ClassOptionPane EstruturaBsica

MessageDialog ExibeumamensagemeaguardaOKdousurio: INFORMATION QUESTION WARNING ERROR PLAIN Ex. ExemplodeMessageDialog: importjava.awt.Component importjavax.swing.* packageexemplos /**

* *@authorProf.EduardoPareto */ publicclassJanela{ privatestaticComponentjanela publicstaticvoidmain(String[]args){ JOptionPane.showMessageDialog( janela,"CuidadocomasProvas!","Linguagemde Programao",JOptionPane.WARNING_MESSAGE) } } ConfirmDialog Exibeumamensagemeobtmumaconfirmao(YES/NO,OK/CANCEL) Conjuntosdebotesdeopo(optionType): JOptionPane.DEFAULT_OPTION JOptionPane.YES_NO_OPTION JOptionPane.YES_NO_CANCEL_OPTION JOptionPane.OK_CANCEL_OPTION Ex. ExemplodeConfirmDialog: importjava.awt.Component importjavax.swing.* packageexemplos /** * *@authorProf.EduardoPareto */ publicclassJanela{ privatestaticComponentjanela publicstaticvoidmain(String[]args){ intresp=JOptionPane.showConfirmDialog(janela, "Vocjestudouparaasprovas?","Escolhaumaopo",JOptionPane.OK_CANCEL_OPTION) } } InputDialog Exibeumamensagemeobtmumvalordeentradadousurio Campotextoeditvel Combobox ExemplodeInputDialog:

importjava.awt.Component importjavax.swing.* packageexemplos /** * *@authorProf.EduardoPareto */ publicclassJanela{ privatestaticComponentjanela publicstaticvoidmain(String[]args){ Stringnome=JOptionPane.showInputDialog(janela, "QualoseunmerodeMatrcula", "LinguagemdeProgramao",JOptionPane.QUESTION_MESSAGE) } }

Aula9:TratamentodeExceo Exceo Umaexceoumaocorrnciaquealteraofluxonormaldaexecuodeumprograma.Estaocorrncia devesertratadaparaevitarqueoprogramaencerreseufuncionamento. Existemdiversostiposdeexceo.Erronaentradadedados,erronaconexocomobancodedados,erro naleituradearquivos,errodeumaoperaomatemtica.Semprequeocomputadorexecutaumcdigo quegeraumaexceo,ouoSistemaOperacionalirterminarseuprogramaouoseuprogramadever fazerotratamentoparaestaexceo. Ummtodopodedetectarumafalha,masnoestaraptoaresolversuacausa,devendorepassaressa funoaquemsaiba.Seotratamentodefalhasforintroduzidoaolongodofluxonormaldecdigo,podese estarcomprometendomuitoainteligibilidadedocdigo. ExceesemJava Dizsequeumaexceolanadaparasinalizaralgumafalha.Olanamentodeumaexceocausauma interrupoabruptadotrechodecdigoqueagerou.Ocontroledaexecuovoltaparaoprimeirotrecho decdigo(napilhadechamadas)aptoatrataraexceolanada. Ousodeexceespermitesepararadetecodaocorrnciadeumasituaoexcepcionaldoseu tratamento,aoseprogramarummtodoemJava.Naformaantigadeseprogramar,eracomum embutirasatomaremcadatestedeerro. Porexemplo,umafunohipotticaf()ficavaassim: voidf(){ if(<testedacondiodeerro1>){ <comandosquedeterminamoquefazerseoerro1ocorreu> } elseif(<testedacondiodeerro2>){ <comandosquedeterminamoquefazerseoerro2ocorreu>

} else....<testandoetratandooutrospossveiserros> else{ <comandosparaprocessarafunoemcondiesnormais> } } Estaformadeprogramarprejudicaobomdesigndasaplicaes.Seummtodoforusadoemaplicaes diferentes,omesmoerrosempresertratadodamesmamaneira.Issolimitaaflexibilidadedelidarcom situaesdeexceo.Sefornecessrioalteraroprocedimentoaseguirnocasodeumdeterminadoerro, omtodonaformaacimaterqueseralterado.Issointroduzriscoseobrigararetestartodoomtodo, inclusiveaspartesquejestavamfuncionandocorretamente. Informandoocompiladorqueomtodopoderlanarumaoumaisexcees. Nofinaldocabealhodeummtodoquepoderlanarexcees,colocaseainformao: throws<listadasclassesdeexceoqueometodopoderlanar> Porexemplo: publicvoidf()throwsNumberFormatException,IOException{ Veremosmaisadiantequeparacertasclassesdeexceoessadeclaraoobrigatria,enquantoque paraoutrasopcional. Capturandoetratandoexcees osblocostry{},catch(){},efinally{} QuandoprogramamosummtodoemJava,edentrodessemtodoexistemcomandosouchamadasde mtodosondepodemocorrerumaoumaisexcees,oscomandosdevemsercolocadosdentrodeum blocotry,quetemaforma: try{ <comandos> } Nocasodeocorrerumaexceonoblocotry,elaserlanada,osdemaiscomandosdoblocosero suspensos,eocontrolepassarparaoprimeiroblococatchquetenhaumparmetrodetipocompatvel comaexceolanada.Podehaverzero,umoumaisblocoscatchapsumblocotry.Osblocoscatche finallysoopcionais,masnopermitidohaverapenasoblocotrysempelomenosumblococatchouum blocofinallyassociado. Oblocofinallysersempreexecutadoapsoblocotryterminarnormalmete,ouapsosblocoscatch executarem,mesmoqueasadadessesblocossejacausadapelolanamentodeoutraexceono tratada,ouporcomandoreturn.Oblocofinallysomentenoserexecutadoseocorrerumachamadapara terminaraJVM,comSystem.exit(0). Comandosapsoblocofinallyseroexecutadossenohouveroscasoscitadosacima.Tipicamente,o

blocofinallycontercomandosdeliberaoderecursosalocadosnoblocotry(aberturadearquivos,de bancodedados,etc).Seessescomandosficassemnofinaldoblocotry,poderiamnuncaserexecutados emcasodelanamentodeexceo. Porexemplo: publicvoidg(){ try{ f() } catch(NumberFormatExceptionnfe){ <comandosparatrataraexceo> } catch(Exceptione){ <comandosparatrataraexceo> } }

Suponhaqueaoexecutar,omtodof()lanceumaexceodotipoNumberFormatException.Elaser capturadapeloprimeiroblococatchacima.Selanaroutrotipodeexceo,elasercapturadapelo segundoblococatch. Cliqueaquievejaumexemplocompleto. Exceesverificadasenoverificadas: AlinguagemJavaadmitedoistiposdeexceo:Asnoverificadas(unchecked,emingls)soinstncias desubclassesdeRuntimeException.Ocompiladornoverificaseexistepossibilidadedeseremlanadas, enoexigequeosmtodosondepossamocorrerfaamqualquertratamento.Elasrepresentamerrosou defeitosnalgicadoprogramaquepodemcausarproblemasirrecuperveisemtempodeexecuo(run time). Poroutrolado,instnciasdeException,oudequalqueroutradesuassubclasses,soverificadas (checked)como,p.ex,IOException,ClassNotFoundExceptioneCloneNotSupportedException.Elas representamerrosquepodemocorreremtempodeexecuo,masquenodependemdalgicado programa,emgeraldefeitosnosdispositivosdeentradaousada(arquivos,rede,etc). Ocompiladorexigequeummtodoondepossamocorrerexceesverificadasfaaumadeduascoisas: ouutilizeblocostrycatchfinallyparacapturaretrataressasexcees,oudeclarequepodelanaressas exceesparaomtodochamador,colocandoumaclusula"throws"noseucabealho,comopor exemplo:

publicvoidM()throwsIOException,CloneNotSupportedException{ .............. } Essaclusulafacultativaparaocasodeexceesnoverificadas.

Construtores Aclassejava.lang.Exception,etodasassuassubclasses,tmpelomenosdoisconstrutoresdaforma: <nomedaclassedeExceo>(String<mensagemdeerro>) <nomedaclassedeExceo>() AmensagemdeerrosempreretornadapelomtodotoString().Todaexceotambmaceitaa mensagemprintStackTrace(),queimprimenastreamapontadaporSystem.errumstacktrace.Ostack traceumrelatriodetalhadodaseqnciadechamadasamtodosqueantecederamolanamentoda exceo. Paralanarumaexceoquesejainstnciadasclassesdeverificaoobrigatriaalinguagemobrigao programadoradeclararnocabealhodomtodoquaisasclassesdeexceopodemterinstncias lanadas.Portanto,oformatocompletodocabealhodedefiniodeummtodo:

<modificadores><tipo><nome>(<parametros>)throws<classes> staticvoidm()throwsErroDoTipoX,ErroDoTipoY,ErroDoTipoZ{. .. thrownewErroDoTipoX() ... thrownewErroDoTipoY() ... thrownewErroDoTipoZ() } Seoprogramadorquiserestenderaclassequecontmomtodom()datelaanterioreseoprogramador quisersobreporomtodom()entoonovomtodoterdedeclararolanamentodeinstnciasdas mesmasclasses.Issogarantequeumcdigoquetrabalhacomaclassebasetrabalhartambmcomas classesderivadas. Afiguraabaixoilustraorelacionamentoentreasexceescheckedenoncheckedeahierarquiade classescomraiznaclasseThrowable.Osretnguloscomnomesrepresentamclasseseostringulos representamhierarquiasdeclassescomclasseraizidentificadapeloretngulodapontasuperiordo tringulo.NahierarquiadeclassespredefinidaemJavaaclasseThrowabletemsomenteduasclasses filhas(ErroreException),masumprogramadorJavapodedefiniroutrashierarquiasapartirdaThrowable (emboraissonosejarecomendvel). Asclassesehierarquiascujolanamentodeinstnciassejadeverificaoobrigatriasoidentificadasna corcinza.TodasasinstnciasdiretaseindiretasdaclasseErroredaclasseRuntimeExceptionsode verificaoopcional.TodasasinstnciasdiretaseindiretasdaclasseThrowable,quenosejamas instnciasdiretaseindiretasdasclassesErroreRuntimeException,sodeverificaoobrigatria.

Asintaxebsicadocomandotry/catch(naverdadetry/catch/finally!): try{ <comandosquepodemounolanarexcees> }catch(ExcecaoTipo1parmetro){ <tratamentodainstnciadaclasseExcecaoTipo1> }catch(ExcecaoTipo2parmetro){ <tratamentodainstnciadaclasseExcecaoTipo2> }... }finally{ <estescomandosseroexecutadoscomousemlanamentodeexceo> } Quandoodecontrolechegaaocomandotry/catchlfinallyodecontrolepassaapercorreroblocotry.Se umainstnciadeclassedeexceolanadacadaclusulacatchexaminadaeoparmetrodaclusula catch'maisadequada'recebearefernciadainstncialanadaeodeoontrolepassaapercorreroblocoda clusulacatch.Nenhumaoutraclusulacatchexecutada!Senenhumaclusulacatchforadequadao lanamentodaexceoserverificadoporcomandostryextemos.Oblocodaclusulaopcional.masse estiverpresentesersempre executadonoimportandoseoblocotryterminouaexecuodeformanormal(enohouveblococatch executado)ouseoblocotryterminoudeformaexcepcional.Cliqueaquievejaexemplos.

Aula10:ManipulaodemodelodeclassesemInterfacesGrficas Entendendooproblemareal Quandoestamosaprendendoumalinguagemdeprogramao,muitasvezesnoconseguimosvera aplicaoprticadoqueestamosaprendendo.Almdamatriaserdifcil,noconseguimosveraaplicao destecontedonomercadodetrabalho. Nestaaula,iremosconstruirumexemploreal,comasclassesdacamadadainterfaceconversandoou trocandomensagenscomasclassedonegcio.Nesteexemplo,siremosaplicartodosos conhecimentosadquiridosnasnossasaulas.Paraserumaaplicaocompletaepassveldeser consumidanomercadoaconexocomobancodedados,parapersistirosobjetosenvolvidos. OProblemaProposto Queremoscontrolarumcluberecreativo.Nesteclube,devemosgerenciarasatividadesoferecidaseseus associados.Paraisso,temososeguintediagramadeclassesdasclassesdonegcio:

Naimagem,podemosverasClassesAtividade,ScioeAlocao.Iremostrabalharapenascomas classesAtividadeeScio. ParaacamadadeInterface,teremososeguintediagramadeclasses:

Agora,olhandooproblematodo,temososeguintediagrama:

NossoproblemaagoraimplementarestediagramaemJava.Parasimplificarumpouconossotrabalho, noiremostrabalharcomaclasseAlocao. JavaBean umaarquiteturadecomponentedefinidanaJava2Plataform,StandardEdition(J2SE),usadoparadefinir oscomponentesdomodelodosoftwareemJava.Soclassessimplescomcaractersticasdefinidas,que visamainteroperabilidadedocdigo. Caracterstica Umbeanumaclassedefinidacomoumbloco,quetmsuaestruturafacilmenteportvelesuaestrutura muitosimples.Ofococonstruirpequenoscomponentescomapenasasfunesbsicas. Definio UmJavaBeanumcomponentedesoftwarereutilizvel,quepodesermanipuladovisualmenteporuma ferramentadedesenvolvimento

Paraisso,umBeantemqueterasseguintescaractersticas: NomedaClasse. AtributosdaClasseprivados. Construtorvazio. MtodosGetseSetsparatodososatributos.

LeiaadefiniooficialdoJavaBean. Criandoasclassesdonegcio UtilizandooNetBeans,criarumnovoprojetoJava,comonomedeClubeRecreativo. Arquivo>NovoProjeto>Java>AplicativoJava AperteobotoPrximo. Umanovacaixadedilogoirseabrirparadefinironomeelocaldoseuprojeto. Comopodemosveraolado,definimosonomedoProjetoeolocalondeosarquivosficaroarmazenados noseucomputador. PreencheronomedoprojetocomClubeRecreativoeapertarobotoFinalizar. Casotenhafeitoalgumacoisaerrada,vocpodeclicarnobotovoltarparacorrigir. Agoracomonossoprojetocriado,vamoscriarasduasclassesapresentadasacima,AtividadeeSocio. Clicarcomobotodireitodomousenonomedonossoprojeto.EscolherNovo>ClasseJava. OnomedaclasseserAtividadeevamoscolocarestaclassedentrodopacotenegocio. Bastaclicaremfinalizarparaqueaestruturadaclassesejacriada. ComoiremoscriarumBean,iremosdefinirosatributoseosmtodosGetseSetspadro,bemcomoseu construtorvazio. Construindoasclassesdeinterface Astelasqueiremoscriaraquitemamesmaestruturadacriadanaaula7. Inicialmente,vamosconstruiratelaprincipal.Paraestesistemafuncionar,precisamosconstruirumatela decadastrocomumabarrademenus.EstatelaseligaaTelaCad.Dependendodaopoescolhidano menu,ateladecadastroterocomportamentodecadastrodeAtividadeoucadastrodeScio.Issouma aplicaodepolimorfismo. VamoscriaraTelaPrinc.ClicarcomobotodireitononomedoprojetoecriarumnovoFormulrioJFrame. Acaixadedilogoirabrir.Coloqueonomedaclasseenonomedopacote,vamoscolocarVisao.Vamos colocartodasasclassesdacamadadeinterfacenopacoteVisao. Agora,vamosprogramarabarrademenu.UtilizaraPaletedeMenusSwingparaclicarearrastarum componenteBarradeMenuparaoProjeto.AbarrademenucomasopesFileeEditiraparecer. Observequeestasduasopesso2objetosjMenufornecidosautomaticamente.Paracolocarasopes, temosqueositensdemenu(ItemdeMenu).

EditarosnomesdasopesparaaparecerCadastroeSair.Clicandoemcimadosnomes,aedio abertaetrocamosonome.Outraopoadeirnapropriedade,buscarapropriedadetextparaonovo nome. Vamosprogramaroeventodesada,parafecharajanelaeterminaroprograma.InsiraumItemdeMenuna opoSair.ColoqueonomeSairnesteitem.Naspropriedadesdeevento,programeoactionPerformedpara esteitem.Cliquenastrspontosparaqueaopodonomedomtododetratamentodoeventoseja aberta.Coloqueonomedomtodoecoloqueocdigonomtodocriado. .... privatevoidjMenuItem1ActionPerformed(java.awt.event.ActionEventevt){ if(javax.swing.JOptionPane.showConfirmDialog(null,"ConfirmaSada?","ATENO", javax.swing.JOptionPane.YES_NO_OPTION)==0){ System.exit(0) } } ... Estecdigocriaumacaixadedilogoparaconfirmarasada.CasoapertenaopoYES,osistema terminasemerrosnormalmente. Vamosagorafazeromesmoprocedimentoparaocadastro.Nestemenu,teremosduasopes:Atividade eSocio.Criardoisitenscomestasopes. ColocaroItemdeMenu Renomearaopo Clicarnaopoeprogramaroevento EscolherEventosnaPaleta Clicarnos3pontosdoactionPerformed Nomearomtododetratamentodoevento TrataCadastraSocio TrataCadastraAtividade Paracontinuar,precisamosdastelasdecadastroprontas.Vamostrabalharnestastelas. Integrandoastelasdecadastrocomasclasses Paraimplementaraintegrao,vemosqueaTelaCadprecisaestarassociadaasclassesAtividadee Socio.Paraisso,criaremosestesatributosnaclassegenrica. TrabalhandocomaAtividade,bastaefetuaraprogramaodostratamentosdeeventosdaTelaCadClube, paracriao,alterao,exclusoeconsulta.Asalteraesnocdigoestoapresentadasabaixo.

@Override voidtrataAltera(){ if(atividade==null) atividade=newAtividade() atividade.setCodAtv(corpo.getAtv())

atividade.setDescricao(corpo.getNome()) } @Override voidtrataConsulta(){ if(atividade==null) corpo.setNome("Atividadenocadastrada") else{ corpo.setAtv(atividade.getCodAtv()) corpo.setNome(atividade.getDescricao()) } } @Override voidtrataExclui(){ if(javax.swing.JOptionPane.showConfirmDialog(null,"ConfirmaExcluso?","ATENO", javax.swing.JOptionPane.YES_NO_OPTION)==0){ atividade=null corpo.setAtv(0) corpo.setNome("") } } @Override voidtrataInclui(){ if(atividade==null) atividade=newAtividade() atividade.setCodAtv(corpo.getAtv()) atividade.setDescricao(corpo.getNome()) } Aprogramaodaoutratelacomaoutraclasseanlogaeiremosdeixarparaquevocpratique. Comoexerccio,faaotratamentodaexceoparaqueseousurioentrecomumvalorinteironos camposMatrculaeCodAtv,sejaapresentadoumamensagemparaqueousuriopossaeditarecorrigira digitao.Scomoorientao,estetratamentodeverserfeitonasfunesdetratamentodoJPanel,tanto paraAtividadequantoparaScio.