java completo com interface gráfica

Upload: levi-henrique

Post on 07-Jul-2015

836 views

Category:

Documents


0 download

TRANSCRIPT

AUTOR (ERA S O QUE FALTAVA)...

Fbio Burch SalvadorO PRIMEIRO E NICO

LOUCADEMIA DE JAVA

J2SEOU

ENCICLOPEDIAE JAVALISTICUS UNIVERSALIS UM GUIA PARA QUEM NO SABE NADA DA LINGUAGEM JAVA, MAS QUER APRENDER. VOC COMEA A LER APENAS COM CONHECIMENTOS BEM BSICOS EM LGICA DA PROGRAMAO, E TERMINA A LEITURA DESENVOLVENDO SISTEMAS EMPRESARIAIS COMPLETOS S QUE VAI DAR TRABALHO, CLARO! ENTO, SE VOC ESTIVER AFIM DE VAGABUNDAGEM, V TENTAR UMA CARREIRA POLTICA OU ALGO ASSIM. OU VIRE HIPPIE.

Loucademia de Java Verso 1.0

Homem de preto, qual a sua misso? aprender logo Java e tirar Certificao!

Homem de preto, o que que voc faz? Escrevo um cdigo fonte que apavora o Satans!Powered by

LuisiusWWW.FABIOSALVADOR.COM.BR Pgina 2

Fbio Burch SalvadorPrefcioEste livro serve para as pessoas aprenderem a programar em Java. Especificamente, J2SE, programao para desktop. No um livro para ser lido na cama ou no banheiro. No um livro para ler no nibus. um livro que tem muitos cdigos e portanto preciso baixar uma IDE e testar os exemplos. S se aprende a programar programando. O contedo deste volume foi ordenado seguindo o critrio mais correto de todos - o critrio da prtica. Ele apresenta as aulas de Java ministradas pelo autor, da maneira como ele gostaria de ter feito caso tivesse tempo e o curso no fosse curto demais. As explicaes usam uma linguagem informal, solta, e possivelmente possuem erros de concordncia em diversos pontos. Este livro antes de mais nada um livro escrito s pressas, em horrios livres, de intervalos para o lanche ou na madrugada antes do incio das aulas. Portanto, mancadas no portugus devem ser perdoadas. o livro escrito por algum que passa o tempo todo na mais absoluta pressa. , na verdade, o ltimo trabalho feito por mim sob estas condies. As prximas obras sero mais calmamente escritas. Espero que sirva para os iniciantes e at para quem j conhece alguma coisa de Java.

PreDifcilVoc pode achar Java uma linguagem complicada. No . Voc pode achar que Orientao a Objetos um bicho de sete cabeas. No . Tudo isso muito simples. Eu vou tentar fazer parecer ainda mais simples. Trata-se de lgica natural. Mas eu aviso: preciso abstrair algumas noes para compreender o que se vai ler aqui. No se pode pensar em classes como salas ou como caixas. Em objetos como variveis, como valores ou sei l o que. preciso compreender que estamos lidando com coisas abstratas, que a princpio representam coisas reais, mas no SO reais. Portanto, comportam-se como aquilo que so: idias. Uma classe uma idia de um tipo de coisa. Um objeto a idia de um objeto. E uma instncia de sua classe. Um mtodo, o qu? Uma funo? Mais ou menos. Mas tambm uma o em potencial do objeto. Ou da classe, se for esttico. Pode parecer difcil mas no . Poderia ser pior. Os comandos, todos palavras em ingls, poderiam ser escritos em alemo. A sim a cobra iria fumar!

And we should consider every day lost on which we have not danced at least once. And we should call every truth false which was not accompanied by at least one laugh.(Devemos considerar perdido um dia em que no danamos pelo menos uma vez. E mentirosa toda a verdade que no vier acompanhada de pelo menos uma risada) Friedrich Nietzsche Em ingls

The book is on the table.(Penso, logo existo.) Scrates Em portunhol

Pgina 3

-

WWW.FABIOSALVADOR.COM.BR

Loucademia de Java Verso 1.0 O autor quem esse cara?Fbio Burch Salvador nasceu em 1981, em Porto Alegre. viciado em informtica desde guri, mais precisamente desde o dia em que colocou as mos em um XT na firma onde o pai trabalhava. Programador desde os 13 anos (o pai tinha um 286) comeou no Basic desenvolvendo Games cabulosos tirando sarro de amigos e conhecidos. Mais tarde, evoluiu, desenvolvendo ento outras coisas medonhas em outras linguagens. Mas tambm desenvolveu muita coisa boa, sistemas empresariais principalmente - e apostilas! Programa Basic, VB, JavaScript, Pascal, PHP, Java. Monta sites escrevendo HTML e CSS no Bloco de Notas. Aprendeu Flash sozinho. E tambm Photoshop, Corel Draw, SQL, e tudo mais. Incrivelmente, tem apenas um curso - de AutoCAD (?) - ele que rodou na stima srie exatamente por no saber nada de geometria e nem a Frmula de Bskhara (que ele alis no domina at hoje). formado em Jornalismo desde 2005 pela PUC de Porto Alegre. Por qu logo Jornalismo? Ningum sabe. Nem ele. Apaixonado pelas cmeras, teve at uma curta carreira como cineasta, dirigindo 4 curtas-metragens, todos dignos de um Cine Trash . Defensor implacvel do DOS nos anos 90, acabou rendendo-se. Prdigo em criar bordes, Fbio criou frases de efeito que ficaram na Histria de todos os lugares pode onde passou. Iniciou sua vida profissional "pegando" uma srie de empregos variados, mais ou menos no estilo Seu Madruga. Foi, entre outras coisas, digitador de cadastro nas Lojas Renner, tcnico de fiscalizao da Anatel, estagirio na Prefeitura de Porto Alegre, monitor de laboratrio na PUC, e s no foi astronauta porque o Brasil no tinha programa espacial. Em 2004, fundou um pasquim em Viamo/RS chamado "A Cidade". O jornal sagrou-se como o mais polmico no municpio, tinha o desenho mais estiloso e foi o primeiro a ter um site. Bagunou a vida dos polticos locais e estampou manchetes gritantes em capas surrealistas at seu fechamento no incio de 2006. Fbio ento passou a colaborar no "devez-em-quandrio" Correio Viamonense, outro pasquim ainda mais meftico do que o primeiro. Virou sub-celebridade local e passou a ser sistematicamente convidado pelos partidos polticos em tudo que eleio. Ainda buscando uma carreira de comunicador, tentou a sorte na redao do site Terra, como redador temporrio. Em seguida, cansou-se de nunca ter grana para nada e resolveu abandonar o jornalismo. Voltou a dedicar-se informtica. Deu o arriscado passo da troca de carreira e acertou na mosca. Como desenvolvedor de softwares, sua falta de instruo formal na rea foi facilmente esquecida por todos os que o empregaram porque, afinal de contas, seus programas funcionam. Agraciado com o Prmio McGyver da Programao, Fbio foi professor no Senac em So Leopoldo, ensinando sua arte softwarstica e tornando seus alunos to pirados quanto ele. Acabou tambm ensinando design, liderana, oratria, administrao e outras coisas mais. Saiu do Senac por vontade prpria em 2008 para dedicar-se a programar em turno integral. No que no goste de dar aulas. Teve seu$ motivo$ pe$$oai$. Desde o comeo e sempre, teve principalmente a ajuda indispensvel de seus pais, que sempre o incentivaram a ir em frente e at a levantar nas inmeras vezes em que caiu. Mais tarde, iria somar-se neste esforo de apoio sua namorada que virou esposa. Apesar de serem todos pessoas bem mais "normais" e discretas do que o autor deste livro, sempre tentaram compreend-lo. Ele que por vezes incompreensvel. E que incompreensivelmente conseguiu achar seu caminho na vida. Fbio casado, tem uma filha, um gacho urbano criado na Capital e nunca andou a cavalo. No sabe tocar gaita. E no usa pilcha. Mas sabe assar churrasco, provando mais uma vez que a convenincia a me da sabedoria. Continua programando, atuando na rea do ensino e dedica-se tambm a escrever. E ainda por cima mantm seu "lado jornalista" vivo no site que mantm na Internet e cujo jab j foi feito neste livro. Projeta carros espalhafatosos em AutoCAD 3D (e publica os projetos na Internet). s vezes, filosofa. Tambm mete-se na poltica. E at escreve sobre teologia. Ainda no plantou uma rvore. Mas j teve um filho. E agora acaba de escrever um livro.WWW.FABIOSALVADOR.COM.BR Pgina 4

Fbio Burch SalvadorAgradecimentosEste livro no teria sido escrito sem a ajuda de algumas pessoas. Em primeiro lugar, quero agradecer minha esposa Fabiana por me aturar nos tempos em que passei concentrado escrevendo, minha filha Camila por me trazer bolachinhas e beijos enquanto eu escrevo, aos meus pais que sempre me apoiaram e no final so os verdadeiros responsveis por eu estar aqui hoje escrevendo. Ao meu cunhado Ismael por consertar meu PC nas vezes em que ele apresentou problemas. minha sogra por me aturar. Ao meu sobrinho Raphael por me alegrar, e minha irm ngela por ter crescido ao meu lado e ter participado de quase todos os momentos mais importantes da minha vida. Novamente minha me por sempre me dar fora e ao meu pai por me incentivar a aprender Basic. Tambm quero homenagear meus alunos do Senac, tanto a galera do Java e do PHP, sempre formando turmas de pessoas divertidas, o que me estimulava a aprender mais para ensinar mais. E tambm gurizada da Aprendizagem Comercial: Manu, Luan, Douglas, Alemo, Frajola, Tainara, Francine, Alisson, Elvis, Pri, e todo o resto da gurizada medonha. Ah, e claro, a Deize que veio da capital tecnolgica do mundo Ocidental, Crissiumal. Essa gurizada, com seu jeito barulhento e impulsivo, acabou tornando a mim mesmo mentalmente mais jovem (o papel de professor estava a envelhecer-me aos poucos) e me fez ver que eu no poderia acomodar-me to cedo, que deveria ser mais confiante e construir meu futuro com ambies maiores e, no fim, causaram eles mesmos a perda de seu professor de todas as tardes. Tambm homenageio aos colegas do Senac, a Raquel, o Alexandre, o Antonio, o Alisson, a Pati, a Su, e todos os outros malucos que dividiram comigo um ano absolutamente divertido e edificante. E, claro, ao Nelson e Carla, que na direo da escola souberam lidar com pessoas como, por exemplo, eu o que sei ser uma misso casca-grossa. Mando tambm um al especial para a galera do Espiral, da WaySys, da Memo e de todos os lugares onde eu pude desenvolver sistemas, aprimorando-me no decorrer do caminho. Tambm quero agradecer a Steve Wozniak, que inventou o computador pessoal. Ao Bill Gates, por ter criado um sistema operacional simplesmente maravilhoso. E ao Linus Torvalds pelo mesmo motivo. Quero agradecer a Jesus Cristo, sem o qual ns hoje seramos Zoroastristas ou mais provavelmente Mitrastas se no fssemos uns tribais animistas danando seminus em vota de uma pedra e sacrificando virgens ao deus Dagon quando se sabe que virgens tm outra utilidade bem melhor. No posso tambm deixar de agradecer a mim mesmo, pessoa sem a qual este texto no se auto-escreveria sozinho. E quero agradecer a vocs, que j leram umas quantas pginas e ainda no viram nada de Java. Mas vero, e no se arrependero. Ento, vamos ao Java!

Luis, Michel, Bruno, Mauricio, Sergio e Diego (faltou o lendrio Daniel) turma de Java de 2008

Dejair, Clauber, Pozzebon e eu turma de Java em 2007

Pgina 5

-

WWW.FABIOSALVADOR.COM.BR

Loucademia de Java Verso 1.0Import java.livro.JIndice class Livro_do_Java { static JIndice ind; public static void main (String[]args) { ind = new JIndice(); ind.listar();

ndicePrefcio....................................................................................................................................................3 PreDifcil...................................................................................................................................................3 O autor quem esse cara?..................................................................................................................4 Agradecimentos......................................................................................................................................5 ndice........................................................................................................................................................6 Nomenclaturas e badulaques.................................................................................................................8Java a JavaScript.....................................................................................................................................................8 O que uma API......................................................................................................................................................8 J2SE, J2EE e J2ME.................................................................................................................................................8 Java Virtual Machine (JVM).....................................................................................................................................9 Java Developer Kit (JDK).........................................................................................................................................9 O que uma IDE......................................................................................................................................................9 Palavras Reservadas...............................................................................................................................................9 Coleta automtica de lixo.......................................................................................................................................10

Classes e objetos..................................................................................................................................11Explicao Wikipdica............................................................................................................................................11 Explicao no popular..........................................................................................................................................12

Padres bsicos de programao Java..............................................................................................15Principais tipos de dados.......................................................................................................................................15 Usando chaves.......................................................................................................................................................15 Fazendo clculos....................................................................................................................................................15 Comparaes.........................................................................................................................................................16 Concatenando condies.......................................................................................................................................16

Montando um programa simples.........................................................................................................17 Sintaxes principais................................................................................................................................18Laos de repetio.................................................................................................................................................18 Estruturas condicionais..........................................................................................................................................19

Aplicando Orientao a Objetos..........................................................................................................21Instanciando uma classe........................................................................................................................................21 Herana..................................................................................................................................................................23 Polimorfismo...........................................................................................................................................................25

Modificadores .......................................................................................................................................26Static.......................................................................................................................................................................26 Public......................................................................................................................................................................26 Private.....................................................................................................................................................................26 Final........................................................................................................................................................................26 Protected................................................................................................................................................................27

Pacotes...................................................................................................................................................28 Tratamento de erros e excees..........................................................................................................29Throw informado os erros classe que instanciou o objeto...............................................................................30 Tipos de Excesso.................................................................................................................................................31

Escrevendo dados em arquivos textos e lendo eles de volta............................................................32Tokenizer (caracteres separadores)......................................................................................................................34 Mtodos da classe StringTokenizer:......................................................................................................................35

Tocando sons em Java.........................................................................................................................36 A classe Console...................................................................................................................................38Sobrepondo mtodos uma tcnica essencial.....................................................................................................40

Interface grfica em Java......................................................................................................................41Bibliotecas AWT e SWING.....................................................................................................................................41 Nossa primeira tela.................................................................................................................................................41 WWW.FABIOSALVADOR.COM.BR Pgina 6

Fbio Burch SalvadorJLabel.....................................................................................................................................................................43 JButton....................................................................................................................................................................44 JTextField...............................................................................................................................................................45 JFormattedTextField...............................................................................................................................................46 JToggleButton........................................................................................................................................................47 Icon.........................................................................................................................................................................48 JOptionPane...........................................................................................................................................................49 Tipos de mensagem:..............................................................................................................................................50 showConfirmDialog................................................................................................................................................51 showOptionDialog..................................................................................................................................................52 showInputDialog.....................................................................................................................................................53 JMenuBar, JMenu e JMenuItem............................................................................................................................54 JCheckBox.............................................................................................................................................................55 JRadioButton..........................................................................................................................................................57 JComboBox............................................................................................................................................................59 JTabbedPane.........................................................................................................................................................60 JScrollPane............................................................................................................................................................61 JTables...................................................................................................................................................................62 JFileChooser..........................................................................................................................................................65 JInternalFrame.......................................................................................................................................................67 Tree........................................................................................................................................................................69

Eventos (Listeners)...............................................................................................................................70ActionListener.........................................................................................................................................................70 FocusListener.........................................................................................................................................................71 KeyEvent................................................................................................................................................................72 MouseListener........................................................................................................................................................73

Uma coleo de pequenos comandos soltos.....................................................................................75Leitura de dimenses de componentes grficos e da prpria tela........................................................................75 Converso de dados..............................................................................................................................................75 Fazendo uma JFrame sumir, morrer e derrubar o programa................................................................................76 Relaes com o setDefaultCloseOperation...........................................................................................................76 Ordenando a uma JFrame que abra em modo maximizado.................................................................................76 Redimensionando imagens para caberem dentro da JLabel................................................................................77 Colocando uma imagem de plano de fundo dentro do JDesktopPane.................................................................78

Conexo Java + Banco de Dados........................................................................................................81Criando a aplicao integrada................................................................................................................................84 Consultando o Banco de Dados.............................................................................................................................86 Gravando no BD (Insert e Update).........................................................................................................................87 Java + MySQL........................................................................................................................................................88 A aplicao Java com MySQL integrado...............................................................................................................89 Nota sobre componentes de conexo baixados da Web......................................................................................90

Criando formulrios de impresso com IReport.................................................................................91Colocando dados no Report...................................................................................................................................94 Montando grupos....................................................................................................................................................97 Testando o Report..................................................................................................................................................99 Botes do IReport...................................................................................................................................................99 Trabalhando com variveis..................................................................................................................................100

Como integrar o JasperReport ao programa Java............................................................................102 Compilando o projeto depois de pronto............................................................................................105 Extras...................................................................................................................................................108Como chamar um outro programa EXE...............................................................................................................108 Usando impressoras matriciais diretamente........................................................................................................109 Gerando um relatrio com Cdigos de Barra......................................................................................................111 Como ler um cdigo de barras.............................................................................................................................112

Pgina 7

-

WWW.FABIOSALVADOR.COM.BR

Loucademia de Java Verso 1.0Nomenclaturas e badulaquesVamos ver agora um pequeno glossrio de coisas que precisamos saber antes de comear.

Java a JavaScriptA primeira confuso que existe no mundo Java entre a linguagem Java e o JavaScript. Vamos ver isso de forma bem clara e objetiva: JAVA uma linguagem completa, enorme e complexa utilizada para montar aplicaes completas com acesso a Bancos de Dados constante e fins mais completos. Programar Java exige alguma prtica, e exatamente para ensinar Java que eu escrevi este livro. O cdigo JAVA deve ser desenvolvido, testado e depois convertido em Byte-Code, em uma operao de compilao. O cdigo torna-se ento ilegvel e o usurio no tem acesso s fontes que deram origem s funcionalidaes. JAVASCRIPT uma pequena linguagem de scripts usados dentro do cdigo HTML de um site e que executam pequenas tarefas a serem executadas do lado do cliente na conexo via Internet. O cdigo aberto e as funcionalidades raramente passam de pequenas validaes de campos em formulrios HTML ou efeitos de animao limitados. A nica coisa legal sobre o JavaScript, do ponto de vista do programador Java, que as sintaxes dos comandos so iguais. Laos de repetio, funes e outros badulaques tm a mesma forma de escrever que os da linguagem Java.

O que uma APIUma API uma coleo de componentes de software que j vm prontos e o programa s precisa usar. Muita gente fala das APIs do Windows, pois possvel chamar estas APIs nos programas. Ns vamos usar uma API do sistema operacional, l no final do livro. Vamos criar um arquivo PDF, e da vamos rodar uma API que identificar qual o programa que o Windows do usurio est utilizando para abrir este tipo de arquivo. A API do Java uma coleo imensa, absurdamente imensa, de classes reutilizveis com as mais bizarramente variadas utilidades. Temos, por exemplo, as classes da bibliotecas JAVA.AWT e JAVA.SWING, que servem para criarmos telas grficas de apresentao para o nosso usurio. Temos a JAVA.IO, com suas classe usadas para manipular entrada e sada de dados, por exemplo, para arquivos-texto. Enfim. As APIs nos economizam tempo, porque no precisamos criar as coisas do zero, fazendo um movimento semelhante a reinventar a roda. No. Ns vamos usar tudo o que j vier pronto e desenvolver nossos softwares sem, por exemplo, ter que reinventar o boto clicvel.

J2SE, J2EE e J2MESo denominaes que damos a trs caminhos para o desenvolvimento de aplicaes na linguagem Java. J2SE (Standard Edition) consiste em criar classes, montando um programa executvel, construindo a interface grfica do programa nessas classes. No final, compila-se o cdigo e temos um arquivo JAR, que funciona como um executvel em qualquer computador devidamente preparado. Usa-se para fazer softwares desktop, que operam na tela do computador normalmente. J2EE (Enterprise Edition) consiste em criar alguns cdigos em arquivos JSP e construir umas classes. Parece muito com a programao J2SE. Porm a interface grfica feita com o uso de pginas HTML. Estas pginas tm FORMS cujo boto de ativao aciona as funcionalidades feitas em Java. usado para desenvolver para a Web. J2ME (Micro Edition) parecido com o desenvolvimento J2SE, mas no se pode usar uma srie deWWW.FABIOSALVADOR.COM.BR Pgina 8

Fbio Burch Salvadorfuncionalidades, especialmente no que se refere rea de interface grfica. Serve para desenvolver aplicaes para telefones celulares, palmtops e outros dispositivos mveis.

Java Virtual Machine (JVM)A Mquina Virtual do Java um software que deve ser baixado e instalado no computador do usurio para que os programas em Java rodem. Parece um problema, a princpio, mas aqui que mora a verdadeira vantagem da linguagem Java sobre as linguagens mais tradicionais. Uma linguagem tradicional cria um arquivo EXE, executvel, que roda em contato direto com o Sistema Operacional do computador do usurio. Assim, se o EXE foi compilado para ser usado no Windows, ele no roda no Linux. Por isso os programas precisam ter vrias verses, uma para Linux, uma para Windows, uma para Solaris, uma para o Unix, e assim por diante. J no Java, o programa roda em contato direto com a JVM, e a JVM quem fala diretamente com o Sistema Operacional. Assim, se eu tiver 3 clientes, um com Linux, um com Windows e um com Solaris, e os trs forem internet baixar a JVM (que gratuita), meu programa poder ser compilado uma nica vez, pois funciona em qualquer sistema operacional. Isso maravilhoso. O lema da linguagem java Write Once, Run Everywhere, ou seja, escreva (o cdigo) uma vez, e rode em todos os lugares.

Java Developer Kit (JDK)Ah, isso aqui uma mo na roda! O kit de desenvolvimento Java consiste de uma JVM completa e mais as fontes das classes que formam a API do Java. Assim, temos todo o necessrio para montar, n computador, um ambiente propcio ao desenvolvimento de aplicaes Java, porque essas classes prontas da API j vo ficar disponveis para o nosso programa usar.

O que uma IDEIntegrates Development Environments, as IDEs, so, traduzindo, Ambientes de Desenvolvimento Integrado. Mas o que diabos isso? So programas muito bons, que nos ajudam a fazer programas. A gente pode escrever cdigo no Bloco de Notas e depois compilar, mas isso j loucura. Nem eu sou maluco o suficiente para fazer isso. Existem IDEs muito simples, como o BlueJ, que apenas tem um interpretador capaz de rodar nosso programa com ele ainda no fechado no arquivo JAR. Assim, podemos testar tudo antes de acabar o projeto. Existem IDEs bem mais complexas, como o NetBeans e o Eclipse. No Eclipse, por exemplo, quando a gente escreve o nome de uma classe qualquer ou de um objeto pertencente a uma classe, aparecem na tela os mtodos daquela classe em uma lista bem bonitinha, para a gente clicar. Isso nos poupa de ter que decorar, de cabea, todos os mtodos. Essas IDEs tambm corrigem nossos erros, marcando eles com sublinhados vermelhos, e possuem assistentes de compilao que nos ajudam a montar o arquivo JAR sem que ns tenhamos que escrever um arquivo de parmetros na mo. IDEs so, a grosso modo, editores que ajudam a gente a fazer cdigo sem errar tanto.

Palavras ReservadasExistem algumas palavras em Java que no poderemos usar para designar classes, variveis ou qualquer outro tipo de coisa. Essas palavras so comandos nativos da linguagem: abstract continue for new assert default goto package boolean do if private break double implements protected byte else import public case enum instanceof return catch extends int short char final interface static class finally long strictfp const float native super true false null

Pgina 9

-

WWW.FABIOSALVADOR.COM.BR

Loucademia de Java Verso 1.0Coleta automtica de lixoJava uma linguagem para l de inteligente. Surgiu em 1995, e veio com essa histria de lixo. O que isso? Simples! Nas linguagens de antigamente, ns crivamos a varivel X e precisvamos, quando no mais a quisssemos usar, destru-la para desocupar memria. No Java, isso no acontece. Quando X deve cair fora, ela cai. E mais: se antes a varivel X ficava com lixo das atribuies de valor anteriores, hoje ao colocar um valor novo nela, ela automaticamente limpa. No fim, ficou muito mais fcil gerenciar memria.

No precisa se preocupar com suas variveis fantasmas. Eu guardo elas para voc!

WWW.FABIOSALVADOR.COM.BR

-

Pgina 10

Fbio Burch SalvadorClasses e objetosO que vem a ser uma classe? Uma classe aquilo que ser instanciado para a criao de objetos. No entendeu nada? Vamos ento explicao acadmica para essa coisa toda:

Explicao WikipdicaEm orientao a objeto, uma classe abstrai um conjunto de objetos com caractersticas similares. Uma classe define o comportamento de seus objetos atravs de mtodos e os estados possveis destes objetos atravs de atributos. Em outros termos, uma classe descreve os servios providos por seus objetos e quais informaes eles podem armazenar. Classes no so diretamente suportadas em todas as linguagens, e so necessrias para que uma linguagem seja orientada a objetos. Classes so os elementos primordiais de um diagrama de classes. Estrutura da classe Uma classe define estado e comportamento de um Objeto geralmente implementando mtodos e atributos (nomes utilizados na maioria das linguagens modernas). Os atributos, tambm chamados de campos (do ingls fields), indicam as possveis informaes armazenadas por um objeto de uma classe, representando o estado de cada objeto. Os mtodos so procedimentos que formam os comportamentos e servios oferecidos por objetos de uma classe. Outros possveis membros de uma classe so: * Construtores - definem o comportamento no momento da criao de um objeto de uma classe. * Destrutor - define o comportamento no momento da destruio do objeto de uma classe. Normalmente, como em C++, utilizado para liberar recursos do sistema (como memria). * Propriedades - define o acesso a um estado do objeto. * Eventos - define um ponto em que o objeto pode chamar outros procedimentos de acordo com seu comportamento e estado interno. Encapsulamento Em linguagens orientadas a objetos, possvel encapsular o estado de um objeto. Em termos prticos, isso se realiza limitando o acesso a atributos de uma classe exclusivamente atravs de seus mtodos. Para isso, as linguagens orientadas a objeto oferecem limitadores de acesso para cada membro de uma classe. Tipicamente os limitadores de acesso so: * pblico (public) - o membro pode ser acessado por qualquer classe. Os membros pblicos de uma classe definem sua interface. * protegido (protected) - o membro pode ser acessado apenas pela prpria classe e suas sub-classes. * privado (private) - o membro pode ser acessado apenas pela prpria classe. Cada linguagem de programao pode possuir limitadores de acesso prprios. Por exemplo, em Java, o nvel de acesso padro de um membro permite que qualquer classe de seu pacote (package) possa ser acessado. Em C#, o limitador de acesso interno (internal) permite que o membro seja acessado por qualquer classe do Assembly (isto , da biblioteca ou executvel).

Pgina 11

-

WWW.FABIOSALVADOR.COM.BR

Loucademia de Java Verso 1.0No exemplo abaixo, implementado em Java, a classe Pessoa permite o acesso ao atributo nome somente atravs dos mtodos setNome e getNome. public class Pessoa { public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } private String nome; } Herana A herana um relacionamento pelo qual uma classe, chamada de sub-classe, herda todos comportamentos e estados possveis de outra classe, chamada de super-classe ou classe base. permitido que a sub-classe estenda os comportamentos e estados possveis da super-classe (por isso este relacionamento tambm chamado de extenso). Essa extenso ocorre adicionando novos membros a sub-classe, como novos mtodos e atributos. tambm possvel que a sub-classe altere os comportamentos e estados possveis da super-classe. Neste caso, a sub-classe sobrescreve membros da super-classe, tipicamente mtodos. Quando uma classe herda de mais de uma super-classe, ocorre uma herana mltipla. Esta tcnica possvel em C++ e em Python, mas no possvel em Java e C#, no entanto estas linguagens permitem mltipla tipagem atravs do uso de interfaces.

Explicao no popularUma classe um pedao de cdigo que vai definir um molde para a gente construir objetos. Uma classe tem, basicamente, mtodos e atributos. Atributos so como variveis. Mtodos so como funes. Se voc no sabe o que so Variveis e Funes, volte a ler o material sobre Lgica da Programao. Um exemplo prtico: Vamos construir a classe PESSOA. ATRIBUTOS ==> NOME (texto), IDADE (nmero inteiro) e SEXO (texto) MTODOS ==> Mtodo ANIVERSARIO A idade da pessoa igual idade +1 (se era 20, passa a ser 21). Mtodo CIRGURGIA_NO_MARROCOS O sexo muda para Transexual timo, Agora, temos, uma classe com 3 atributos e 2 mtodos. Ento, eu vou escrever o cdigo principal do programa, aquele que ser executado linearmente (como acontecia nas linguagens Pascal, Clipper, Cobol, Basic, e todas as antigas). No cdigo principal, eu vou colocar uma instruo: A Varivel P armazenar um objeto do tipo PESSOA. P = Nova PESSOA; P.NOME = Joozinho; P.IDADE = 30; P.SEXO = Homem;

WWW.FABIOSALVADOR.COM.BR

-

Pgina 12

Fbio Burch SalvadorBom. Temos ento a varivel P, armazenando nossa PESSOA, o Joozinho, com 30 anos, Homem. Agora, vamos fazer o programa executar um mtodo do objeto P: P.ANIVERSARIO(); Ao executar este mtodo, o P vai auto-aumentar sua idade em 1 ano, ficando com 31 anos. Acontece que P um OBJETO do tipo PESSOA. Ele no est armazenado dentro da CLASSE PESSOA, ele foi gerado a partir dela, mas existe de forma independente. Depois disso, vou criar outro objeto, o P2, que tambm uma PESSOA: P2 = Nova PESSOA; P2.NOME = Claudinei; P2.IDADE = 20; P2.SEXO = Homem; Temos ento agora: Joozinho Homem 31 anos Claudinei Homem 20 anos Se eu mandar que o objeto P2 execute um mtodo: P2.ANIVERSARIO(); Ento agora, P2 aumentou sua idade em 1 ano. Ele tem 21 anos. Mas a idade de P continua em 31. E se eu ordenar que: P2.CIRURGIA_NO_MARROCOS(); Ento P2 mudar seu sexo para Transexual, embora P no sofra conseqncia alguma. Para entender: P e P2 so independentes. Eles podem fazer aniversrio em pocas diferentes, um deles pde trocar de sexo, e as funes executadas por um no vo afetar o outro. Eles so, contudo, semelhantes porque ambos tm os mesmos 3 atributos e 2 mtodos, embora cada um armazene atributos com valores diferentes e execute seus mtodos de forma completamente independente. Por qu interessante trabalhar com Orientao a Objetos? Porque eu posso criar a mesma classe PESSOA que eu criei no exemplo anterior, e criar um VETOR (se voc no lembra o que isso, volte a consultar o material de Lgica da Programao). Vetor V[100] de PESSOA (vai armazenar at 100 objetos do tipo PESSOA). V[0].NOME = Fredegundeson; V[1].NOME = Godofredilson; V[2].NOME = Juvenal Antena; V[3].NOME = Mendigo Pop;Pgina 13 WWW.FABIOSALVADOR.COM.BR

Loucademia de Java Verso 1.0E assim por diante... Alis, este o mecanismo usado pelos carrinhos de compras dos sites de e-commerce: existe uma classe PRODUTO que determina que todo produto vai ter certos atributos (preo, tipo, descrio, etc.), e ter alguns mtodos (somar_frete, adicionar_ao_carrinho, e assim por diante). E da o programa alimenta um Vetor de PRODUTOs e vai guardando na memria, sem envolver gravao de Banco de Dados. No final, quando o usurio resolve efetivar a compra, h a gravao de um dado efetivamente, sendo ento os dados armazenados no vetor de objetos dentro da base de dados. Em Java, tudo classe e objeto Em Java, at o prprio programa principal, aquele que roda e faz o resto das classe se mexer, uma classe ele prprio, e o cdigo central do software um mtodo. Veremos depois como fazer um programa funcional. Voc vai ter que criar classes para tudo e usar objetos de um monte de classes. A interface grfica, por exemplo, usa uma classe chamada JFrame. A JFrame uma classe que vem com a JDK e que monta janelinhas no estilo Windows. Esta classe tem atributos (cor de fundo, tamanho, etc.). Ento, eu crio um objeto a partir dela e manipulo estes atributos para obter a aparncia que eu quiser para o meu programa. Se voc ainda no entendeu nada No fique preocupado. Quem no tem facilidade para a teoria muitas vezes tem para a prtica. Vamos ento comear a trabalhar.

WWW.FABIOSALVADOR.COM.BR

-

Pgina 14

Fbio Burch Salvador Padres bsicos de programao JavaPrimeiro, preciso saber que Java uma linguagem case sensitive, ou seja, faz diferena digitar alguma coisa em letras maisculas ou minsculas. Ento, se quisermos usar uma JFrame e escrevermos ali JFRAME, nada vai dar certo.

Principais tipos de dadosJava trabalha com alguns tipos de variveis e dados. Se voc no sabe o que uma varivel volte a estudar o material de Lgica da Programao. int double boolean char String Nmero inteiro. Nmero com casas decimais. Apenas pode valer Verdadeiro ou Falso. Um caracter, que pode ser letra ou nmero ou sinal grfico. Uma srie de chars, formando uma frase ou texto.

Usando chavesSegundo, preciso saber como delimitamos blocos. Blocos so coisas, como por exemplo, o conteo de uma expresso condicional. Linguagens como o Pascal e o Basic utilizam palavras-chave para abrir e fechar blocos. Assim, um IF em Basic fica: IF X = 1 THEN // ALGUMA COISA ACONTECE END IF No java, porm, usamos chaves. Exatamente, chaves, aquelas que ns aprendemos a usar na quarta srie para delimitar clculos. If (x == 1) { // ALGUMA COISA ACONTECE }

Fazendo clculosDepois, precisamos saber como fazer clculos. Os sinais matemticos so os seguintes: + / * Soma Subtrao Diviso Multiplicao

S que para fazer clculos envolvendo uma certa hierarquia, no usamos parnteses, colchetes e chaves. Usamos apenas parnteses, uns dentro dos outros.

Pgina 15

-

WWW.FABIOSALVADOR.COM.BR

Loucademia de Java Verso 1.0ComparaesEm Java, faremos algumas comparaes de valores entre variveis. Ento, devemos conhecer os sinais usados: X == Y X != Y XY X =Y X igual a Y X diferente de Y X menor que Y X maior que Y X menor ou igual a Y X igual ou maior do que Y

Concatenando condiesEu posso exigir que, para alguma coisa ser executada, duas ou mais condies sejam verdadeiras. Para isso, uso a concatenao das condies utilizando principalmente trs sinais: && If ((Condio1) && (Condio2)) { Ser verdadeiro se a primeira condio for verdadeira e a segunda tambm for. Caso alguma delas falhe, toda a expresso ser FALSE. Exemplo: SE ((TIVER SOL) && (EU ESTIVER COM GRANA)) { VOU PRAIA } Ou seja, se fizer sol mas eu estiver duro, no vou praia. Se eu tiver dinheiro e chover, eu tambm no vou. S vou se estiver com dinheiro e fizer sol. || If ((Condio1) || (Condio2)) { Ser verdadeiro se qualquer das condies for verdadeira, mesmo que a outra no seja. Exemplo: SE ((HOUVER UM NIBUS) || (ARRUMAR CARONA)) { EU VOU } Ou seja, se eu arrumar um jeito de viajar, seja ele qual for, eu vou viajar. XOR If ((Condio1) && (Condio2)) { Ser verdadeiro se uma, e apenas uma, das condies for verdadeira. Exemplo: SE ((ELE GAY) XOR (ELE MULHER)) { ELE GOSTA DE HOMEM } Ou seja, para gostar de homem, OU o sujeito gay, OU mulher. Se for mulher E gay, nada feito lsbica e no gosta de homem. Se no for mulher nem gay, ento homem heterossexual e no gosta de homem.

WWW.FABIOSALVADOR.COM.BR

-

Pgina 16

Fbio Burch SalvadorMontando um programa simplesAntes de mais nada, vamos ver um pequeno diagrama que mostra como funciona o esquema que eu tentei explicar nos textos que lemos at agora:

Agora, vamos montar um programa finalmente. Abra a sua IDE e vamos comear a escrever. Desde os anos 80, h uma tradio que diz que o primeiro software desenvolvido por qualquer pessoa o famoso Ol Mundo. Ns vamos fazer um pouco diferente. Nosso primeiro programa exibir na tela uma frase que no seja essa tradicional, pois j est muito manjada. Ento, vamos l: public class prog { public static void main (String[]args) { System.out.println("Minha vingana ser maligna!"); } } O programa acima simplssimo. Na primeira linha, eu crio a classe PROG. Na segunda, inicio o mtodo MAIN, que ser o principal do nosso programa. No se preocupe em entender as palavras PUBLIC, STATIC e VOID pois h um farto material sobre isso mais adiante neste mesmo livro (ver Modificadores). O mtodo chamado MAIN sempre rodado como principal, por um padro existente na linguagem Java. Depois, eu tenho uma chamada classe SYSTEM.OUT, que lida com sadas de dados para o sistema. Eu rodo o mtodo PRINTLN, que significa mande essa frase para o prompt e quebre a linha, sendo que eu passei uma frase para ele exibir. Pronto! Temos um programa funcional!

Pgina 17

-

WWW.FABIOSALVADOR.COM.BR

Loucademia de Java Verso 1.0Sintaxes principaisLaos de repetioOs principais laos de repetio usados em Java so o FOR e o WHILE. Se voc no faz a mnima idia do que seja um Lao de Repetio, por favor reveja a matria de Lgica da Programao. FOR O FOR roda um determinado cdigo por um nmero limitado de vezes. A sintaxe de sua declarao um pouco confusa para quem nunca programou em Java, C ou PHP, mas bem simples. Ela composta de 3 elementos separados por ponto-e-vrgula. O primeiro elemento a criao e atribuio de valor iniciar a uma varivel que servir de contador. O segundo elemento a condio que precisa ser verdadeira para o lao continuar rodando. O terceiro elemento o comando de incremento da varivel. public class prog { public static void main (String[]args) { for (int x = 0; x