Baixe o app para aproveitar ainda mais
Prévia do material em texto
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. 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 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 ambientes, tais como Windows, Macintosh, Linux. Abaixo seguem dois gráficos comparando um programa tradicional de um programa Java: Programa Tradicional Compilador Linux Mac Windows Arquivo binário Windows Arquivo binário Mac Arquivo binário Linux Programa Java: Além deste conceito, o Java gera executáveis pequenos, que permitem o rápidocarreg nto da página Web, dá maior importância à segurança permitindo que o compu especi O Jav gráfic compi proces via ou compi (possu execu não fu Bytecode independente da plataforma Interpretada (Windows) Interpretada (Mac) Interpretada ( Linux) ame tador servidor tenha controle sobre o que será acessado pelo computador cliente, ficando o que poderá ou não ser acessado pelo mesmo. inguagem de programação feita para ser utilizada em um ambiente de 32 bits a é uma l 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. É 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. 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. 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: 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: 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: 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: 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; 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: 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: 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: 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. 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, conformepodemos 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: 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: 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[]) 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: 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. 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: 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á impressona 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 “aprendaemcasa@aprendaemcasa.com.br”. 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. 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: 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; 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: ** 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 outrosdiretó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: 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); } } 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); 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: 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[] ) { 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: 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. Estemó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. 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 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; ^ 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. 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: 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, comopor exemplo, tentar utilizar um índice fora dos limites estipulados na declaração. Observe o erro que será gerado: 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: 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 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)); } } Aqui teremos como resultado o que segue: 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. 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 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: 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: importjavax.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); } } } 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"); 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 } 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: 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: 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); } } 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 inicialda 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); } } 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. 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. 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 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: 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. 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. 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 a u • 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 est c 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 v re 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 nom im 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 Exem fo <html> <applet cod </applet> < Este arquivo deverá ser salvo com o nome Exemploapplet.htm e, deverá estar presente m a 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ésdos distribuidores credenciados. 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... 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. 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. 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. P conhecidos por SGBDs (Sistemas Gerenciadores de Banco de Dados), ou seja, programas que administram os dados que deverão ser armazenados eletronicamente. T estude 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: A conjunto de campos CODIGO (que armazena um suposto código de aluno) e ALUNO (que armazena o nome do aluno). A 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 A tabela “ALUNO”. Observe o nome da tabela na barra de título da janela. N detalhes no curso disponível em nosso site com o título de “Access 2000” ou “Access XP”. A programas 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. V detalhes 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. E elas destacamos: • RAD -> geradores de aplicações, que nada mais são do que ferra proporcionam 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. O são vistos comandos da linguagem SQL. Aconselhamos o estudo do mesmo, caso você não tenha experiência com esta linguagem. Para que possamos interagir o banco de dados e o seu programa (front-end),
Compartilhar