projeto aprenda em casa - curso java - completo - 22 modulos ptbr

127
Módulo de apostila : Java Número : 001 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Upload: rodrigo-vale

Post on 23-Oct-2015

33 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 001 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 2: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Vamos iniciar o estudo do Java, conhecendo um pouco da história do mesmo. Em 1991, um grupo de funcionários da Sun foi remanejado para uma filial desta, conhecida por Hill Road. Como sua primeira tarefa, tinham como objetivo o desenvolvimento de um projeto conhecido por “Projeto Green”, que tinha como principal objetivo à criação de tecnologias modernas de software para empresas eletrônicas de consumo. Uma das primeiras conclusões durante o processo de desenvolvimento foi a de que o sistema não poderia ficar preso a plataformas, pois os clientes não estavam interessados no tipo de processador que estavam utilizando, e fazer uma versão do projeto para cada tipo de sistema seria inviável em todos os sentidos, quando surgiu então como “solução” o sistema operacional GreenOS, com a linguagem de programação Oak. Em 1993 surgiu uma oportunidade para o grupo Green, que foi procurado pela empresa Time-Warner, que estava em busca de sistemas operacionais de decodificadores e tecnologias de video-on-demand (Conceito de TV a cabo na qual você não espera a hora da programação da emissora. Você mesmo determina qual programa que quer ver no momento; ou seja, toda a programação está disponível a qualquer momento). Tal fato ocorreu no mesmo período em que o NCSA lançou o MOSAIC 1.0, o primeiro navegador gráfico para Web. A FirstPerson apostou nos testes de TV da Time-Warner, mas esta empresa preferiu optar pela tecnologia oferecida pela Silicon Graphics. Depois de mais um fracasso de acordo com a 3DO a FirstPerson (novo nome do grupo Green) dissolveu-se, sendo que parte do pessoal foi trabalhar para a Sun Interactive com servidores digitais de vídeo e, a equipe restante continuou os trabalhos do projeto na Sun. Uma das características deste grupo de profissionais era o consumo em grande quantidade de café enquanto estavam trabalhando ... em maio de 1995 a Sun anunciou um ambiente denominado Java, homenagem às xícaras de café, que obteve sucesso graças a incorporação deste ambiente a browsers populares como o Netscape Navigator e padrões tridimensionais como o VRML (Virtual Reality Modeling Language - Linguagem de Modelagem para Realidade Virtual). A Sun considera o sucesso do Java na Internet como sendo o primeiro passo para utilizá-lo em decodificadores da televisão interativa, em dispositivos portáteis e outros produtos eletrônicos de consumo - exatamente como o Java tinha começado em 1991. Sua natureza portátil e o projeto robusto permitem o desenvolvimento para múltiplas plataformas, em ambientes tão exigentes como os da eletrônica de consumo. Quais as vantagens de se utilizar o Java? Existem muitas, dentre elas destacamos: • Portabilidade: O Java é uma linguagem interpretada, ou seja, pode ser executado em

qualquer plataforma ou equipamento que possua um interpretador Java, e que tenha sido especialmente compilado para o sistema a ser utilizado.

• Robustez: os recursos da linguagem e do ambiente para o tempo de execução garantem alta confiabilidade no código gerado.

• Segurança: além de proteger o sistema do cliente contra possíveis ataques não intencionais, o ambiente também deve proteger contra ações premeditadas. Vários

Page 3: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

estudados, avanços e novas tecnologias estão sendo aplicados para que a linguagem se desenvolva nesse sentido.

• Orientação a Objetos: Java é uma linguagem totalmente orientada a objetos, o que permite a herança e a reutilização de códigos de forma dinâmica e estática.

• Dinamismo: por ter um projeto orientado a objetos, o dinamismo faz parte da natureza do Java, o que permite a extensibilidade durante a execução.

• Alto Desempenho: a linguagem Java suporta vários recursos de alto desempenho, entre eles destacamos o multithreading, compilação just-in-time, utilização de código nativo, entre outros. O byte-code (iremos estudar sobre este item adiante) do Java possui um desempenho aproximadamente 15 vezes inferior que o de um código nativo do processador (entenda como linguagem de máquina), porém comparando-se com linguagens de Script ( HTML, JavaScript ou o VBScript), ou até mesmo o próprio byte-code do VB (Visual Basic), possui uma performance muitas vezes superior. Esta performance, pela quantidade de esforços aplicados sobre a sua otimização pelos desenvolvedores de Java, está cada vez mais sendo aumentada, podendo um dia comparar-se com uma linguagem compilada para o processador em específico (linguagem nativa). Vale lembrar que já foram criados processadores para suportar diretamente o byte-code da linguagem Java.

• Facilidade: É derivada da linguagem C e C++, possui um vasto material na Web para pesquisa e aprendizado (infelizmente a maior parte em inglês), o programador não tem a necessidade de gerenciar a memória e os ponteiros, etc...

E então, está convencido a utilizar o Java? A WWW manifestou-se como vírus, nasceu discretamente, e cresceu repentinamente, se expandindo em um prazo de tempo muito curto pelo mundo inteiro. As empresas encontram na Rede Mundial uma nova maneira de publicidade, as pessoas, uma nova maneira de comunicação. Com o grande acesso, cada dia mais se duplicam os números de endereços na internet, cada qual desejando chamar atenção dos usuários (entre tantas páginas da Web) ao serviço ou produto desenvolvido pela empresa. Isso exigiu e exige talento para diferenciar sua página das demais (o que não é uma tarefa muito fácil). Quanto maior a competição, melhor deverá ser a qualidade do seu site. Até que sugiram as páginas interativas, as chamadas Web inteligentes, criadas pelos programadores em linguagens tais como (C, C++, Visual Basic), que permitiam a interação com o usuário. Parecia tudo muito simples, porém as dificuldades logo surgiram. As linguagens de programação convencionais não são projetadas a princípio para serem executadas na Web, por esse motivo era necessário que o programador criasse suas próprias funções, o que resultaria em um trabalho árduo para realizar a simples tarefa de carregar imagens no seu navegador. Existe o problema também dos diferentes ambientes, ou seja, plataformas. Pois executáveis de programas convencionais não podem ser rodados em diferentes plataformas, e não são suportados por diferentes computadores. O java surgiu prometendo uma solução para solucionar todos esses problemas dos desenvolvedores para Web. Foi criado uma linguagem de multiplataforma que identifica o tipo de computador host ao servidor e envie o executável específico para o mesmo. Resumindo, o Java é uma linguagem de multiplataformas, independe de ambiente. Poderemos criar executáveis para diferentes

Page 4: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

ambientes, tais como Windows, Macintosh, Linux. Abaixo seguem dois gráficos comparando um programa tradicional de um programa Java: Programa Tradicional Compilador

Arquivo binário Windows

Progra Além carregcompuespeci O Javgráficcompiprocesvia oucompi(possuexecunão fu

Mac

Arquivo binário Mac

Linux

Windows

Arquivo binário Linux

ma Java:

deste conceito, o Java gera executáveis pequenos, que permitem o rápido amento da página Web, dá maior importância à segurança permitindo que o tador servidor tenha controle sobre o que será acessado pelo computador cliente, ficando o que poderá ou não ser acessado pelo mesmo.

a é uma linguagem de programação feita para ser utilizada em um ambiente de 32 bits o (portanto, não funciona no Windows 3.1/3.11 ou no MS-DOS puro). Possui um lador muito pesado e torna-se lento demais quando aplicado a máquinas de samento mais simples, como um 486 (que possui um processamento escalar de uma uma instrução sendo executada por ciclo de clock). O ideal é utilizar, tanto para a lação quanto para a execução de programas Java, uma máquina Pentium ou superior i um processamento superescalar de duas vias - paralelismo, duas instruções sendo

tadas no mesmo ciclo de clock). Isto não significa que um programa feito em Java ncione numa máquina 486.

Bytecode independente da plataforma

Interpretada (Windows)

Interpretada (Mac)

Interpretada ( Linux)

Page 5: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

É muito importante destacar que o Java não é uma linguagem exclusiva de programação para a Web. Com o Java poderemos gerar aplicativos comerciais complexos. Através da API de banco de dados do Java, conhecida por JDBC, o desenvolvedor tem uma interface padrão para acessar banco de dados relacionais. Citamos que uma das vantagens do Java é a orientação a objetos, vamos falar um pouco mais sobre este tópico em específico, para isso, vamos estudar as características da mesma. Para compreender corretamente o que significa, vamos começar estudando as classes. CLASSE Classe é a descrição de um grupo de objetos que possuam atributos e comportamentos iguais, e que se relacionam da mesma forma com os outros objetos. Para uma rápida compreensão, a estrutura de uma classe pode ser comparada com uma estrutura em C (struct), sendo que, entre outras características, uma classe pode possuir métodos (funções) e implementações de segurança (níveis de acesso). Os atributos das classes seriam as variáveis da estrutura. OBJETO Um objeto não é nada mais do que uma instância de uma classe, ou seja, um exemplar da classe instanciada representado na memória. Fazendo uma comparação com a estrutura da linguagem C (struct), podemos dizer que a classe seria a estrutura e o objeto seria a variável da estrutura. IDENTIDADE Embora os objetos da mesma classe tenham as mesmas características e funções, e talvez até os mesmos valores de atributos, cada nova instância da classe é representada separadamente na memória. ENCAPSULAMENTO Técnica que permite ocultar os atributos da classe, sendo que somente os métodos da classe própria podem ler ou alterar estes atributos. Isto faz com que não haja necessidade de saber como a classe foi implementada internamente, deixando que os métodos internos da classe se preocupem com isto.

Page 6: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

HERANÇA A herança permite que as classes compartilhem os seus atributos e métodos com outras classes, utilizando para isto um relacionamento esquematizado de forma hierárquica. Na herança existem dois tipos de classes que devem ser levadas em consideração: • superclasse: a classe da qual uma outra classe (subclasse) herda as suas características. • subclasse: a classe que herdou as características de uma outra classe (superclasse). Exemplo: java.lang.Object | +----java.awt.Component | +----java.awt.Container | +----java.awt.Window | +----java.awt.Dialog | +----java.awt.FileDialog POLIMORFISMO Uma subclasse pode implementar novamente um método ou atributo já implementado por uma classe da qual é herdeira.

Page 7: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Agora que você já tem uma pequena noção do que é o Java e como o mesmo opera, nosso próximo passo é saber como obte-lo na Web, para isso, siga os passos abaixo:

1. Acesse o site http://java.sun.com/j2ee/download.html, será apresentada o seguinte conteúdo no seu navegador:

2. Clique sobre o link “J2EETM SDK", você será levado a seguinte janela:

Page 8: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

3. Aqui você tem algumas notas sobre a versão, principalmente sobre a compatibilidade da mesma que, é compatível com as plataformas: Solaris, Windows NT, Windows 2000 Professional e Linux. Caso você esteja utilizando o Windows 98 ou ME, deverá procurar uma versão compatível no site para download. Não tente instalar esta nestes sistemas operacionais. Clique então no link “Software e Documentation”, você será levado a seguinte janela:

4. Neste ponto você deverá selecionar a plataforma que irá utilizar para executar o sistema. No nosso caso estamos realizando o download da versão para o Windows 2000. Selecione a sua na caixa de seleção SELECT A PLATFORM e em seguida, clique no botão CONTINUE, você será levado a seguinte janela:

Page 9: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

5. Nesta página você tem na verdade as cláusulas e condições para o uso do software que está baixando. Ao final desta página, clique sobre o botão ACCEPT. Você será então levado a seguinte página:

Page 10: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

6. Neste ponto, basta você clicar no botão FTP Download para que o download seja

iniciado, sendo então apresentada a seguinte janela:

7. Selecione a opção “SAVE THIS PROGRAM TO DISK”, será então apresentada a seguinte janela:

Page 11: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

8. Escolha uma pasta onde o arquivo será salvo e em seguida clique no botão SALVAR. O Download finalmente terá inicio, onde será apresentada a seguinte janela apresentando o progresso da operação:

9. Ao final deste procedimento, será apresentada a seguinte janela:

10. Clique no botão CLOSE. 11. Clique agora no botão “INICIAR” ... “EXECUTAR”; 12. Posicione o sistema na pasta onde você salvou o arquivo que acabou de baixar,

selecione o mesmo e clique em ABRIR;

Page 12: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

13. Ao clicar no botão de ABRIR, conforme orientado no procedimento anterior, o sistema irá retornar à janela EXECUTAR, clique então no botão OK:

14. O procedimento de instalação tem inicio, sendo exibida a seguinte janela:

15. Aqui o sistema está descompactando os arquivos necessários à instalação. Ao final deste procedimento, será apresentada a seguinte janela:

Page 13: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

16. Esta primeira janela é a famosa “Boas Vindas”. Clique no botão NEXT, será apresentada a seguinte janela:

17. Esta janela contém os termos de licença e uso do Software em instalação, caso concorde com os mesmos, clique no botão YES, será então apresentada a seguinte janela:

Page 14: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

18. Nesta janela você deverá indicar a pasta na qual o aplicativo será instalado. Aconselhamos deixar a opção padrão. Clique em seguida em <NEXT>, será então apresentada a seguinte janela:

Page 15: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

19. Na janela acima você deverá marcar o(s) componente(s) que será(ão) instalado(s). Deixe como mostra a figura acima. Clique no botão NEXT, será então apresentada a seguinte janela:

20. A barra de progresso indica o andamento do processo de instalação do software em questão. Ao final deste procedimento será apresentada a seguinte janela:

21. A janela acima indica que a instalação foi finalizada. Clique no botão FINISH, a instalação está concluída.

Page 16: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Antes de partir para o estudo da linguagem Java é importante conhecer alguns princípios básicos do ambiente de desenvolvimento do Java. Os sistemas em Java são formados por várias partes, conforme podemos observar na listagem abaixo:

• Um ambiente; • A linguagem; • As Applications Programming Interface – APIs; • Bibliotecas de classes.

Este esquema opera através das seguintes fases:

1. A fonte do programa (simplesmente programa) é gerada em um editor de textos qualquer, que tenha suporte para salvar os dados sobre o formato somente texto e salvo no disco do computador.

2. O programa deverá ser compilado, para que o compilador gere os bytecodes, armazenando os mesmos em disco e, tal solicitação deverá ser realizada através do comando JAVAC, a ser utilizado no Prompt de comando:

Page 17: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

3. Entra em cena o que chamamos de “carregador de classe”, que irá alocar os bytecodes gerados na memória do equipamento;

4. Agora será executado o “verificador de bytecode”, que terá a função de verificar se todos os bytecodes são válidos e que os mesmos não violam as restrições de segurança do Java;

5. Entra em cena o Interpretador Java, que irá ler os bytecodes e traduzi-los para uma linguagem que possa ser interpretada pelo equipamento (leia computador).

Logo podemos afirmar que são necessárias as fases seguintes para que o programa em Java possa ser executado:

Vale lembrar que na primeira etapa citada acima, o programa Java além de ser gerado em um editor de textos compatível com o modo “Somente texto”, deverá ser salvo com a extensão Java (nome_arquivo.java). Existem também os ambientes de desenvolvimento integrado, que podem facilitar a vida de programadores mais experientes, porém a principio vamos gerar nossos códigos em um editor de textos simples. Dentre os ambientes integrados de desenvolvimento, podemos destacar:

• Jbuilder da Borland; • Visual J++ da Microsoft.

Para executar o aplicativo Java (fase 5) através do Interpretador, utilizamos o comando JAVA, a ser seguido do nome do aplicativo e deverá ser digitado no Prompt de comando:

Page 18: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Quando falamos de Java e do carregador de classes, estamos na verdade nos referindo a dois tipos de programas para onde são carregados os arquivos .class:

• Aplicativos: podemos comparar um programa aplicativo a um programa de agenda eletrônica ou a uma planilha eletrônica, e este tem por característica o fato de ser carregado e executado no próprio computador do usuário;

• Applet: programas de pequeno porte, que na maioria das vezes estarão localizados em um computador remoto e que serão acessados pelos usuários através de um programa específico, o navegador Web. Neste momento os applets serão carregados no navegador através de sua comunicação com o computador remoto, executado no próprio navegador e descartado ao final da execução.

Sabendo destes detalhes, vamos ao nosso primeiro programa em Java. O programa terá um objetivo simples, o de enviar (imprimir) uma linha de texto no monitor de seu computador. Siga os passos abaixo:

1. Abra o seu editor de textos Bloco de Notas do Windows; 2. Digite na área de trabalho, a seguinte sequência de comandos:

Antes de compilar e executar o programa vamos explicar os códigos digitados um a um, para que você conheça a estrutura básica de um programa em Java. Primeira linha: public class Aula1 { Um programa Java, por mais simples que seja, deverá possuir pelo menos uma definição de classe (a ser informada pelo desenvolvedor). Observe que publicamos a definição de uma classe (class) e esta tem o nome de Aula1. Observe que iniciamos o nome da classe com uma letra maiúscula e, o Java diferencia letras maiúsculas e minúsculas e, não obedecer tal regra, com certeza irá gerar um erro de sintaxe adiante. O fato de iniciarmos o nome da classe com um caracter maiúsculo não se deu por acaso. Por convenção utilizamos esta regra: utilizar a primeira letra do nome de uma classe como maiúscula. A palavra chave Public não é padrão, ou seja, poderemos utilizar outras para definir classes, porém como estamos iniciando no Java, iremos a principio, utilizar apenas esta. Segunda linha: public static void main(String args[])

Page 19: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Aqui temos outra regra: um aplicativo Java começa automaticamente executando em main. Observe que este é seguido por parênteses, indicando que ele é um bloco de construção de programa, também conhecido por método. Poderemos ter um ou mais métodos, porém sempre teremos que ter o método conhecido por main (para aplicativos Java). Se este método for ignorado, o interpretador Java não terá condições de executar este aplicativo. Observe que antecedendo o main, temos a palavra-chave void, que neste caso indica que o método irá executar uma tarefa, porém não retornará nenhuma informação a outro objeto, quando a execução estiver finalizada. Terceira linha: { Aqui temos o inicio do corpo da estrutura de comandos do método. Assim como marcamos o inicio do corpo da estrutura de comandos do método, deveremos ter posteriormente o marcador de fim do corpo da estrutura “}” Quarta linha: System.out.println("Projeto Aprenda em Casa"); Aqui estamos solicitando para que o sistema efetue a impressão do conteúdo da String (“Projeto Aprenda em Casa”) na janela de comando (out.println). A linha completa acima é conhecida por instrução. Quinta linha: } Aqui temos o final do corpo da estrutura de comandos do método. Sexta linha: } Assim com tivemos o marcador de inicio e fim do corpo da estrutura de comandos do método, temos aqui o final do conteúdo da classe Aula1. Você deverá salvar o arquivo com a extensão JAVA e o mesmo deverá possuir o mesmo nome dado a classe, ou seja, Aula1.java, caso contrário não será possível a compilação de nosso programa. Em seguida, abra o prompt de comando e compile nosso programa:

Quando não existem erros na fonte a ser compilada, será gerado um arquivo com a extensão class, que terá justamente os bytecodes do java de nosso aplicativo e, em seguida, poderemos executar nosso aplicativo, através do comando:

Page 20: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr
Page 21: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 002 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 22: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

No módulo de aula anterior geramos nosso primeiro programa em Java, que tinha um objetivo simples, o de enviar uma linha de texto para a tela do computador. Para isso, utilizamos o comando System.Out.PrintLn... Uma variante deste comando seria o System.Out.Print que, tem o mesmo objetivo, porém não executa quebra de linha. Vamos criar nosso segundo exemplo em Java e ao mesmo tempo explicar a diferença entre estes dois comandos. Siga os passos abaixo:

1. Abra o seu editor de textos “Blocos de Notas”; 2. Digite a sequência de comandos abaixo:

3. Salve o arquivo como “exemplo2.java”:

4. Abra o prompt de comando e acione a pasta onde o arquivo “exemplo2.java” foi salvo:

Page 23: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

5. No prompt de comando, digite o comando javac + o nome do arquivo a ser compilado:

6. Ainda no prompt de comando, execute o programa exemplo2, que acabamos de compilar e não apresentou erros, através do comando “java exemplo2”.

Como resultado, você terá impresso na primeira linha o conteúdo “Projeto Aprendaemcasa” e, em linhas separadas, teremos o conteúdo “www.aprendaemcasa.com.br” e em outra o conteúdo “[email protected]”. A diferença entre os métodos “print” e “println” do comando System.out está no fato de que o primeiro não executa uma quebra de linha após a sua execução, procedimento este que ocorre no segundo método. Temos também uma outra forma de executar uma quebra de linha, sem que um novo comando System.out seja necessário. Observe o exemplo abaixo:

No Script acima estamos utilizando o que chamamos de caracteres especiais, que possuem funções específicas para os métodos print e println. Observe que no exemplo acima, os caracteres especiais são: /n O primeiro caracter, a barra invertida (\) é chamado de caracter de escape e é obrigatório o seu uso, seguido de um uma sequência de escape (neste caso o caracter n) para que uma determinada ação seja executada.

Page 24: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Veja na tabela abaixo, os caracteres especiais possíveis para o método Print e PrintLn: Sequência escape Objetivo \n Indica a quebra de linha, ou seja, o cursor da tela será posicionado no

inicio da próxima linha livre. \t Faz com que o cursor seja movido para a próxima parada de tabulação. \r Realiza o que chamamos de retorno de carro, ao seja, o cursor volta para

o inicio da linha atual (sem que ocorra a quebra). \\ Possibilita a impressão do símbolo de barra invertida, caso seja

necessário \” Possibilita a impressão do caracter aspas duplas. Assim como em outras linguagens de programação, na Java também utilizamos as variáveis e, o trabalho com as mesmas está diretamente ligado com alguns conceitos de memória. Quando iniciamos uma variável, na verdade estamos criando uma posição na memória do computador e, cada variável passa a ter:

o Um nome; o Um tipo de dado que irá armazenar; o Um tamanho; o Um valor; o Uma posição na memória.

Ao determinar um valor a uma variável, este passará a fazer parte da referida posição de memória e, caso já exista um valor anterior armazenado, o mesmo irá substitui-lo, em outras palavras, o valor anterior será destruído. Ao ler o valor de uma variável (posição de memória), o processo é apenas de consulta e, ao contrário do que citamos anteriormente, o valor não é destruído. Veja abaixo exemplos de declarações de variáveis no Java: ... ... String primeironome, sobrenome; Int numero1, numero2, soma; ... ... soma = numero1 + numero2; ... ... Observe que na primeira linha estamos declarando duas variáveis do tipo String, que são:

Page 25: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

o primeironome; o sobrenome.

Em seguida estamos declarando três variáveis do tipo numéricas, que são:

o numero1; o numero2; o soma.

Quando declaradas, as variáveis já ocupam uma posição de memória, que passará a ser referenciada pelo nome atribuído a mesma. A principio estas terão apenas um nome de referência e um tipo de dado. Durante a execução do Script é que o valor que a mesma irá armazenar lhe será atribuído, como por exemplo, na linha em que é lançado à variável SOMA o conteúdo (processo de leitura) da variável NUMERO1 somado (operação aritmética) ao conteúdo (processo de leitura) da variável NUMERO2. Assim como as variáveis, as operações aritméticas são comuns em qualquer linguagem de programação, e não poderia ser diferente no Java. Na tabela abaixo você tem a listagem dos principais operadores aritméticos a serem empregados em seus programas Java: Operador Java Função Exemplo de expressão no

Java + adição Numero1 + 10; - subtração Numero1 – 10; * multiplicação Numero1 * 10; / divisão Numero1 / 10; % módulo Numero1 % Numero2; Assim como em outras linguagens em programação, no Java as expressões aritméticas deverão ser escritas sobre a forma de linha reta e, os parênteses são empregados no Java utilizando-se da mesma lógica empregada nas expressões algébricas. Como por exemplo: Queremos dividir por C, o resultado da soma de A com B, assim sendo, escreveríamos o seguinte código: C/(A+B); As seguintes regras são seguidas no que se diz respeito a precedência de operadores:

1. Os operadores contidos nas expressões relativas aos pares de parênteses serão executados primeiro;

2. Com base na regra 1, os parênteses devem ser empregados para forçar a ordem de avaliação das expressões, segundo a necessidade do desenvolvedor;

Page 26: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

3. No caso de parênteses aninhados, os operadores constantes no par mais interno de parênteses serão aplicados primeiramente;

4. A seguinte tabela contém a ordem de execução das operações: Operador Função Precedência ( ) parênteses Avaliados primeiro e, em caso de aninhamento de pares

de parênteses, a expressão do par mais interno será processada primeiro. Dentro de cada par de parênteses, as expressões serão avaliadas da esquerda para a direita.

* / % Multiplicação, divisão e módulo

Avaliados após a ordem dos pares dos parênteses e, em caso de incidência destas operações, serão avaliados da esquerda para a direita.

+ - Soma e subtração Avaliados por último e, em caso de incidência destas operações, serão avaliados da esquerda para a direita.

É aconselhado o uso de pares de parênteses em expressões aritméticas, mesmo que a construção da mesma seja simples e não os exija, pois tal prática torna as expressões aritméticas mais fáceis de serem lidas e o código se torna mais fácil de ser interpretado.

Usando classes pré-definidas Os primeiros exemplos que desenvolvemos no nosso curso utilizaram a saída padrão do prompt de comando, porém a grande maioria dos sistemas visa utilizar a interface gráfica e amigável que caracterizou o ambiente Windows. Um dos recursos mais simples neste sentido são as janelas (caixas) de diálogo para exibir a saída de dados (mensagens ao usuário). O Java2 inclui uma classe conhecida por JOptionPane, que tem por finalidade proporcionar ao desenvolvedor o uso de caixas de diálogo para que se possa exibir informações que se julgue importante. Veja no exemplo abaixo o uso de uma caixa de diálogo para exibir uma simples mensagem ao usuário:

Page 27: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

** listagem exibida na janela acima: import javax.swing.JOptionPane; public class exemplo4 { public static void main ( String args[] ) { JOptionPane.ShowMessageDialog ( null,"Projeto\nAprenda\nem\nCasa"); system.exit( 0 ); } } O Java2 tem como característica um rico conjunto de classes predefinidas e, o desenvolvedor poderá utilizar as mesmas ao invés de ter que gerar (criar) todo o código necessário para alcançar seus objetivos. Digite o código acima, salve o arquivo como “exemplo4.java", compile e execute o programa. Uma das facilidades do Java está relacionada com o aproveitamento das classes já disponíveis na linguagem, facilitando assim a vida do desenvolvedor que, ao invés de ter de “fabricar o pneu do carro”, deverá apenas “encaixá-lo” na roda para que em seguida possa sair “rodando” com o mesmo. O programa acima é um típico exemplo deste recurso. Vamos explicar linha a linha os passos executados (exceto as linhas de comandos que já conhecemos). import javax.swing.JOptionPane; A linha acima é na verdade uma instrução Import. Este comando na verdade tem duas funções:

1. Identificar a classe requerida; 2. Carregar a classe requerida para posterior compilação.

Na verdade estaremos utilizando uma janela de avisos (gráfica), que é obtida através da classe JoptionPane e, esta classe está contida em um pacote de classes chamado de javax.swing. O nome do pacote é representado fisicamente por uma pasta no disco. Os pacotes da Java API são normalmente armazenados no diretório JAVAX, que por sua vez é dividido em diversos outros diretórios, entre eles o swing. JOptionPane.ShowMessageDialog ( null,"Projeto\nAprenda\nem\nCasa"); A linha acima informa ao compilador que carregue a classe JoptionPane, que faz parte do pacote carregado na linha estudada acima. O pacote em questão contém classes conhecidas por GRAPHICAL USER INTERFACES – GUIS. Se você programa em Delphi, provavelmente irá relacionar o comando acima ao famoso:

Page 28: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Application.Messagebox .... Aqui teremos uma janela de aviso padrão, onde o título desta não será exibido (pois inserimos no local de referência do título o parâmetro NULL e, a mensagem da janela de diálogo será a frase PROJETO APRENDA EM CASA, apresentada com quebra de linhas. system.exit( 0 ); Em seguida forçamos o término da execução do programa através do comando EXIT, da classe system. Importante: Ao utilizar uma interface gráfica, será necessário o uso do comando acima pára forçar o término do aplicativo. A classe empregada no comando acima é a SYSTEM, que faz parte do pacote JAVA.LANG. Mas você deve estar perguntando: Porque não importamos o pacote de classes JAVA.LANG, assim como fizemos com o pacote JAVAX.SWING? A resposta é simples: alguns pacotes de classes são carregados automaticamente pelo Java, entre eles o JAVA.LANG; O principal objetivo das últimas páginas deste módulo de aula foi de apresentar ao aluno o que são pacote de classes, como carregá-los e encerrá-los. Tais conhecimentos serão fundamentais no decorrer do curso. Vamos imaginar um exemplo simples, onde o usuário irá entrar com dois números e o sistema irá apresentar a soma destes dois números. Veja a fonte abaixo: import javax.swing.JOptionpane; public class Soma { public static void main ( String args[] ) { String numero1, numero2; int num1, num2, total; numero1 = JOptionpane.showInputDialog(“Digite um numero:”); numero2 = JOptionpane.showInputDialog(“Digite um segundo numero:”); num1 = Integer.parseInt (numero1); num2 = Integer.parseInt (numero2); total = num1 + num2; JOptionpane.ShowMessageDialog(null,”A soma dos numeros e” + total, “Resultado total”,JOptionPane.PLAIN_MESSAGE); System.exit(0); } }

Page 29: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Na fonte acima apresentamos uma série de novidades. A primeira delas está na declaração de variáveis em programas Java. A sintaxe para este procedimento é a seguinte: Tipo_variável lista_variáveis_separadas_por_virgula; Na primeira linha criamos duas variáveis (numero1 e numero2) do tipo String e, na segunda linha criamos três outras variáveis (num1, num2 e total). Para que uma variável seja utilizada no decorrer de um programa Java, ao contrário de outras linguagens de programação, deverá ser declarada antes do seu uso/emprego. Em seguida uma outra novidade, o uso de janelas gráficas para a entrada de dados, conforme mostra a linha abaixo: numero1 = JOptionpane.showInputDialog(“Digite um número:”); Nesta sintaxe, será exibida uma caixa de diálogo padrão com uma caixa de edição, para que você possa inserir dados via teclado. Existirá uma frase antes ou acima da caixa de edição, que é justamente a String apresentada pelo desenvolvedor. Esta String orienta o usuário no tipo de informação que deverá ser fornecida. O conteúdo digitado pelo usuário será armazenado na variável numero1 (neste caso). O mesmo ocorre na linha seguinte, sendo que o conteúdo será armazenado na variável numero2. Observe que as variáveis numero1 e numero2 são do tipo String, ou seja, não podem sofrer nenhuma espécie de processamento aritmético. Mas como fazer se necessitamos somar o valor das duas entradas? Aqui temos uma outra novidade, o uso de funções. Observe as linhas abaixo: num1 = Integer.parseInt (numero1); num2 = Integer.parseInt (numero2); Aqui estamos na verdade “jogando” para a variável num1 e num2 o conteúdo das variáveis numero1 e numero2 respectivamente, transformados de string para números inteiros. Em seguida estamos armazenando na variável total a soma das duas variáveis (num1 e num2)

total = num1 + num2;

Posteriormente estamos exibindo em uma caixa de diálogo o resultado desta soma: JOptionpane.ShowMessageDialog(null,”A soma dos numeros e” + total, “Resultado total”,JOptionPane.PLAIN_MESSAGE);

Page 30: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Vimos até este ponto alguns modelos de caixa de diálogo padrão do Java. Veja na tabela abaixo os tipos existentes: Tipo de janela objetivo JOptionPane.ERROR_MESSAGE Tem o objetivo de exibir uma janela de diálogo

com uma mensagem de erro ao usuário JOptionPane.INFORMATION_MESSAGE Tem o objetivo de exibir uma janela de diálogo

do tipo mensagem de informação ao usuário JOptionPane.WARNING_MESSAGE Tem o objetivo de exibir uma janela de diálogo

do tipo mensagem de advertência ao usuário JOptionPane.QUESTION_MESSAGE Tem o objetivo de exibir uma janela de diálogo

do tipo interrogação (pergunta) JOptionPane.PLAIN_MESSAGE Exibe uma janela de diálogo simples, contendo

apenas uma mensagem. Esta é a única janela de diálogo que não possui um ícone próprio de representação

Veja os exemplos a seguir:

1) No primeiro exemplo (fonte a seguir), estamos utilizando uma janela de diálogo do tipo INFORMATION_MESSAGE:

import javax.swing.JOptionPane; public class Grafico1 { public static void main ( String args[] ) { JOptionPane.showMessageDialog (null, "Curso Java", "Projeto Aprenda em Casa", JOptionPane.INFORMATION_MESSAGE); System.exit(0); } } Ao compilar o exemplo acima, teremos como resultado a seguinte janela de diálogo:

Vamos a algumas considerações:

a) Ao utilizar o parâmetro INFORMATION_MESSAGE, automaticamente será adicionado o ícone representado pela letra (I), conforme podemos observar no gráfico;

b) A segunda String da linha de comando do JOptionPane representa a frase que será apresentada no interior da janela de diálogo;

c) A terceira String da linha de comando do JOptionPane representa a frase que será apresentada como linha de título da janela de diálogo.

2) Veja agora um exemplo com uma caixa de diálogo do tipo WARNING_MESSAGE:

Page 31: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

import javax.swing.JOptionPane; public class Grafico1 { public static void main ( String args[] ) { JOptionPane.showMessageDialog (null, "Area Exclusiva para Socios", "Projeto Aprenda em Casa", JOptionPane.WARNING_MESSAGE); System.exit(0); } }

Vamos a algumas considerações:

a) Observe que neste tipo de janela de diálogo, o ícone é representado por um sinal de exclamação (advertência).

b) Os demais parâmetros são os mesmos.

3) Vamos agora a um exemplo do tipo QUESTION_MESSAGE: import javax.swing.JOptionPane; public class Grafico1 { public static void main ( String args[] ) { JOptionPane.showMessageDialog (null, "Confirma Exclusao Registro?", "Projeto Aprenda em Casa", JOptionPane.QUESTION_MESSAGE); System.exit(0); } } Veja o resultado do código executado:

Observe que nos demais modelos, o que realmente altera é o ícone que representa o tipo de caixa de diálogo. Vamos a um exemplo prático com o ERROR_MESSAGE: import javax.swing.JOptionPane; public class Grafico1 { public static void main ( String args[] ) {

Page 32: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

JOptionPane.showMessageDialog (null, "Voce nao esta autorizado a acessar esta area do site", "Projeto Aprenda em Casa", JOptionPane.ERROR_MESSAGE); System.exit(0); } } Veja abaixo o resultado do código executado:

Page 33: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 003 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 34: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

No módulo de aula anterior. Você saberia definir o que é uma variável? E constantes, você saberia definir o que é uma constante? No mundo da programação de computadores, independente da linguagem a ser utilizada, sempre iremos nos deparar com constantes e variáveis.

Constantes

Como o próprio nome diz, constante é uma área de memória, que recebe um nome de identificação e que após declarada, não terá o seu valor alterado. O exemplo típico de uma constante seria utilizado para definir o índice de desconto máximo de um determinado produto. Como regra as constantes devem ser declaradas e inicializadas no mesmo momento. Veja um simples exemplo de declaração/inicialização de constantes abaixo: class Exemplo1 { public static void main (String args[]) { final int ndias = 365; System.out.println ("Uma pessa de 15 anos ja viveu "+(15*ndias)+" dias"); } } Ao executar o arquivo acima, teremos como resultado:

Observe os passos que foram seguidos para declarar uma constante: Primeiro utilizamos a palavra chave FINAL (indicando que estamos declarando uma constante), em seguida o tipo de dado da constante (número inteiro), após o nome da constante (ndias) e por fim o valor desta constante. Sempre que o sistema encontrar NDIAS durante a interpretação do código irá ter como resultado o valor 365. Observe que citamos o tipo, ou seja, o tipo de dados que a constante irá representar/armazenar. No Java temos os seguintes tipos primitivos de dados: Tipo Espaço ocupado Valores possíveis char 2 bytes Armazena apenas um caracter, podendo este ser um

caracter de controle. String variável Armazena Strings de caracter boolean 1 byte True ou False float 4 bytes 3,4E-38 a 3,4E+38

Page 35: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

double 8 bytes 1,7E-308 a 1,7E+308 byte 1 byte -128 a 127 short 2 bytes -32.768 a 32767 int 4 bytes -2.147.483.648 a 2.147.383.647 long 8 bytes -9.223.372.036.854.775.808 a

9.223.372.036.854.775.807 Lembrando que os tipos das variáveis devem ser escritos em letras minúsculas. Observe agora o exemplo abaixo: class Exemplo1 { public static void main (String args[]) { final float ndias = 365; System.out.println ("Uma pessa de 15 anos ja viveu "+(15*ndias)+" dias"); } } Observe que alteramos a constante (ndias) do tipo INT para FLOAT e, ao executar o programa teremos o seguinte resultado:

Quando declaramos a constante como sendo um número do tipo ponto flutuante, ela assume automaticamente casas decimais. Sendo assim é muito importante definir uma constante como sendo do tipo adequado ao processamento que será realizado.Observe o outro exemplo abaixo: class Exemplo1 { public static void main (String args[]) { final byte ndias = 365; System.out.println ("Uma pessa de 15 anos ja viveu "+(15*ndias)+" dias"); } } Ao compilar o arquivo acima, teremos o seguinte erro: C:\Arquivos de programas\Xinox Software\JCreator LE\MyProjects\Exemplo1.java:3: Incompatible type for declaration. Explicit cast needed to convert int to byte. final byte ndias = 365; ^

Page 36: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

1 error O erro se dá pelo motivo de que uma constante do tipo byte armazena valores na faixa de –128 a 127 e, o valor atribuído supera estes limites.

Variáveis

Uma variável ao contrário de uma constante, poderá armazenar diversos valores durante a execução de um programa, ou seja,é um espaço reservado na memória do computador para armazenar um determinado tipo de dados. No Java a declaração de uma variável poderá ocorrer em qualquer ponto do programa, desde que antes de sua utilização. Uma variável pode ser declarada sem receber um valor inicial ou recebendo um valor inicial, de acordo com a necessidade do operador. As variáveis podem assumir o mesmo tipo de dados citados acima quando estudamos as constantes. Para formar o nome de uma variável deveremos observar as regras abaixo:

a. Iniciar por uma letra do alfabeto; b. Os demais caracteres podem ser letras, números ou sublinhado.

Estas regras também valem para os nomes de constantes. Ao declarar uma variável você deverá definir o tipo de dados, o nome da variável e se for o caso, o valor inicial da mesma. Observe o exemplo abaixo: class Exemplo1 { public static void main (String args[]) { int ndias = 365; System.out.println ("Uma pessa de 15 anos ja viveu "+(15*ndias)+" dias"); } } Na verdade temos o mesmo exemplo utilizado para ilustrar as constantes, porém com o uso de variáveis. Se você já conhece outra linguagem de programação, com certeza sabe o que é um vetor ou uma array. Este termo é utilizado para especificar um grupo de posições continuas e ordenadas na memória do micro (entenda por variáveis com divisões), que possuem o mesmo nome e o mesmo tipo e, cada um dos elementos é identificado por um número.

Page 37: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Imagine uma casa, onde teoricamente pode residir uma família. Agora imagine um bloco (prédio residencial), aqui poderemos ter várias famílias residindo, sendo que cada uma ocupa uma determinada posição (apartamento), identificada por um determinado número (número do apartamento). Temos aqui um mesmo tipo de construção (mesmo nome de variável), com um mesmo objetivo, o de alocar famílias (mesmo tipo de dado), sendo que para cada família (cada valor a ser armazenado), teremos um espaço físico próprio (espaço de memória) e este espaço, será identificado por um número do apartamento (número de identificação do array/vetor). Ficou mais claro? Temos dois tipos de arrays:

• Unidimensional -> aquele que possui um único índice de identificação. Neste caso é chamado de vetor;

• Matriz -> aqueles que possuem mais de uma dimensão. Veja abaixo exemplos de vetores: Nome [0] Nome [1] Nome [2] Observe que temos uma mesma variável (NOME), porém como a mesma foi dividida, ela passou a ser um vetor, porque possui uma única dimensão de divisão. Veja abaixo exemplos de matrizes: Valorvenda [0] [0] Valorvenda [0] [1] Valorvenda [0] [2] Valorvenda [1] [0] Valorvenda [1] [1] .... .... Observe que dividimos a parte 0 do vetor Valorvenda em três outras partes, o mesmo ocorrendo para a parte 1, ou seja, temos aqui mais de uma dimensão (divisão). É importante lembrar que, em termos práticos, o primeiro elemento de um vetor ou matriz é o zero ( 0 ). Para que você utilize um array em seu sistema, deverá obedecer três etapas:

1. Declaração; 2. Inicialização; 3. Instanciar.

Veja alguns exemplos abaixo de declaração de um array:

Page 38: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

String nome[]; Float valorvenda [] []; Veja abaixo alguns exemplos para instanciar um array: String nome = new String[10]; Float valorvenda [3] [3]; Para lançar um valor a um array, basta proceder como nas variáveis, porém você deverá citar o número do índice que irá recebe-lo. Veja o exemplo abaixo, onde declaramos e em seguida instanciamos uma array: public class Programa4 { public static void main (String args[]) { String nome[] = new String[3]; nome[0] = "Paulo"; nome[1] = "Henrique"; nome[2] = "Matuszewski"; System.out.println ("Seu sobre nome e " + nome[2]); } } Observe o resultado em tempo de execução:

Vamos agora gerar um erro proposital, como por exemplo, tentar utilizar um índice fora dos limites estipulados na declaração. Observe o erro que será gerado:

Page 39: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Observe que o erro é gerado em tempo de execução e não em tempo de compilação. Veja outro exemplo com o uso de vetores abaixo: public class Programa4 { public static void main (String args[]) { int numeros[] = new int[3]; int soma; numeros[0] = 32; numeros[1] = 10; numeros[2] = 54; soma = (numeros[0]+numeros[1]+numeros[2]); System.out.println("A soma dos numeros e :" + soma); } } Observe o resultado na execução deste programa:

Page 40: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Observe outra forma de escrever o mesmo código acima: public class Programa4 { public static void main (String args[]) { int numeros[]; numeros = new int[3]; int soma; numeros[0] = 32; numeros[1] = 10; numeros[2] = 54; soma = (numeros[0]+numeros[1]+numeros[2]); System.out.println("A soma dos numeros e :" + soma); } } Você notou a diferença? No primeiro exemplo da fonte em teste executamos o seguinte procedimento: int numeros[] = new int[3]; Neste declaramos e instanciamos o vetor em uma mesma linha, o que não ocorre no exemplo abaixo: int numeros[]; numeros = new int[3]; Assim como em outras linguagens de programação, no Java temos uma série de funções matemáticas. Como regra geral temos a seguinte sintaxe para o emprego das funções matemáticas em Java: Math.nome_função(argumento) Antes de gerarmos qualquer exemplo, vamos a uma listagem das principais funções matemáticas existentes no Java: Função Objetivo Math.abs Retorna o valor absoluto de um número Math.sqrt Retorna o valor da raiz quadrada de um número Math.round Retorna o número oferecido como parâmetro, arredondado

para o seu inteiro seguinte Math.floor Arredonda o valor de um número para baixo Math.ceil Arredonda o valor de um número para cima Math.min(lista valores) Retorna o menor valor de um conjunto de números

Page 41: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Math.max(lista valores) Retorna o maior valor de um conjunto de números (int)(Math.random()) Retorna um valor aleatório Vamos gerar um exemplo abaixo onde iremos simular o sorteio dos números de uma loteria qualquer, como por exemplo, a MegaSena: public class Programa6 { public static void main (String args[]) { int sorteado; int contador; for (contador = 1; contador <=6; contador++) { sorteado = (int)(Math.random()*60); System.out.println ("Numero"+contador+"Sorteado "+sorteado); } } } Observe que a principio geramos um Loop, que será executado 6 vezes e, em cada uma das vezes que o loop for executado, será sorteado um número de 1 à 60, número este que será armazenado na variável “sorteado”. Em seguida, iremos enviar para a janela de Prompt do DOS a string na qual será apontado o número sorteado, conforme podemos observar na figura abaixo:

Vamos a um outro exemplo: public class Programa6 { public static void main (String args[]) { System.out.println("Funcao abs de 10.7 igual a "+Math.abs(10.7)); System.out.println("Funcao abs de -10.7 igual a "+Math.abs(-10.7)); System.out.println("Funcao floor de 10.7 igual a "+Math.floor(10.7)); System.out.println("Funcao ceil de 10.7 igual a "+Math.ceil(10.7)); } }

Page 42: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Aqui teremos como resultado o que segue:

Page 43: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 004 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 44: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Vamos neste módulo de aula estudar sobre as estruturas de controle do Java. A principio um programa de computador emprega o modo de execução sequêncial para ler/executar os comandos, ou seja, as linhas de comando são executadas uma a uma, através de ordem crescente pela qual foram escritas. Este método pode ser alterado através do emprego das estruturas de controle, ou seja, o código poderá ter a sua execução sequêncial interrompida, até que uma determinada condição seja alcançada. Estes modos de execução de um programa são chamados de estruturas de controle, que podem ser dos seguintes tipos básicos:

• Estrutura sequencial; • Estrutura de seleção; • Estrutura de repetição.

A estrutura sequêncial foi citada no inicio deste módulo. Já para a estrutura de seleção, o Java disponibiliza três destas:

1. If 2. If/Else 3. Switch

Para a estrutura de repetição, o Java disponibiliza três destas:

1. While 2. Do ... While 3. For

Os comandos acima são considerados pela linguagem como “Palavras chave” e, estas não poderão ser empregadas para nomear uma variável por exemplo. As palavras chave do Java podem ser observadas na listagem abaixo: abstract boolean break byte case catch char class continue default do double else Extends false final finally float For if implements import instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient true try void volatile while const goto

Page 45: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

As estruturas de seleção são empregadas para determinar, através de uma condição especifica, se um trecho de código será ou não executado. Por exemplo, só será concedido o crédito a consumidores que tiverem um salário superior à R$ 2.000,00. Neste caso, teremos algo (dentro do código e em linguagem de programação) parecido com o que segue: Se salário_consumidor for maior ou igual a 2000,00 então conceda o crédito Final da condição. Este tipo de condição poderá ser empregada na linguagem Java através do emprego do comando IF (se). A sintaxe desta estrutura pode ser observada abaixo: if (condição){ lista de comandos a serem executados em caso positivo } Veja um simples exemplo abaixo: public class aula12 { public static void main (String args[]) { int salario; salario = 2300; if (salario >= 2000) { System.out.println("Este consumidor podera adquirir o produto atraves de financiamento"); } } } Ao executarmos este pequeno programa teremos o seguinte resultado:

A linha de impressão só foi executada pois a comparação dentro da estrutura IF é verdadeira, ou seja, a variável “salario” possui um valor maior ou igual à R$ 2.000,00. Vamos alterar o valor do teste, conforme podemos observar abaixo:

Page 46: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

public class aula12 { public static void main (String args[]) { int salario; salario = 1999; if (salario >= 2000) { System.out.println("Este consumidor podera adquirir o produto atraves de financiamento"); } } }

Observe que a frase não foi impressa, pois o comando que realiza esta função só será executado caso a comparação seja verdadeira e, no exemplo acima o valor da variável “salario” é 1999 e o teste para ser verdadeiro deverá ter o valor da variável em questão igual ou superior a 2000. Poderemos empregar também a sintaxe deste comando através de uma estrutura aninhada, onde serão estadas múltiplas condições, onde serão impostas novas condições IFs para uma condição ELSE. Observe o exemplo abaixo: import javax.swing.JOptionPane; public class Programa6 { public static void main (String args[]) { String idade; int vota; idade=JOptionPane.showInputDialog("Qual a sua idade?"); vota = Integer.parseInt( idade ); if (vota < 16) { JOptionPane.showMessageDialog(null,"Você não poderá votar nas próximas eleicoes","Atencao",JOptionPane.INFORMATION_MESSAGE); } else if (vota>15 && vota<18) { JOptionPane.showMessageDialog(null,"O seu voto nas proximas eleicoes e opcional","Atencao",JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null,"O seu voto e obrigatorio nas proximas eleicoes","Atencao",JOptionPane.INFORMATION_MESSAGE); } } }

Page 47: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Observe que no exemplo acima temos na verdade um outro IF no caso do primeiro teste realizado ser falso, iremos testar outra condição (não uma negativa). Ou seja, empregando a técnica acima você estará oferecendo três alternativas ao seu sistema:

• A primeira caso a idade entrada seja inferior a 16 anos; • A segunda caso a idade entrada seja superior a 15 e inferior a 18; • A terceira caso a idade entrada seja superior a 18.

Observe que utilizamos o operador lógico && (and), ou seja, para que se tenha como resultado uma resposta verdadeira, as duas expressões constantes da expressão lógica devem ser verdadeiras. Observe que no exemplo acima, tivemos um processo de múltipla escolha e, dependendo do número de opções a serem especificadas na estrutura IF pode tornar a escrita do comando inviável. Se você necessitar escolher um entre diversos outros valores, sendo que para cada valor temos um código específico, poderá empregar a estrutura SWITCH ... CASE. A sintaxe deste comando é observada abaixo: switch (expressão) { case valor1: lista de comandos a serem executados; break; case valor2: lista de comandos a serem executados; break; case valor3: lista de comandos a serem executados; break; case valor4: lista de comandos a serem executados; break; } Observe o exemplo abaixo: import java.util.Date; public class Programa6 { public static void main (String args[]) { int dia; Date dt_atual = new Date(); dia = dt_atual.getMonth(); switch(dia) { case 0: System.out.println("estamos no mes de janeiro"); break; case 1: System.out.println("estamos no mes de fevereiro"); break; case 2: System.out.println("estamos no mes de marco"); break; case 3: System.out.println("estamos no mes de abril");

Page 48: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

break; case 4: System.out.println("estamos no mes de maio"); break; case 5: System.out.println("estamos no mes de junho"); break; case 6: System.out.println("estamos no mes de julho"); break; case 7: System.out.println("estamos no mes de agosto"); break; case 8: System.out.println("estamos no mes de setembro"); break; case 9: System.out.println("estamos no mes de outubro"); break; case 10: System.out.println("estamos no mes de novembro"); break; case 11: System.out.println("estamos no mes de dezembro"); break; } } } Observe que no exemplo acima temos um total de 12 condições (valores diferentes) para uma mesma variável e, o objetivo é de apenas exibir a mês atual por extenso. Aqui temos algumas novidades, entre elas a importação do pacote java.util.Date, para que possamos extrair a data atual e a função getMonth(), onde podemos extrair o mês da data atual. Se você precisar extrair o dia da semana ao invés do número do mês, deverá trocar a função getMonth() pela função getDay(). Observe que a numeração do mês, assim como a numeração do dia da semana, sempre começa do zero (0), assim sendo, o mês de agosto nesta função é representado pelo número 07. Vamos começar nossos estudos das estruturas de repetição:

ESTRUTURA DE REPETIÇÃO WHILE

Esta estrutura tem como lógica fundamental o “execute enquanto uma determinada condição for verdadeira”. Sua sintaxe pode ser observada abaixo: while (condição) { lista de comandos a serem executados enquanto condição do while for verdadeira }

Page 49: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Observe o exemplo abaixo: public class Programa5 { public static void main (String args[]) { int contador = 1; int soma = 0; while (contador<11) { soma=soma+contador; System.out.println("Valor : "+contador); contador=contador+1; } System.out.println("------------"); System.out.println("Soma dos valores = " + soma); } } O primeiro passo foi declarar duas variáveis como numéricas e inteiras (contador e soma), sendo que a primeira tem valor inicial igual a 1 e a segunda igual a 0. Em seguida criamos um laço (sequência de comandos que será executada um determinado número de vezes), sendo que a condição deste laço é executar enquanto o valor de contador for menor que 11. O bloco que será executado enquanto o contador for menor que 11 diz que, primeiro iremos acumular o valor de contador na variável soma. Em seguida iremos enviar para o vídeo o valor da variável contador antecedido da frase “Valor :” e em seguida iremos incrementar a variável contador em uma unidade. De um em um, chegará um momento que a variável contador não será mais menor que 11 e, neste caso, o laço será quebrado (abandonado) e a sequência de execução passa a valer a partir da próxima linha ao final do laço, ou seja, aquela na qual solicitamos que seja enviado para o vídeo uma série de caracteres de subtração (string) e em seguida o valor da variável soma. Veja o resultado deste programa em tempo de execução:

Page 50: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Agora vamos provocar um erro proposital em nosso sistema, retirando a linha que efetua o incremento (soma de uma unidade a mais) para a variável contador. Teremos então: public class Programa5 { public static void main (String args[]) { int contador = 1; int soma = 0; while (contador<11) { soma=soma+contador; System.out.println("Valor : "+contador); } System.out.println("------------"); System.out.println("Soma dos valores = " + soma); } } Observe o resultado em tempo de execução:

Page 51: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Teremos aqui um loop eterno. Observe que a condição para a execução do laço é ... faça enquanto contador for menor que 11 ... A variável contador é iniciada com valor 1 (valor menor que 11) e, dentro do laço não temos nenhum incremento em seu valor, ou seja, ela sempre terá o valor 1, valor este que permite a execução do laço. Para interromper a execução do programa, basta pressionar as teclas <CTRL>+<C> simultâneamente. Cuidado para não cometer este tipo de erro quando for construir um laço, ou seja, a de criar um laço eterno. Observe outra forma de escrever o incremento do valor da variável contador: public class Programa5 { public static void main (String args[]) { int contador = 1; int soma = 0; while (contador<11) { soma=soma+contador; System.out.println("Valor : "+contador); contador++; } System.out.println("------------"); System.out.println("Soma dos valores = " + soma); } } Veja outra modificação no código acima: public class Programa5 { public static void main (String args[]) { int contador = 1; int soma = 0; while (contador>11) { soma=soma+contador; System.out.println("Valor : "+contador); contador++; } System.out.println("------------"); System.out.println("Soma dos valores = " + soma); } }

Page 52: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Observe que no exemplo acima, o laço não foi executado nenhuma vez. Motivo: A variável contador tem valor inicial igual a zero (0). A condição para a execução do laço é executar enquanto o valor da variável contador for maior que onze (11). Isso será impossível, devido ao valor inicial da variável ao entrar na condição do laço. Com o que foi exposto acima, podemos concluir que o laço da estrutura While poderá nunca ser executado, dependendo das circunstâncias, pois o teste é executado antes do inicio da execução da estrutura.

ESTRUTURA DE REPETIÇÃO DO...WHILE

Ao contrário do WHILE, nesta estrutura o laço sempre será executado pelo menos uma vez, pois o teste condicional para a execução dos comandos que fazem parte do loop se dá ao final da estrutura, conforme podemos observar a seguir: public class Programa5 { public static void main (String args[]) { int contador = 1; int soma = 0; do { soma=soma+contador; System.out.println("Valor : "+contador); contador=contador+1; } while (contador<11); System.out.println("------------"); System.out.println("Soma dos valores = " + soma); } }

Page 53: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Observe que o resultado final é o mesmo, porém vamos alterar o Script para a condição abaixo: public class Programa5 { public static void main (String args[]) { int contador = 1; int soma = 0; do { soma=soma+contador; System.out.println("Valor : "+contador); contador=contador+1; } while (contador>11); System.out.println("------------"); System.out.println("Soma dos valores = " + soma); } } Veja o resultado na execução:

Observe que pelo fato do teste condicional do laço ser executado ao final da estrutura em si, pelo menor uma vez a mesma será executada e, foi o que ocorreu no caso. Portanto empregue esta estrutura quando quiser que o laço seja executado pelo menos uma vez, independente da condição geral imposta pelo sistema.

Page 54: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 005 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 55: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Neste módulo vamos dar inicio ao estudo dos Appets Java. Até o momento, os exemplos que desenvolvemos eram executados e tinham as suas saídas direcionadas ao Prompt de comando ou pela Interface gráfica do Java, sendo que o Applet é executado no APPLETVIWER ou também através de um navegador Web. O Java quando instalado, oferece uma série de applets exemplos. Os exemplos normalmente são instalados no

guinte diretório: se

Cada um dos Java Applets de exemplo vem acompanhado de suas respectivas fontes e, a medida que o seu conhecimento da linguagem Java for ampliando, você terá nestas fontes

ma ótima fonte de pesquisa: u

Page 56: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Para executar um Applet, você deverá proceder da seguinte forma:

1) Abra o Prompt de comando; 2) Acesse a pasta que contém o Applet a ser executado; 3) Digite o seguinte comando: appletviewer nome_arquivo.html:

Page 57: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Este procedimento fará com que o appletviewer carregue o arquivo HTML especificado na linha de comando citada. Observe este applet em execução:

Agora que você sabe o que é um applet, iremos no próximo módulo de aula estudar os passos necessários para criar um applet.

Page 58: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 006 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 59: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Vamos gerar nosso primeiro Applet para conhecer os passos necessários à sua criação. Observe a fonte abaixo:

A principio (linhas 1 e 2) importamos as classes que serão necessárias para a execução do Applet que acabamos de gerar. A classe importada de fundamental importância neste xemplo é a JApplet do pacote swing.

pplet). Quando tilizamos esta sintaxe estamos na verdade utilizando dois tipos de classes:

• A classe derivada -> que irá herdar características da classe principal.

as aracterísticas, sendo muito mais simples apenas fazer herdar as mesmas na nova classe.

oid informa que este método não irá retornar nenhum sultado ao completar a sua tarefa.

e de G. Este objeto é utilizado para possibilitar o desenho de agens gráficas no Applet.

e Assim como nos exemplo anteriores, cada applet java a ser gerado é composto de uma definição de classe no mínimo e, na linha 3 do exemplo acima, estamos iniciando uma nova classe, chamada de Exemploapplet. O parâmetro extends JApplet informa à classe que iremos herdar características semelhantes a esta classe (uma classe au

• A super classe -> classe principal da estrutura (JApplet);

Em outras palavras, podemos afirmar que a nova classe (Exemploapplet) que herda dados e métodos da superclasse somados aos novos recursos que serão especificados abaixo. Mas herdar o que da classe principal (super classe)? Os navegadores que irão exibir o Applet necessitam de características especiais para que possam “rodar” o applet e, são essas características que serão herdadas. Seria muito trabalhoso você programar todas as estc Entre a linha 5 e a linha 7 temos o corpo de definição da classe e das linhas 4 a 8 temos a definição de Paint, que é na verdade um método com o objetivo de desenhar imagens gráficas na tela e, a palavra-chave vre Os parâmetros do método PAINT são informados entre parênteses na mesma linha (número 04). Os parâmetros passados informam que o método Paint irá requerer o objeto da classe Graphics que receberá o nomim

Page 60: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Observe também na mesma linha que utilizamos a palavra-chave public para que o ppletviewer passa chamar o método Paint.

ploapplet.class. A nte do arquivo HTML que tem esta função pode ser observada abaixo:

e=”Exemploapplet.class” width=400 height=50>

/html>

na esma pasta onde o applet foi gerado. Após este procedimento basta digitar o comando:

ppletviewer Exemploapplet.htm

No próximo módulo de aula iremos gerar outros applets de exemplo.

a Agora teremos que gerar o arquivo HTML que irá carregar a classe Exemfo <html> <applet cod</applet>< Este arquivo deverá ser salvo com o nome Exemploapplet.htm e, deverá estar presente m a

Page 61: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 007 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 62: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Antes de gerarmos novos exemplos de Java applets, vamos a algumas dicas sobre alguns erros comuns quando se começa a desenvolver em Java neste sentido:

1. Nunca esqueça de finalizar a tag <APPLET> com </APPLET>. Quando trabalhamos apenas com o HTML puro, a página pode ser normalmente exibida se esquecermos de finalizar determinadas Tags, ou seja, algum conteúdo, mesmo que fora do esperado/planejado, dados serão exibidos no navegador. Ao esquecer da tag de encerramento </APPLET>, impossibilita que o Applet seja carregado no Appletviewer ou em seu navegador Web.

2. Caso ao executar o seu applet tenha recebido a seguinte mensagem de erro: MissingResourceException, esta mensagem pode estar vinculada a um dos erros de procedimento a seguir:

a. Verifique a Tag <APPLET>, ela deve conter a mesma sintaxe apresentada no Script anterior, caso contrário o erro será gerado;

b. Verifique se, por erro de digitação foram inclusos na tag <APPLET> caracteres especiais como pontos ou virgulas.

3. O appletviewer requer sempre um arquivo HTML, com a tag <APPLET> para carregar um applet.

4. O arquivo a ser executado pelo Appletviewer deverá ser sempre um arquivo com a extensão HTML ou HTML.

5. Os arquivos resultantes de todos os procedimentos seguidos (CLASS, HTML, etc...) deverão estar localizados em um mesmo diretório.

Consideramos importante também a título de fonte de pesquisa e estudos, alguns sites que tratam sobre Java Applets. Entre vários destacamos:

• www.java.sun.com/applets/index.html o Site da Sun contendo applets gratuitos para a imediata utilização em sites da

Web, applets de exemplo para a plataforma J2SDK. • www.java.sun.com/jdc/

o Aqui você encontrará listas de discussão, fóruns, tutoriais, cursos on-line, etc...

Page 63: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Vamos gerar outro exemplo de Java Applet, onde iremos gerar linhas e strings em uma janela de diálogo. Observe o exemplo abaixo:

• Na linha 01 estamos importando a classe JApplet; • Na linha 02 estamos importante a classe Graphics; • Nas linhas 03 e 04 estamos definindo as classes e, o método paint tem seu inicio; • Neste ambiente gráfico, temos as coordenadas de x,y sabendo que:

o Coordenada x representa a posição horizontal; o Coordenada y representa a posição vertical do objeto a ser desenhado.

• Na linha 6 estamos solicitando o desenho de uma linha reta, que vá da coluna 10 linha 20 até a coluna 200 linha 20. (linha reta e horizontal);

• Na linha 7 estamos solicitando o desenho da String (“Projeto Aprenda em Casa”), na coluna 10 linha 30;

• Na linha 8 estamos solicitando o desenho de outra linha reta, que vá da coluna 10 linha 40 até a coluna 200 linha 40.

Sugerimos a visita aos sites citados para melhor compreender o desenvolvimento de JavaApplets.

Page 64: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 008 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 65: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Antes de começarmos a estudar o desenvolvimento de aplicativos Java com acesso a banco

ara armazenar os dados em um computador, normalmente são empregados os Softwares

emos em nosso site um curso completo de Access 2000 (sugerimos que o aluno baixe e

bserve abaixo a cópia de uma tela do Access com o exemplo de uma tabela:

de dados, deveremos conhecer um pouco sobre banco de dados, SQL, ODBC, etc... Sem um mínimo conhecimento a respeito destes assuntos, não teremos como prosseguir em nosso curso. Pconhecidos por SGBDs (Sistemas Gerenciadores de Banco de Dados), ou seja, programas que administram os dados que deverão ser armazenados eletronicamente. Testude o curso citado). Conforme podemos observar neste curso, o banco de dados é formado por uma série de objetos e, o objeto responsável pelo armazenamento dos dados é a tabela. Um banco de dados é formado por uma ou mais tabelas (normalmente muitas tabelas). As tabelas são divididas em assuntos, ou seja, teremos uma tabela para cadastrar os clientes, outra para cadastrar as contas a pagar e receber, outra para cadastrar os fornecedores e assim sucessivamente. Cada tabela possui uma formação básica constituída de linhas e colunas. As colunas são campos que identificam uma determinada informação que a tabela irá armazenar, como por exemplo o nome do cliente (campo NOME), o CPF do cliente (campo CPF), o número da carteira de identidade do cliente (campo RG), e assim sucessivamente. Já as linhas (conhecidas em sistemas mais antigos por registros) são formadas por um conjunto de colunas (campos) devidamente preenchidos, ou seja, ao cadastrar um cliente (dar um nome, um CPF, um RG, etc...), estamos gerando uma linha na tabela (registro). O

cima temos uma tabela que possui 6 registros (linhas) e, cada linha é formada pelo

baixo temos a figura da visualização da estrutura da tabela:

Aconjunto de campos CODIGO (que armazena um suposto código de aluno) e ALUNO (que armazena o nome do aluno). A

Page 66: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

s tabelas por sua vez possuem um nome que identificam a mesma e, neste caso temos a

este módulo de aula não vamos detalhar a forma de criar tabelas no Access, maiores

pós criar o banco de dados, você deverá criar o que chamamos de front-ends, que são

ocê já ouviu falar em SQL? Provavelmente sim, porém aqui vamos apresentar alguns

xistem diversas formas de emprego dos comandos que compõe a linguagem SQL, dentre

• EMBUTIDA -> Quando o SQL é invocado dentro de uma linguagem; mentas que

s comandos mais comuns do SQL são:

• SELECT -> para selecionar um conjunto de dados; s;

a tabela;

ferecemos um curso gratuito de SQL Server 7 em nosso site e, em determinados pontos

Atabela “ALUNO”. Observe o nome da tabela na barra de título da janela. Ndetalhes no curso disponível em nosso site com o título de “Access 2000” ou “Access XP”. Aprogramas que, através de sua interface, permitem manipular as informações das tabelas de um ou mais banco de dados (incluir novos dados, alterar dados cadastrados, etc...). No nosso curso iremos utilizar o Java e o SQL para gerar os Front-ends. Vdetalhes principais sobre o assunto. O SQL é uma linguagem de consulta. Sua sigla significa Structured Query Language. Esta linguagem é empregada para possibilitar a comunicação de um programa e o banco de dados manipulado pelo mesmo. Eelas destacamos:

• RAD -> geradores de aplicações, que nada mais são do que ferraproporcionam gerar de forma automática rotinas e/ou aplicações, gerando automaticamente o código para o programa e acesso aos dados.

O

• CREATE TABLE -> para criar a estrutura das tabela• INSERT -> para inserir dados em tabelas; • UPDATE -> para atualizar os dados de um• DELETE -> para excluir os dados de uma tabela; • DROP TABLE -> para excluir uma tabela.

Osão vistos comandos da linguagem SQL. Aconselhamos o estudo do mesmo, caso você não tenha experiência com esta linguagem.

Page 67: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Para que possamos interagir o banco de dados e o seu programa (front-end), será necessário o emprego de um mecanismo que forneça esta tecnologia (imagine uma ponte que liga duas cidades, a cidade chamada de “Programa” e a cidade chamada de “Banco de dados” e, por esta ponte passarão os carros (dados) que irão movimentar o comércio local das duas cidades (programa)). Para tal finalidade empregamos um Driver, ou seja programa que possibilita a comunicação entre um banco de dados e o seu programa. Existem diversos Drivers no mercado, cada um desenvolvido por um determinado fabricante. Um dos mais conhecidos mecanismos para tal fim é o ODBC, em destaque na figura abaixo:

sigla ODBC significa “Open Database Connectivity” e, é um sistema com grande Avariedade de drivers para acesso a banco de dados. Aqui encontramos drivers (mecanismos que possibilitam a comunicação de programa – banco de dados) do antigo dBase III Plus, aos mais modernos SGBDs, como o Oracle. Observe graficamente como o ODBC opera:

Page 68: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Além do ODBC (o mais utilizado), para quem trabalha com o Java tem disponível o JDBC

as qual deverei usar, o ODBC ou o JDBC? O JDBC é mais simples de ser configurado e,

(Java Database Connectivity), que é a interface que proporciona o acesso a banco de dados relacionais através de aplicações Java. Mpor ser nativo do próprio Java torna sua aplicação mais rápida (este tempo de processamento só será notado em sistemas que tenham um grande volume de dados). No próximo módulo de aula iremos estudar como configurar o Driver.

Page 69: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 009 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 70: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Neste módulo de aula vamos aprender a configurar uma fonte de dados ODBC (mais

1. Clique na opção de menu <INICIAR>;

NTROLE>; ícone <FERRAMENTAS

5. um clique duplo no ícone FONTE DE DADOS ODBC.

utilizada atualmente no mercado). Para configurar esta fonte de dados, siga os passos abaixo:

2. Vá até a opção <CONFIGURAÇÕES>; 3. Dê um clique na opção <PAINEL DE CO4. Na janela que se abre, dê um clique duplo no

ADMINISTRATIVAS>; Na janela que se abre, dêNeste ponto será apresentada a seguinte janela:

6. Selecione a guia <USER DNS>; s que será utilizado no sistema a ser desenvolvido

8. a:

7. Selecione o tipo de banco de dado(no nosso exemplo iremos trabalhar com o banco de dados MS Access); Clique sobre o botão CONFIGURE, será então apresenta a seguinte janel

Page 71: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

9. Na janela acima você deverá configurar a sua fonte de dados, preenchendo os

• Nome da fonte de dados -> digite o nome (apelido) que será dado a sua fonte

• descrever o objetivo da

• pela fonte

seguintes campos:

de dados e, este nome será utilizado para concretizar a ligação entre seu aplicativo e o banco de dados aqui configurado. Neste exemplo vamos chamar a fonte de dados de APRENDAEMCASA; Descrição -> nesta caixa de edição você poderá fonte de dados. O preenchimento deste campo não é obrigatório; Para selecionar o banco de dados Access (MDB) a ser utilizadoque recebeu o nome “aprendaemcasa”, clique no botão “Selecionar”. Ao clicar neste botão, será apresentada a seguinte janela:

Page 72: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

• Nesta janela você deverá posicionar o sistema na pasta e selecionar o banco de dados que será utilizado no sistema. Após selecionar o mesmo, clique no botão OK. Observe como ficou a janela de configuração do sistema:

10. Clique no botão OK. Neste momento a sua fonte de dados está criada, conforme podemos observar no gráfico abaixo:

11. Neste ponto você pode fechar o administrador ODBC, sua fonte de dados está gerada.

Ocorre em alguns casos do Driver que você deseja utilizar não estar listado (instalado) na guia USER DSN do administrador de ODBC. Se ocorrer esta situação em seu equipamento, proceda da seguinte forma:

Page 73: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

1. Abaixo você vê a janela do USER DSN:

2. Clique no botão ADD, será então apresentada a seguinte janela:

3. Selecione o Driver a ser instalado e clique em <CONCLUIR>. De acordo com o banco de dados selecionado, será aberta uma janela específica e, no caso do banco de dados Access, será aberta a janela representada pela figura 02 apresentada neste módulo de aula, onde o aluno deverá prosseguir normalmente com a configuração do sistema.

Page 74: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

No próximo módulo de aula iremos estudar os procedimentos para realizar a conexão com o banco de dados através do Java e um banco de dados Access que iremos criar.

Page 75: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 010 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 76: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Vamos então gerar o nosso primeiro exemplo em Java com acesso a banco de dados. Para

1. Crie um banco de dados no Access com o nome de “Agenda”; inte estrutura:

este exemplo, siga os passos abaixo:

2. Crie uma tabela com o nome de “PESSOAFISICA” com a segu

3. Crie uma fonte e dados ODBC que aponte para esta tabela, com o nome de “Ag”:

4. Para criar uma conexão com o banco de dados em sua aplicação Java, você deverá

5. a classe que possibilita a comunicação com um banco

port java.sql.*;

6. Após declarar a classe que irá manipular o banco de dados, deveremos preparar as

ido da expressão

b. resenta o nome do usuário cadastrado para acessar o banco de

c. do usuário cadastrado para acessar o banco de

seguir a seguinte sequência: O primeiro passo é importar de dados. Este passo deverá ser tomado antes da classe que irá trabalhar com o referido banco. Tal procedimento se dá através da seguinte linha de comando:

im

variáveis que irão representar os seguintes dados (do tipo String): a. String que representa o nome da fonte de dados, preced

“jdbc:odbc:”; String que repdados. Se o banco de dados não possuir restrição de acesso, deveremos ter aqui uma String nula (vazia); String que representa a senha dados. Se o banco de dados não possuir restrição de acesso, deveremos ter aqui uma String nula (vazia);

Page 77: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

7. Em seguida deveremos montar a expressão que irá carregar o driver que representa

lass.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

8. Após este procedimento, deveremos criar uma variável que irá representar a

onnection variável_conexao

9. Deveremos estabelecer então a conexão com o uso da variável que acabamos de

ariável_conexao = DriverManager.getConnection(var1, var2, var3)

Sendo que VAR1 representa a variável com o nome da fonte de dados, VAR2 que

10. s demais procedimentos são aqueles que irão realizar a manipulação dos dados

11. ários, deveremos fechar a conexão, através do

ariável_conexao.close();

amos a um exemplo completo abaixo:

o banco de dados a ser utilizado no programa. Esta linha tem a seguinte sintaxe:

C

conexão e, esta variável deverá ser precedida da palavra reservada “Connection”, através do emprego da seguinte sintaxe:

C

criar no procedimento anterior e, as três variáveis citadas no item 6, através do emprego do seguinte comando/sintaxe:

v

representa a String que contém o nome do usuário e VAR3 que representa a String que contém o nome do usuário. O(inclusão, alteração, exclusão, etc...) Após todos os procedimentos necessseguinte comando:

v V

Page 78: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

bserve que no exemplo acima empregamos um método para a verificação de erros. O

o executar este pequeno exemplo, teremos o seguinte resultado:

Obloco que está entro da área TRY é tratado e, caso algum erro ocorra, o sistema será automaticamente desviado para ao bloco catch(Exception e), onde informamos que a conexão não foi realizada com sucesso. A

amos propositadamente alterar o nome da fonte de dados para um nome inexistente e, em Vseguida compilar e executar o programa. Observe o resultado:

Page 79: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Após compilado:

gora que já sabemos gerar a conexão com uma base de dados, no próximo módulo de aula Airemos aprender a manipular informações nas tabelas do banco de dados.

Page 80: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 011 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 81: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Vamos neste módulo de aula aprender a trabalhar com comandos SQL para manipular os dados de um banco de dados através de um programa Java. Já temos um banco de dados criado e uma tabela gerada. Vamos a principio gerar um exemplo que irá inserir linhas (registros) na respectiva tabela. Observe o código abaixo: import java.sql.*; class Incluidados { public static void main (String args[]) { try { String fonte = "jdbc.odbc.ag"; String usuario = ""; String senha = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conecta; conecta = DriverManager.getConnection(fonte,usuario,senha); Statement cmd = conecta.createStatement(); cmd.executeUpdate("INSERT INTO pessoafisica (Nome, Email, Fone) VALUES ('Paulo Henrique Matuszewski','[email protected]','39296154')"); System.out.println("Inclusão concretizada na tabela do banco de dados"); cmd.close(); conecta.close(); } catch(Exception e) { System.out.println("Erro na inclusao de dados na tabela. Verifique sintaxe"); } } } Ao executar o Script acima, teremos como resultado uma nova linha em nossa tabela do banco de dados Os passos seguidos para alcançar este objetivo foram:

Importamos o pacote de classes que implementam o acesso a banco de dados em programas Java:

import java.sql.*;

Iniciamos a nossa classe, ou seja, a que representa o programa que estamos criando: class Incluidados { public static void main (String args[]) {

Criamos as variáveis que irão representar a conexão com o banco de dados, o nome do usuário e senha do mesmo:

String fonte = "jdbc.odbc.ag"; String usuario = ""; String senha = "";

em seguida, carregamos o driver que será utilizado pela aplicação Java com o objetivo de concretizar a comunicação com o banco de dados:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Page 82: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Após este passo estamos criando a variável que representará efetivamente a nossa conexão:

Connection conecta;

Na linha abaixo estamos estabelecendo a conexão através do emprego das variáveis criadas anteriormente e, pelo fato da linha estar dentro de um Try, caso ocorra algum erro será apresentada a mensagem constante da cláusula Exception:

conecta = DriverManager.getConnection(fonte,usuario,senha);

Em seguida estamos criando uma variável que passa a ser compatível com comandos que irão operar em banco de dados e suas tabelas e, a tabela passa a fazer parte do banco de dados representado pela variável de conexão “conecta”:

Statement cmd = conecta.createStatement();

O próximo passo é gerar o comando SQL a ser executado e executar este, através do método executeUpdate:

cmd.executeUpdate("INSERT INTO pessoafisica (Nome, Email, Fone) VALUES ('Paulo Henrique Matuszewski','[email protected]','39296154')");

Em seguida estamos apenas informando ao usuário que a inclusão do registro na tabela “pessoafisica” foi realizado com sucesso e em seguida, liberando as variáveis cmd e conecta que representam um comando e uma conexão com um determinado banco de dados:

System.out.println("Inclusão concretizada na tabela do banco de dados"); cmd.close(); conecta.close(); Exercício: empregando esta mesma sintaxe, desenvolva uma rotina que irá criar uma tabela no banco de dados, através do comando CREATE TABLE do SQL. Em caso de dúvidas, consulte o curso completo de SQL Server 7, disponível no link “cursos gratuitos” de nosso site.

Page 83: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 012 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 84: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Vamos neste módulo de aula empregar uma consulta do tipo seleção (SELECT) do SQL.

port java.sql.*;

c void main (String args[]) {

g fonte = "jdbc:odbc:ag";

bc.JdbcOdbcDriver");

pessoafisica");

as.next()) { s.getString("nome") + " - ");

t.println("Final da listagem");

ption e)

ystem.out.println("Problemas na conexão, verifique procedimento");

s procedimentos aqui adotados são similares aos dos módulos anteriores, sendo que, após

Vamos gerar um pequeno exemplo onde todas as linhas e colunas da tabela “pessoafisica” serão exibidos: imclass Listadados { public stati try { Strin String usuario = ""; String senha = ""; Class.forName("sun.jdbc.od Connection conexao; conexao = DriverManager.getConnection(fonte,usuario,senha); Statement conecta = conexao.createStatement(); ResultSet linhas = conecta.executeQuery("Select * FROM while (linh System.out.print(linha System.out.print(linhas.getString("Email") + " - "); System.out.println(linhas.getString("Fone") + " - "); } System.ou conecta.close(); conexao.close(); } catch(Exce { S } } } Ocriar a conexão, criamos uma variável do tipo ResultSet (esta é similar a um Recordset do VB ou um Dataset do C#), onde teremos nesta variável uma representação na memória do equipamento das linhas retornadas pela execução do comando SELECT que acompanha a sua sintaxe. Estes registros recuperados pelo comando SELECT serão armazenados na variável LINHAS e, em seguida, criamos um Loop, sendo que o mesmo possui o comando NEXT(), ou seja, iremos ler a primeira linha e em seguida, montar os dados obtidos pela mesma (nome, e-mail e fone). Estes dados foram extraídos do ResultSet pelo parâmetro GetString somado ao nome do campo que queremos extrair a informação. Em seguida passaremos para a seguida linha (devido ao comando NEXT(), ou seja, próxima linha e, assim sucessivamente até lermos todos os registros da tabela.

Page 85: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Se você quiser uma listagem ordenada por um determinado campo da tabela, poderá alterar

port java.sql.*; tic void main (String args[]) {

g fonte = "jdbc:odbc:ag";

bc.JdbcOdbcDriver");

onnection(fonte,usuario,senha);

essoafisica order by nome");

s.next()) { s.getString("nome") + " - ");

.println("Final da listagem");

ption e)

ystem.out.println("Problemas na conexão, verifique procedimento");

o seu Script conforme o que segue: imclass Listadados { public sta try { Strin String usuario = ""; String senha = ""; Class.forName("sun.jdbc.od Connection conexao; conexao = DriverManager.getC Statement conecta = conexao.createStatement(); ResultSet linhas = conecta.executeQuery("Select * FROM p while (linha System.out.print(linha System.out.print(linhas.getString("Email") + " - "); System.out.println(linhas.getString("Fone") + " - "); } System.out conecta.close(); conexao.close(); } catch(Exce { S } } }

lgumas observações: Observe que estas linhas estarão disponíveis na memória do Aequipamento para manipulação. Se você não for trabalhar com todos os campos da tabela, é interessante utilizar ao invés da sintaxe SELECT * FROM TABELA, a sintaxe SELECT <lista de campos separados por vírgula> FROM TABELA. Imagine que iremos trabalhar apenas com os campos NOME e EMAIL da tabela PESSOAFISICA, assim sendo, poderíamos utilizar a seguinte estrutura:

Page 86: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

import java.sql.*;

void main (String args[]) {

c:odbc:ag";

.JdbcOdbcDriver");

nnection(fonte,usuario,senha);

il FROM pessoafisica order by nome");

s.getString("nome") + " - ");

tion e)

Problemas na conexão, verifique procedimento");

class Listadados { public static try {

g fonte = "jdb Strin String usuario = ""; String senha = "";

c Class.forName("sun.jdbc.odb Connection conexao; conexao = DriverManager.getCo Statement conecta = conexao.createStatement(); ResultSet linhas = conecta.executeQuery("Select nome, ema

s.next()) { while (linha System.out.print(linha System.out.print(linhas.getString("Email") + " - "); }

println("Final da listagem"); System.out. conecta.close(); conexao.close(); } catch(Excep {

ystem.out.println(" S } } }

Page 87: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 013 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 88: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

É comum no entanto, gerar consultas com seleção parcial de dados, de acordo com um

port java.sql.*;

c void main (String args[]) {

fonte = "jdbc:odbc:ag";

bc.JdbcOdbcDriver");

onnection(fonte,usuario,senha);

M pessoafisica WHERE

has.next()) {

.getString("nome") + " - ");

t.println("Final da listagem");

ption e)

stem.out.println("Problemas na conexão, verifique procedimento");

bserve que a única novidade aqui está na estrutura do comando SELECT do SQL, onde

e você quisesse aplicar uma pesquisa que buscasse todos os alunos que tivessem o nome

filtro qualquer, que poderá ser empregado juntamente com a cláusula SELECT. Vamos imaginar que queremos selecionar apenas as linhas na qual temos os alunos que comecem o seu nome com “Paulo”, poderemos então escrever o seguinte código: imclass Listadados { public stati try { String String usuario = ""; String senha = ""; Class.forName("sun.jdbc.od Connection conexao; conexao = DriverManager.getC Statement conecta = conexao.createStatement(); ResultSet linhas = conecta.executeQuery("Select * FROnome LIKE 'Paulo%'"); while (lin System.out.print(linhas System.out.print(linhas.getString("Email") + " - "); System.out.println(linhas.getString("Fone") + " - "); } System.ou conecta.close(); conexao.close(); } catch(Exce { Sy } } } Oempregamos a cláusula WHERE (utilizada para estabelecer filtros). O filtro será aplicado pelo campo NOME que deverá começar pelo conteúdo “Paulo”. Quando empregamos ao final da string de comparação o caracter “%”, estamos indicando que daquele ponto em diante, não importam os demais caracteres para o filtro aplicado. S“Henrique”, independente do local (primeiro, segundo, terceiro nome), poderia empregar a seguinte sintaxe na cláusula WHERE:

Page 89: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

import java.sql.*;

c void main (String args[]) {

fonte = "jdbc:odbc:ag";

bc.JdbcOdbcDriver");

onnection(fonte,usuario,senha);

M pessoafisica WHERE

has.next()) { .getString("nome") + " - ");

t.println("Final da listagem");

ption e)

stem.out.println("Problemas na conexão, verifique procedimento");

bserve que agora o nome Henrique está cercado pelo símbolo “%”, o que faz com que o

m alguns casos você pode necessitar de uma busca exata e, assim sendo, poderá empregar

port java.sql.*;

c void main (String args[]) {

fonte = "jdbc:odbc:ag";

bc.JdbcOdbcDriver");

onnection(fonte,usuario,senha);

M pessoafisica WHERE

has.next()) { .getString("nome") + " - ");

class Listadados { public stati try { String String usuario = ""; String senha = ""; Class.forName("sun.jdbc.od Connection conexao; conexao = DriverManager.getC Statement conecta = conexao.createStatement(); ResultSet linhas = conecta.executeQuery("Select * FROnome LIKE '%Henrique%'"); while (lin System.out.print(linhas System.out.print(linhas.getString("Email") + " - "); System.out.println(linhas.getString("Fone") + " - "); } System.ou conecta.close(); conexao.close(); } catch(Exce { Sy } } } Ofiltro busque nomes que contenham (independente do local) a palavra Henrique. Ea seguinte estrutura: imclass Listadados { public stati try { String String usuario = ""; String senha = ""; Class.forName("sun.jdbc.od Connection conexao; conexao = DriverManager.getC Statement conecta = conexao.createStatement(); ResultSet linhas = conecta.executeQuery("Select * FROnome = 'Paulo Henrique Matuszewski'"); while (lin System.out.print(linhas System.out.print(linhas.getString("Email") + " - ");

Page 90: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

System.out.println(linhas.getString("Fone") + " - "); } System.out.println("Final da listagem");

ption e)

stem.out.println("Problemas na conexão, verifique procedimento");

o exemplo acima, iremos filtrar a busca pelo registro na qual o nome for exatamente igual

o próximo módulo de aula iremos começar a trabalhar com a interface gráfica do Java e

conecta.close(); conexao.close(); } catch(Exce { Sy } } } Nà “Paulo Henrique Matuszewski”. Nbanco de dados, melhorando sensivelmente nossas aplicações.

Page 91: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 014 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 92: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Vamos aqui gerar um exemplo de inclusão de dados em um banco de dados, porém com o uso da Interface Gráfica do Java. Observe a listagem abaixo: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.lang.*; import java.net.URL; import java.sql.*; import java.io.*; public class exemplo extends Frame implements ActionListener { JLabel cp1, cp2, cp3; JTextField et1, et2, et3; JButton botao; public exemplo () { setLayout(new GridLayout(5,2)); cp1 = new JLabel("Nome:"); cp2 = new JLabel("Email:"); cp3 = new JLabel("Fone:"); et1 = new JTextField(30); et2 = new JTextField(30); et3 = new JTextField(18); botao = new JButton("INCLUI"); botao.addActionListener(this); add(cp1); add(et1); add(cp2); add(et2); add(cp3); add(et3); add(botao); } public void actionPerformed(ActionEvent event) { janela ap = new janela(); ap.sair(); } public static void main(String args[]) throws IOException { exemplo janela = new exemplo(); janela.setTitle("Inserindo dados com o ambiente gráfico"); janela.pack(); janela.show(); } class janela { janela() { }

Page 93: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

public void sair() { try { String fonte="jdbc.odbc.ag"; String user = ""; String pass = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conecta; conecta = DriverManager.getConnection(fonte, user, pass);; Statement comando = conecta.createStatement(); comando.executeUpdate("INSERT INTO pessoafisica (nome, email, fone) VALUES ('"+et1.getText()+"','"+et2.getText()+"','"+et3.getText()+"')"); System.out.println("Processamento concluído"); comando.close(); conecta.close(); } catch (Exception e) { e.printStackTrace(); return; } System.exit(0); } } } Ao executar o nosso programa, observe como ficou a interface gráfica do mesmo:

No próximo módulo de aula iremos estudar passo a passo todos os procedimentos executados neste programa e conhecer um pouco mais sobre o ambiente gráfico do Java.

Page 94: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 015 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 95: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

O primeiro passo foi importar ao nosso programa as classes necessárias para o ambiente

port java.awt.*; nt.*;

;

a linha abaixo, estamos criando a classe “exemplo” que também é o nome do nosso

ublic class exemplo extends Frame implements ActionListener {

rimeiro criamos três variáveis que irão representar LABELS. Um Label é uma etiqueta ou

gráfico e o trabalho com banco de dados, este procedimento foi realizado nas linhas abaixo: imimport java.awt.eveimport javax.swing.*; import java.lang.*; import java.net.URLimport java.sql.*; import java.io.*; Narquivo de programa e, estamos preparando a mesma para trabalhar com os eventos necessários ao desenvolvimento do ambiente gráfico na mesma: p Puma linha de texto em um ambiente gráfico (se você já estudou o Delphi ou o Visual Basic sabe ao certo o que é um Label: JLabel cp1, cp2, cp3;

m seguida estamos criando três variáveis que irão representar as caixas de texto. Uma Ecaixa de texto é na verdade um componente do ambiente gráfico que possibilita ao usuário digitar uma determinada informação na mesma e, seu conteúdo (conteúdo digitado) ficará armazenado nesta para manipulação posterior: JTextField et1, et2, et3;

oltando a realizar uma comparação, se você conhece o Delphi ou o VB sabe o que é um

JButton botao;

a linha abaixo, estamos iniciando um método para o programa “exemplo” e, este método

emplo () {

layout da janela terá 5 linhas e duas colunas e, estes parâmetros foram passados pela

setLayout(new GridLayout(5,2));

VButton. Estamos na linha abaixo criando uma variável que irá representar um componente do tipo Button (ou simplesmente botão). Os botões são responsáveis por uma espécie de procedimento de confirmação, ou seja, o usuário ao clicar em um botão quer que o sistema execute uma determinada tarefa: Nterá a finalidade de montar o ambiente gráfico (leia criar a janela) para que o usuário possa interagir com a mesma: public ex Olinha de comando abaixo:

Page 96: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Nas linhas abaixo, estamos criando as etiquetas e armazenando este “gráfico” sobre a forma

cp1 = new JLabel("Nome:");

baixo, estamos criando três caixas de texto, especificando também a sua largura

JTextField(30);

a linha abaixo, estamos criando o botão, dando ao mesmo um rótulo (um Caption, um

ew JButton("INCLUI");

que possa responder a um evento (quando o usuário clica sobre o

botao.addActionListener(this);

aixo, estamos disponibilizando cada um dos objetos que criamos

add(cp1);

de uma variável. Teremos então três etiquetas (cada uma contendo uma frase em específico em seu interior, que está sendo determinada pela String repassada como parâmetro), representadas pelas variáveis CP1, CP2 e CP3:

cp2 = new JLabel("Email:"); cp3 = new JLabel("Fone:"); A(quantidade de caracteres e serem considerados). Estas caixas de texto estão representadas pelas variáveis ET1, ET2, ET3: et1 = new et2 = new JTextField(30); et3 = new JTextField(18); Nnome que será exibido em seu interior) e, este será representado pela variável BOTAO: botao = n O botão criado, para botão, este irá disparar um evento (ação) conhecida em outras linguagens por OnClick. Ao disparar um evento, o código associado ao mesmo será executado), para isso deveremos indicar ao sistema que este botão está sendo controlado pelo gerente de eventos do sistema: Nas linhas abanteriormente na janela gráfica que será exibida ao usuário. Observe que estamos seguindo uma ordem lógica e, respeitando a quantidade máxima de linhas e colunas, determinada pelo comando SETLAYOUT visto anteriormente: add(et1); add(cp2); add(et2); add(cp3); add(et3); add(botao); }

Page 97: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Nas linhas abaixo, estamos declarando o método do gerente de eventos, que será

public void actionPerformed(ActionEvent event) {

, estamos iniciando o método principal de nosso programa:

public static void main(String args[])

as linhas abaixo, estamos construindo a janela para o usuário, ou seja, exibindo a janela.

responsável pelo controle da exibição da janela até o seu fechamento: janela ap = new janela(); ap.sair(); } Na linha abaixo NNesta janela iremos inserir um título na respectiva linha (linha de título) e o método Show finalmente exibe a mesma ao usuário: throws IOException {

= new exemplo(); m o ambiente gráfico");

baixo estamos com os procedimentos normais para trabalhar com tabelas de banco de

exemplo janela janela.setTitle("Inserindo dados co janela.pack(); janela.show(); } Adados em Java, conforme vimos em capítulos anteriores, sendo que a diferença está no comando INSERT, que iremos estudar adiante em detalhes: class janela {

() {

sair() {

ring fonte="jdbc.odbc.ag";

ame("sun.jdbc.odbc.JdbcOdbcDriver");

conecta; onnection(fonte, user, pass);;

comando = conecta.createStatement(); me, email, fone)

ALUE ('"+et1.getText()+"','"+et

t.println("Processamento concluído");

close();

janela } public void try { St String user = ""; String pass = ""; Class.forN Connection conecta = DriverManager.getC Statement comando.executeUpdate("INSERT INTO pessoafisica (noV S 2.getText()+"','"+et3.getText()+"')"); System.ou comando. conecta.close(); }

Page 98: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

catch (Exception e) {

);

comando INSERT foi modificado em relação ao que estudamos em módulos anteriores.

INSERT INTO pessoafisica (nome, email, fone) VALUES

esta sintaxe, ao invés de empregarmos na cláusula VALUES os valores de forma fixa, ou

e

e.printStackTrace(); return; } System.exit(0 } } } OObserve sua nova sintaxe: ("('"+et1.getText()+"','"+et2.getText()+"','"+et3.getText()+"')") Nseja, indicando diretamente o mesmo, deveremos recuperar o conteúdo digitado em cada uma das caixas de texto criadas com este propósito. Para isso temos o método gettext(), quextrai o conteúdo digitado (armazenado) em cada uma das caixas de texto.

Page 99: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 016 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 100: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Vamos estudar um pouco mais sobre a interface gráfica do Java. Para que seu sistema opere dentro dos padrões atuais de desenvolvimento, você deverá ter 4 blocos principais:

1. Bloco de entrada de dados; 2. Bloco de processamento de dados; 3. Bloco de armazenamento de dados; 4. Bloco de saída de dados.

Dos blocos citados, apenas o de entrada de dados e o de saída de dados deverão trabalhar (pelos padrões atuais) com interfaces gráficas. Vamos a um simples exemplo de uma GUI em Java: import java.awt.*; import javax.swing.*; public class grafico extends JComponent { public static void main (String args[]) { JFrame janela = new JFrame("Interface grafica com o usuario"); janela.setSize(280,60); janela.getContentPane().add(new grafico()); janela.setVisible(true); } public void paintComponent(Graphics etiqueta) { etiqueta.drawString("Projeto Aprenda em Casa",50,30); } } Ao executar a rotina acima, teremos o seguinte resultado:

Observe que no exemplo acima, carregamos dois pacotes para gerar componentes GUI (interface gráfica com o usuário). Os componentes do pacote swing são escritos, manipulados e exibidos em puro Java, ou seja, componentes Java puros. Já os componentes GUI do pacote awt (abstract Windowing toolkit) estão linkados com os recursos GUI da plataforma local e, dependendo da sua plataforma, poderemos ter um resultado diferenciado do exibido no gráfico acima.

Page 101: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Um exemplo típico de uma janela com diversos componentes GUI pode ser obtida através do seu navegador Web. Observe o gráfico abaixo:

Barra de menus Botões Rótulos campos de texto O objetivo de um componente GUI é possibilitar a interação do sistema com o usuário através do mouse ou teclado. Os principais componentes de uma interface GUI são: Com relação a aparência e o comportamento do seu sistema, os componentes do pacote swing, por serem escritos em java puro, oferecem um grau maior de flexibilidade que os componentes do pacote awt. Quando empregamos o pacote awt, estes irão se basear no sistemas de janela local, da plataforma em uso, para determinar o seu comportamento. No gráfico abaixo, temos o hierarquia de herança de classes que são responsáveis pela definição do comportamento dos componentes da GUI:

Page 102: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

No esquema acima, temos que deixar claro que a classe Component tem por objetivo a definição dos métodos compatíveis com os objetos de uma determinada subclasse, assim sendo, os procedimentos comuns dos componentes GUI ficam localizados na classe Component. Já os Containers formam a coleção de componentes relacionados. No programa acima, quando empregamos o JFrames, estamos na verdade anexando componentes ao painel de conteúdo, ou seja, um container. Observe a seguinte linha do programa que geramos acima: public class grafico extends JComponent { A classe JComponent é na verdade uma superclasse para vários dos componentes Swing, tendo por objetivo definir o conjunto de métodos que serão aplicados a um determinado objeto de sua subclasse.. Estes componentes possuem vários recursos, entre eles destacamos:

• Personalização de aparência e comportamento para diferentes plataformas que irão executar o programa;

• Uso de teclas de atalho para acesso a componentes da GUI; • Tratamento de eventos.

No próximo módulo de aula iremos estudar alguns recursos do componente Swing.

Page 103: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 017 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 104: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Vamos detalhar alguns recursos dos componentes do Swing, a começar pelo JLabel, que é a

port javax.swing.*;

nt.*;

ublic class rotulo extends JFrame { abel3;

otulo()

per( "Projeto Aprenda em Casa" );

label simples" );

new JLabel ( "da subclasse JLabel" );

new JLabel ( "da classe JComponent" );

160,130 );

tic void main( String args[] )

tulo app = new rotulo();

ng( WindowEvent e )

stem.exit( 0 );

classe responsável por representar os rótulos em um ambiente gráfico e, esta é uma subclasse do swing.JComponent. Vamos a um simples exemplo abaixo para que você compreenda melhor esta subclasse: imimport java.awt.*; import java.awt.eve p private JLabel label1, label2, l public r { su Container c = getContentPane(); c.setLayout( new FlowLayout() ); label1 = new JLabel ( "Esta é uma label1.setToolTipText( "Este é o Label1" ); c.add ( label1 ); label2 = label2.setToolTipText ( "Este é o Label2" ); c.add ( label2 ); label3 = label3.setToolTipText ( "Este é o Label3" ); c.add ( label3 ); setSize( show(); } public sta { ro app.addWindowListener( new WindowAdapter() { public void windowClosi { Sy } } ); } }

Page 105: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Ao executar o programa acima, teremos o seguinte resultado:

Vamos explicar por partes o sistema acima, porém antes, passe o mouse sobre a primeira linha de texto da janela acima e verifique o que ocorre:

O primeiro passo foi carregar as classes que serão utilizadas em nosso sistema:

port javax.swing.*;

nt.*;

m seguida, declaramos três variáveis (leia referências) da classe JLabel (rótulos), sendo

private JLabel label1, label2, label3;

a linha abaixo, estamos instanciando o objeto JLabel, representado pela referência Label1

label1 = new JLabel ( "Esta é uma label simples" );

esta sintaxe, estamos criando um JLabel, que terá como rótulo (texto que o acompanha) o

ocê já programou ou programa em Delphi ou VB? Se positivo, deve lembrar o que é um

imimport java.awt.*; import java.awt.eve Eeslas: LABEL1, LABEL2, LABEL3: Nno construtor: Nconteúdo “ESTA É UMA LABEL SIMPLES”. VHINT, ou seja, uma espécie de “balão” que é exibido sempre que o mouse passa por um determinado componente e, na linha seguinte estamos criando um hint para o componente (classe) JLabel. O Hint é utilizado normalmente para exibir uma dica. Por exemplo:

Page 106: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

posicione o ponteiro do mouse sobre o botão que possui como gráfico um disquete da barra de ferramentas do seu Word, observe o que acontecerá:

Este é um exemplo típico de Hint. Em nosso sistema, apenas como exemplo, geramos o seguinte Hint para o JLabel1: label1.setToolTipText( "Este é o Label1" ); Os mesmos procedimentos são realizados para os Labels 2 e 3. Na linha abaixo, estamos definindo o tamanho da janela que estamos gerando: setSize( 160,130 ); As demais linhas já são de nosso conhecimento.

Page 107: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 018 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 108: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Vamos neste módulo aprender sobre alguns recursos das caixas de edição, onde o usuário

port java.awt.*; nt.*;

ublic class ctexto extends JFrame { t3, ct4;

to()

per("Caixas de texto");

seu nome");

10 );

Caixa sem edicao",20);

Entre com sua senha");

rdField ( 3 );

void main (String args[])

ctexto app = new ctexto();

g( WindowEvent e )

System.exit(0);

o executar este programa, teremos o seguinte resultado:

poderá entrar com dados para interagir com a sua aplicação. Observe a fonte abaixo: imimport java.awt.eveimport javax.swing.*; p private JTextField ct1, ct2, c private JPasswordField senha; public ctex { su Container c = getContentPane(); c.setLayout( new FlowLayout() ); ct2 = new JTextField("Entre com o c.add( ct2 ); ct1 = new JTextField( c.add( ct1 ); ct3 = new JTextField(" ct3.setEditable(false); c.add( ct3 ); ct4 = new JTextField(" c.add( ct4 ); senha = new JPasswo c.add (senha ); setSize(325,100); show(); } public static { app.addWindowListener( new WindowAdapter() { public void windowClosin { } } ); } } A

Page 109: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

No exemplo acima, iniciamos importando as classes que serão utilizadas em nosso sistema:

port java.awt.*; nt.*;

m seguida, declaramos referências a JTextField para ct1, ct2, ct3 e ct4, ou seja, estas serão

imimport java.awt.eveimport javax.swing.*; Einstânciadas dentro do sistema e irão representar caixas de texto para que o usuário possa entrar com valores possibilitando assim a interação deste com o programa: private JTextField ct1, ct2, ct3, ct4;

mesmo fizemos para senha, que terá sua referência como sendo um JPasswordField, ou Oseja, uma caixa de texto especial, que ao invés de exibir o conteúdo que está sendo digitado, irá exibir asteriscos. Este tipo de componente é utilizado geralmente para caixas de senhas: private JPasswordField senha;

s procedimentos seguintes, irão construir as caixas de edição na interface gráfica:

super("Caixas de texto");

seu nome");

10 );

Caixa sem edicao",20);

Entre com sua senha");

qui temos uma novidade: quando quisermos que uma caixa de texto não possa ter o seu

bserve também que quando declaramos uma String para uma caixa de texto, a mesma

O Container c = getContentPane(); c.setLayout( new FlowLayout() ); ct2 = new JTextField("Entre com o c.add( ct2 ); ct1 = new JTextField( c.add( ct1 ); ct3 = new JTextField(" ct3.setEditable(false); c.add( ct3 ); ct4 = new JTextField(" c.add( ct4 ); Aconteúdo alterado (ou seja, o usuário não terá como alterar o seu valor), deveremos alterar a propriedade EditTable para false, foi este procedimento adotado na linha 9 da listagem acima. Opoderá ser alterada em tempo de execução, como é o caso da caixa de texto CT2, pois sua propriedade EditTable por default é true, observe o gráfico abaixo:

Page 110: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Nós alteramos o conteúdo da caixa de texto editável, que continha a String (“Entre com o seu nome”). O mesmo pode ocorrer com a caixa de texto (“Entre com sua senha”). Em seguida construímos a caixa de texto que irá receber a senha entrada pelo usuário:

as então o correto não seria utilizar etiquetas (Labels) ao invés de caixas de texto no local titua

s caixas de texto CT2 e CT4 por labels (etiquetas).

ct4 = new JTextField("Entre com sua senha"); c.add( ct4 ); Mde CT2 e CT4, assim o usuário não teria como alterar o seu conteúdo? Exercício: Subsa

Page 111: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 019 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 112: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Um botão em um ambiente gráfico é utilizado para possibilitar ao usuário uma determinada ação junto ao programa, através do click no mesmo.Ao contrário do que muitos pensam, existem diversas categorias de botões, entre elas destacamos:

• botões simples; • botões de comando; • caixas de seleção; • botões de opção.

Todos os tipos de botões no Java pertencem a classe javax.swing, através da subclasse abstractbutton. Quando temos um botão de comando, o mesmo poderá gerar o evento conhecido por ActionEvent. Este evento é disparado quando o usuário clica no botão com o ponteiro do mouse. Os botões possuem um rótulo, ou seja, um texto que passa a fazer parte da parte superior do mesmo e, cada um dos rótulos deverá ser único, caso contrário os JButtons se tornarão ambíguos para o usuário. Observe o simples exemplo abaixo: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class exbotao extends JFrame { private JButton btsimples, btgrafico; public exbotao() { super ("Exemplo de botão"); Container c = getContentPane(); c.setLayout(new FlowLayout() ); btsimples = new JButton ("Botao simples"); c.add (btsimples); Icon imagem1 = new ImageIcon ("rainho.gif"); Icon imagem2 = new ImageIcon ("java1.gif"); btgrafico = new JButton("Botao animado", imagem1); btgrafico.setRolloverIcon( imagem2 ); c.add (btgrafico); ButtonHandler handler = new ButtonHandler(); btsimples.addActionListener ( handler ); btgrafico.addActionListener ( handler ); setSize ( 160,105 ); show(); } public static void main ( String args[] )

Page 113: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

{ exbotao app = new exbotao(); app.addWindowListener( new WindowAdapter() { public void windowClosing ( WindowEvent e ) { System.exit( 0 ); } } ); } private class ButtonHandler implements ActionListener { public void actionPerformed( ActionEvent e ) { JOptionPane.showMessageDialog( null, "Você clicou no : " + e.getActionCommand()); } } } Vamos explicar passo a passo os procedimentos realizados (aqueles comuns aos dos demais exemplos estudados nos módulos anteriores não serão explicados). Primeiro estamos declarando duas referências para instanciar a classe JButton, são elas btsimples e btgrafico. O primeiro irá representar um botão sem gráfico e o segundo um botão com gráfico e tratamento de eventos: private JButton btsimples, btgrafico; O primeiro botão é criado a partir da seguinte sequência: btsimples = new JButton ("Botao simples"); c.add (btsimples); Observe que o primeiro botão é um botão simples, sem maiores recursos, onde o Caption (mensagem exibida dentro do botão) deste será “BOTÃO SIMPLES”. O segundo botão, que será construído na sequência de comandos abaixo, pode apresentar em conjunto com o Caption do mesmo, um ícone e, ainda poderemos gerar alguns efeitos, como por exemplo alterar o ícone quando o ponteiro do mouse passar sobre o botão: Icon imagem1 = new ImageIcon ("rainho.gif"); Icon imagem2 = new ImageIcon ("java1.gif"); btgrafico = new JButton("Botao animado", imagem1); btgrafico.setRolloverIcon( imagem2 ); c.add (btgrafico); O primeiro passo foi definir as duas variáveis que representaram um gráfico qualquer. Lembrando que este gráfico deverá ter pequenas dimensões, caso contrário o mesmo será exibido de forma incorreta. Em seguida (linha 3 da listagem acima), estamos criando o botão, que além do Caption “BOTAO ANIMADO”, terá ao lado deste um ícone,

Page 114: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

representado pela variável “Imagem1”, que está vinculado ao arquivo “rainho.gif” (os arquivos gráficos deverão estar localizados no mesmo diretório da aplicação Java). Na linha 4 da listagem acima, estamos criando o efeito que possibilita alterar o ícone que está sendo exibido pelo botão, quando o ponteiro do mouse passar sobre o mesmo, neste definimos o evento (setRolloverIcon) e a figura que será apresentada (imagem2). Um botão pode gerar eventos, ou seja, receber o clique do ponteiro do mouse. Estaremos então diante do que conhecemos por ActionEvents e, estes devem ser processados e tratados pelo objeto ActionListener: ButtonHandler handler = new ButtonHandler(); btsimples.addActionListener ( handler ); btgrafico.addActionListener ( handler ); Quando um dos botões receber um clique, o evento OnClick será disparado e, teremos então uma caixa de diálogo informando o botão que recebeu o click. private class ButtonHandler implements ActionListener { public void actionPerformed( ActionEvent e ) { JOptionPane.showMessageDialog( null, "Você clicou no : " + e.getActionCommand()); } Salve e execute o programa acima.

Page 115: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 020 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 116: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Neste módulo de aula vamos começar o estudo do componente JCheckBox, componente

port java.awt.*; nt.*;

ublic class cbox extends JFrame {

p2, op3;

box()

per ( "Exemplo de CheckBox" );

em que linguagem?", 19);

w JCheckBox ("Delphi");

w JCheckBox ("VB");

w JCheckBox ("Outros");

ddWindowListener( ) {

ng( WindowEvent e)

stem.exit(0);

etSize (275,100);

tic void main( String args[])

w cbox();

que permite a seleção ou não de seu conteúdo (se está ou não selecionado). Observe o exemplo abaixo: imimport java.awt.eveimport javax.swing.*; p private JTextField texto; private JCheckBox op1, o public c { su Container c = getContentPane(); c.setLayout(new FlowLayout()); texto = new JTextField("Você Programa texto.setFont(new Font("Arial", Font.PLAIN, 12)); c.add(texto); op1 = ne

c.add (op1);

op2 = ne c.add (op2); op3 = ne c.add (op3); a new WindowAdapter( public void windowClosi { Sy } } ); s show(); } public sta { ne } }

Page 117: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Ao executar o sistema acima, teremos o seguinte resultado:

Observe que você poderá marcar uma ou mais linguagens, pois as caixas de seleção, apesar

qui temos uma grande novidade, pois na caixa de texto, especificamos a fonte que seria

texto.setFont(new Font("Arial", Font.PLAIN, 12));

rimeiro especificamos a fonte (arial), em seguida que a mesma seria da forma padrão

uando criamos uma caixa de seleção, temos que especificar também o rótulo que irá

op1 = new JCheckBox ("Delphi");

s demais procedimentos são aqueles que já conhecemos.

ocê poderá também tratar eventos nas caixas de seleção. Vamos imaginar que, ao

port java.awt.*; nt.*;

ublic class cbox extends JFrame {

p2, op3;

box()

per ( "Exemplo de CheckBox" );

de estarem dispostas mesma linha e estarem relacionadas a um mesmo assunto, trabalham de forma independente, uma das outras. Autilizada para o texto apresentado no interior da mesma, observe a linha abaixo: P(PLAIN), ou seja, sem estar em negrito, itálico, etc... e do tamanho 12. Qacompanhar a mesma, caso contrário o usuário não saberá ao certo a opção que está marcando: O Vselecionar uma ou outra caixa de seleção, fosse gerada uma janela indicando a linguagem base de cada uma das plataformas de desenvolvimento citadas. Teríamos então a seguinte estrutura: imimport java.awt.eveimport javax.swing.*; p private JTextField texto; private JCheckBox op1, o public c { su Container c = getContentPane(); c.setLayout(new FlowLayout());

Page 118: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

texto = new JTextField("Você Programa em que linguagem?", 19);

w JCheckBox ("Delphi");

w JCheckBox ("VB");

w JCheckBox ("Outros");

addWindowListener( ) {

ng( WindowEvent e)

stem.exit(0);

etSize (275,100);

tic void main( String args[])

w cbox();

lass cboxHandler implements ItemListener {

( e.getSource() == op1 ) temEvent.SELECTED )

cê programa em

() == op2 )

temEvent.SELECTED ) cê programa em

}

texto.setFont(new Font("Arial", Font.PLAIN, 12)); c.add(texto); op1 = ne c.add (op1); op2 = ne c.add (op2); op3 = ne c.add (op3); cboxHandler handler = new cboxHandler(); op1.addItemListener ( handler ); op2.addItemListener ( handler ); new WindowAdapter( public void windowClosi { Sy } } ); s show(); } public sta { ne } private c public void itemStateChanged ( ItemEvent e ) { if if ( e.getStateChange() == I JOptionPane.showMessageDialog ( null, "Vopascal"); if ( e.getSource if ( e.getStateChange() == I JOptionPane.showMessageDialog ( null, "VoBasic");

Page 119: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

} } Observe que para testarmos se um item da caixa de seleção está ou não selecionado,

o próximo módulo de aula iremos estudar o JRadioButton.

utilizamos o evento ItemEvent.SELECTED, ou seja, afirmando se o mesmo está ou não selecionado. N

Page 120: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 021 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 121: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Os RadioButtons, por fazerem parte de um grupo de botões de opção, não permitem a seleção de mais de um item do seu grupo. Os demais procedimentos são muito similares aos dos JCheckBox. Vamos desenvolver uma espécie de controle de fonte de um editor de texto, onde o usuário poderá selecionar se quer um texto especifico em negrito, itálico, sublinhado, etc... Digite o exemplo abaixo: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class radiob extends JFrame { private JTextField t; private Font fontecomum, fontenegrito, fonteitalico, fnegritoitalico; private JRadioButton normal, negrito, italico, negitalico; private ButtonGroup radioGroup; public radiob() { super ("Botões de radio"); Container c = getContentPane(); c.setLayout ( new FlowLayout() ); t = new JTextField ("Projeto Aprenda em Casa",25); c.add(t); normal = new JRadioButton("Normal", true); c.add(normal); negrito = new JRadioButton("Negrito", false); c.add(negrito); italico = new JRadioButton ("Italico", false); c.add(italico); negitalico = new JRadioButton ("Negrito/Italico", false); c.add(negitalico); RadioButtonHandler handler = new RadioButtonHandler(); normal.addItemListener (handler); negrito.addItemListener (handler); italico.addItemListener (handler); negitalico.addItemListener (handler); radioGroup = new ButtonGroup(); radioGroup.add (normal); radioGroup.add (negrito); radioGroup.add (italico); radioGroup.add (negitalico); fontecomum = new Font("Arial",Font.PLAIN, 12); fontenegrito = new Font("Arial",Font.BOLD, 12); fonteitalico = new Font("Arial",Font.ITALIC, 12); fnegritoitalico = new Font("Arial",Font.BOLD + Font.ITALIC, 12); t.setFont ( fontecomum );

Page 122: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

setSize(330,100); show(); } public static void main (String args[] ) { radiob app = new radiob(); app.addWindowListener( new WindowAdapter() { public void windowClosing ( WindowEvent e ) { System.exit(0); } } ); } private class RadioButtonHandler implements ItemListener { public void itemStateChanged ( ItemEvent e ) { if ( e.getSource() == normal) t.setFont ( fontecomum ); else if ( e.getSource() == negrito ) t.setFont ( fontenegrito ); else if ( e.getSource() == italico ) t.setFont ( fonteitalico ); else if ( e.getSource() == negitalico ) t.setFont ( fnegritoitalico ); t.repaint(); } } } Ao executar o programa acima, teremos como resultado a janela que segue:

As novidades neste programa encontradas são as que seguem:

• O primeiro passo foi criar os botões de opção, conforme podemos observar no seguinte trecho do programa:

Page 123: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

normal = new JRadioButton("Normal", true); c.add(normal); negrito = new JRadioButton("Negrito", false); c.add(negrito); italico = new JRadioButton ("Italico", false); c.add(italico); negitalico = new JRadioButton ("Negrito/Italico", false); c.add(negitalico);

• Um pouco mais abaixo, criamos um grupo, ou seja, estabelecemos quais os botões de rádio farão parte do mesmo grupo (neste nosso exemplo temos apenas um grupo):

radioGroup = new ButtonGroup(); radioGroup.add (normal); radioGroup.add (negrito); radioGroup.add (italico); radioGroup.add (negitalico);

• Os eventos que serão respondidos pelos botões de rádio foram registrados um pouco acima, conforme podemos observar no seguinte trecho de listagem:

RadioButtonHandler handler = new RadioButtonHandler(); normal.addItemListener (handler); negrito.addItemListener (handler); italico.addItemListener (handler); negitalico.addItemListener (handler);

• Em seguida, estamos gerando “variáveis” que irão representar cada um dos estados de acordo com o botão que será selecionado. Estes estados serão tratados na bateria de testes do evento click de cada um dos botões, ou seja, de acordo com o botão que estiver ativado, uma das instâncias abaixo serão aplicadas:

fontecomum = new Font("Arial",Font.PLAIN, 12); fontenegrito = new Font("Arial",Font.BOLD, 12); fonteitalico = new Font("Arial",Font.ITALIC, 12); fnegritoitalico = new Font("Arial",Font.BOLD + Font.ITALIC, 12); t.setFont ( fontecomum );

Page 124: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

• Observe no trecho abaixo, onde os eventos são tratados, a concretização da

afirmativa que realizamos no item acima, ou seja, de acordo com o botão de rádio que estiver selecionado, uma das variáveis acima serão aplicadas para que em seguida, este tipo de fonte seja aplicada a caixa de texto que faz parte do programa:

private class RadioButtonHandler implements ItemListener { public void itemStateChanged ( ItemEvent e ) { if ( e.getSource() == normal) t.setFont ( fontecomum ); else if ( e.getSource() == negrito ) t.setFont ( fontenegrito ); else if ( e.getSource() == italico ) t.setFont ( fonteitalico ); else if ( e.getSource() == negitalico ) t.setFont ( fnegritoitalico ); t.repaint(); } No próximo módulo de aula iremos estudar o JComboBox.

Page 125: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Módulo de apostila : Java Número : 022 Número de páginas : É expressamente proíba a reprodução total ou parcial do conteúdo desta apostila sem a prévia autorização da High Tec Informática, estando o infrator sujeito as penalidades previstas em Lei. Este módulo publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias, utilizando estas marcas somente para fins editoriais e em benefício dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. A High Tec Informática não comercializa a nenhum título softwares, sendo que os mesmos deverão ser adquiridos pelos alunos através dos distribuidores credenciados.

Page 126: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

Uma combobox é uma caixa contendo uma lista de itens para que o usuário escolha um

port java.awt.*; nt.*;

ublic class combo extends JFrame { ;

,"oracle.gif","macromedia.gif" };

arca[ 0 ] ),

;

per ("Escolha sua favorita");

= new JComboBox ( logomarca );

Changed( ItemEvent e )

bel.setIcon ( simbolo[ empresas.getSelectedIndex() ] );

[ 0 ] );

tic void main( String args[] )

mbo trataevento = new combo();

WindowEvent e )

destes. Vamos gerar um exemplo na qual o usuário poderá escolher na caixa de listagem um determinado fabricante e, após escolher o mesmo, será exibido um gráfico (gif) contendo a logomarca deste. Veja a fonte do sistema abaixo: imimport java.awt.eveimport javax.swing.*; p private JComboBox empresas private JLabel label; private String logomarca[] = { "microsoft.gif","borland.gif" private Icon simbolo[]= { new ImageIcon( logom new ImageIcon( logomarca[ 1 ] ), new ImageIcon( logomarca[ 2 ] ), new ImageIcon( logomarca[ 3 ] ) }

mbo() public co { su

c = getContentPane(); Container c.setLayout ( new FlowLayout() ); empresas empresas.setMaximumRowCount( 2 );

.addItemListener( empresas new ItemListener() { public void itemState { la } } );

resas ); c.add( emp label = new JLabel( simbolo c.add( label ); setSize( 350,100 ); show(); } public sta { co trataevento.addWindowListener( new WindowAdapter() { public void windowClosing( {

stem.exit( 0 ); Sy } }

Page 127: Projeto Aprenda Em Casa - Curso Java - Completo - 22 Modulos Ptbr

); } } O primeiro passo foi instanciar a classe JComboBox no sistema:

private JComboBox empresas;

epois criamos uma array contendo Strings que, além de oferecer o nome da empresa, irão

private String logomarca[] = ,"oracle.gif","macromedia.gif" };

m seguida estamos lançando cada um dos valores criados para a array “logomarca” a

private Icon simbolo[]= arca[ 0 ] ),

;

ma das novidades neste sistema é o emprego do método SetMaximumRowCount para

empresas = new JComboBox ( logomarca );

s demais procedimentos já são de seu conhecimento.

Dfornecer o nome do arquivo GIF que será carregado de acordo com a seleção do usuário: { "microsoft.gif","borland.gif" Evariável que será utilizada para carregar a imagem de acordo com a empresa selecionada: { new ImageIcon( logom new ImageIcon( logomarca[ 1 ] ), new ImageIcon( logomarca[ 2 ] ), new ImageIcon( logomarca[ 3 ] ) } Uespecificar o número de itens que serão exibidos quando a caixa de combinação for aberta. No nosso exemplo especificamos um total de 2 itens sendo exibidos: empresas.setMaximumRowCount( 2 ); O