Baixe o app para aproveitar ainda mais
Prévia do material em texto
PROGRAMAÇÃO APLICADA JAVA EDIÇÃO Nº 1 - 2007 LAÉRCIO DA CRUZ LOUREIRO ___________________________________________________________________ Apoio Gestão e Execução Conteúdo e Tecnologia • • Programação Aplicada - Java 2 SOCIESC – Sociedade Educacional de Santa Catarina Apresentação a) Este livro didático contém a disciplina de Programação Aplicada em Java. b) A programação em Java é um assunto muito rico, com centenas de livros já publicados, em vários idiomas, desde o seu lançamento. Este material foi elaborado para que você conheça as propostas tecnológicas da plataforma Java e obter sua primeira experiência com a linguagem de programação. c) Você verá que a convergência dos assuntos que você estudou até agora, irão ser aplicados nas próximas páginas, principalmente sobre a programação orientada a objetos, método utilizado para o desenvolvimento de sistemas usando Java. d) O método de estudo para este material é evolutivo, à medida que você avançar nos estudos, as informações irão complementando as conclusões do tópico anterior. Diante do grande volume de informações e das infinitas possibilidades da plataforma Java, este material procura apresentar os aspectos mais relevantes para o seu início na construção de aplicações em Java. Mas com certeza, não esgota o assunto. e) É importante ressaltar que o livro foi desenvolvido com o objetivo de proporcionar-lhe um aprendizado independente, inerente aos estudos do EAD, e o conteúdo foi revisado com o intuito de oferecer-lhe uma linguagem simples, objetiva e estimulante. f) Lembre-se de que a sua passagem por esta disciplina será também acompanhada pelo Sistema de Ensino Tupy Virtual, seja por correio postal, fax, telefone, e-mail ou Ambiente Virtual de Aprendizagem. g) Entre sempre em contato conosco quando surgir alguma dúvida ou dificuldade. h) Toda a equipe terá a maior alegria em atendê-lo, pois a sua aquisição de conhecimento nessa jornada é o nosso maior objetivo. i) Acredite no seu sucesso e bons momentos de estudo! Equipe Tupy Virtual. Programação Aplicada - Java 3 SOCIESC – Sociedade Educacional de Santa Catarina SUMÁRIO CARTA DO PROFESSOR...........................................................................................4 CRONOGRAMA DE ESTUDOS..................................................................................6 PLANO DE ESTUDOS ................................................................................................7 AULA 1 - CONHECENDO A PLATAFORMA JAVA...................................................9 AULA 2 - SINTAXE, DADOS E OOP EM JAVA.......................................................29 AULA 3 - ESTRUTURAS DE PROGRAMAÇÃO......................................................58 AULA 4 - HERANÇA.................................................................................................76 AULA 5 - USANDO SWING E CRIANDO APPLETS................................................84 AULA 6 - TRABALHANDO COM OBJETOS..........................................................106 AULA 7 - JAVA COM BANCO DE DADOS............................................................123 Carta do Professor Programação Aplicada - Java 4 SOCIESC – Sociedade Educacional de Santa Catarina “ O Java pode estar supervalorizada, mas ela também poderá ser tão significativa para o mundo da computação, como a televisão foi para a comunicação em massa.” (U.S. News and World Report, 1995) Caro(a) aluno(a), Java é um dos assuntos mais instigantes no mundo da programação de computadores. Surgida na década de 90, já nasceu com uma curiosidade (e até hoje nunca confirmada): a palavra Java vem da marca de café que os programadores tomavam quando iniciaram o seu projeto. Algumas versões, na Internet, afirmam que era na verdade o nome da cafeteria próxima do escritório de trabalho da equipe. Nada surpreendente, pois já dizem os praticantes da “velha arte” da programação de computadores: o “combustível” para os profissionais manterem altas horas de produção era (e talvez ainda seja) o café. A linguagem Java nasceu com outra curiosidade ainda mais forte: fora criada para programar eletrodomésticos, pois em 1990 a Sun, desenvolvedora do projeto, tinha a intenção de fabricar eletrônica de consumo com algumas capacidades extras. Então, veja prezado(a) aluno(a), é com esta primeira percepção que eu desejo motivá-lo(a). A linguagem Java é um assunto que, desde o seu projeto, é polêmico e influencia os profissionais da Tecnologia da Informação a, no mínimo, refletir sobre suas possibilidades. Em apenas alguns meses, o Java saiu dos laboratórios de pesquisa e desenvolvimento da Sun para o centro da era da World Wide Web. Foi “a linguagem certa, no momento certo, com a tecnologia certa”. De todas as tecnologias e recursos oferecidos pela linguagem Java, talvez a sua característica mais importante é a portabilidade. A Internet e seu serviço WWW ofereciam um mundo de possibilidades e a portabilidade era o elemento que o Java oferecia para que as aplicações pudessem explorar este novo ambiente para se fazer negócios. Além disso, como a linguagem Java foi construída com base nas famosas e largamente utilizadas linguagens C e C++, ela “arregimentou” um grande exército de programadores. Para fechar, explorou de forma nativa a programação orientada a Programação Aplicada - Java 5 SOCIESC – Sociedade Educacional de Santa Catarina objetos, que até então era um método exclusivo de linguagens pouco absorvidas, como o Smalltalk. Aprender a programar em Java, hoje, é muito mais fácil. A versão atual da linguagem está muito poderosa. Há um grande número de ambientes de programação para auxiliar o programador no trabalho com a linguagem e o grande volume de informações na Internet sobre o tema, favorecem a um aprendizado mais rápido, sem contudo deixar de ser uma experiência profissional das mais procuradas da atualidade. Cabe aqui ainda destacar que a Sun criou o Java com uma mentalidade totalmente nova sobre o licenciamento e uso. Todo o entorno da tecnologia foi transformado em “especificação” e publicada na Internet, e agora é mantida por um comitê chamado “Java Community Process (JCP)”, que reúne profissionais de renome em Java e a própria Sun, seguindo um modelo demoncrático para a condução da melhorias das tecnologias. Então, é com este clima de atualidade e de grande potencial de crescimento que convido você para mais esta aventura do conhecimento na informática. Desejo- lhe um estudo rico e cheio de surpresas positivas, já que você estará adentrando para um grande mundo de tecnologias, serviços, recursos e possibilidades de negócios, que o Java oferece a todos. Bons estudos! Professor Laércio da Cruz Loureiro Programação Aplicada - Java 6 SOCIESC – Sociedade Educacional de Santa Catarina Cronograma de Estudos Acompanhe no cronograma abaixo os conteúdos das aulas, e atualize as possíveis datas de realização de aprendizagem e avaliações. Semana Carga horária Aula Data / Avaliação 1 6 Conhecendo a Plataforma Java _/_ a _/_ 18 Sintaxe, dados e OOP _/_ a _/_ 2 24 Estruturas de Progamação _/_ a _/_ 3 12 Herança _/_ a _/_ 16 _/_ a _/_ 4 16 Usando Swing e criando Applets 5 14 Trabalhandocom Objetos _/_ a _/_ 6 16 Java com Banco de Dados _/_ a _/_ Programação Aplicada - Java 7 SOCIESC – Sociedade Educacional de Santa Catarina Plano de Estudos EMENTA • Conhecendo a plataforma Java • Instalando o Java • Sintaxe da linguagem e convenções • Usando dados em um programa • Métodos, classes e objetos • Conceitos avançados de objetos • Trabalhando com estruturas de dados • Strings e Arrays • Applets – Web e Swing • Programação orientada a eventos • Modificadores e Associação • Introdução à herança • Distribuindo pacotes • Usando Javabeans e o Java em Rede • Programação no lado servidor – Java Server Pages • Introdução ao JDBC Objetivos da Disciplina • Geral Implementar os princípios da orientação a objetos usando a linguagem Java e aprender como implementar aplicações Java usando os principais recursos da plataforma. • Específicos o Descrever os componentes da plataforma Java; o Construir programas orientados a objetos usando a linguagem Java; o Conhecer e desenvolver programas usando a sintaxe de comandos da linguagem Java; Programação Aplicada - Java 8 SOCIESC – Sociedade Educacional de Santa Catarina o Aprender a utilizar recursos de banco de dados em Java. Carga Horária: 120 horas Programação Aplicada - Java 9 SOCIESC – Sociedade Educacional de Santa Catarina Aula 1 CONHECENDO A PLATAFORMA JAVA Objetivos da aula Ao final desta aula, você deverá ser capaz de: • Identificar os componentes da plataforma e suas variações; • Diferenciar os tipos de programas Java; • Identificar a versão do Java a ser utilizada em determinadas aplicações; • Preparar o ambiente de um computador para o desenvolvimento em Java. Conteúdos da aula Acompanhe os conteúdos desta aula. Se você preferir, assinale os conteúdos na medida em que for estudando. • A plataforma Java; • O ambiente Java; • Tipos de programas; • As versões do Java; • Instalando o ambiente para programação. Programação Aplicada - Java 10 SOCIESC – Sociedade Educacional de Santa Catarina Prezado(a) aluno(a), Tem um ditado nos Estados Unidos assim: “Você precisa comer antes de cozinhar. Você precisa ouvir antes de ver. Você precisa viajar antes de dirigir. E você precisa executar programas em um computador, antes de programar”. Eis o objetivo desta aula. Você saberá como a plataforma Java foi construída para executar programas e quais os componentes disponíveis que ajudam o programador na elaboração de soluções de tecnologia. Você também aprenderá como instalar o Java para programação e qual a instalação necessária para execução de programas feitos em Java. Finalmente, você conhecerá as várias versões que o Java possui e os direcionamentos tecnológicos que a plataforma está seguindo. Boa Aula! 1 A PLATAFORMA JAVA A tecnologia Java foi desenvolvida pela Sun Microsystems para que fosse uma linguagem de programação orientada a objetos, como também uma plataforma de desenvolvimento. Uma plataforma é um ambiente de hardware e software no qual um programa é executado. Algumas das plataformas mais populares são o Windows, Linux, Solaris e o Macintosh. Algumas das plataformas existentes podem ser descritas como uma combinação de sistema operacional com hardware. Java difere da maioria das plataformas de mercado, pois se posiciona como uma plataforma apenas de software, que é executada SOBRE as plataformas baseadas em hardware. A tecnologia Java pode ser utilizada para a construção de sistemas convencionais de negócios, como também para o desenvolvimento de sistemas bseados na Internet. Algumas das vantagens que a linguagem de programação Java oferece aos programadores desses dois tipos de aplicações é a sua segurança e a sua capacidade de ser independente de arquitetura, o que significa permitir ao programador a capacidade de construir programas em Java que poderão ser executados em qualquer plataforma ou sistema operacional. A plataforma Java possui dois componentes: Programação Aplicada - Java 11 SOCIESC – Sociedade Educacional de Santa Catarina • A Java Application Programming Interface (API), é uma grande coleção de componentes de software “prontos para uso” que fornecem capacidades importantes para reuso. A API Java é organizada em bibliotecas de classes e interfaces relacionadas. As bibliotecas são conhecidas como packages (pacotes – java.*, javax.* e extensões); • A Java Virtual Machine (JVM), é a base da plataforma Java, utilizada para a execução dos programas escritos e compilados em Java. Foi construída para várias plataformas de hardware e software do mercado. 2 O AMBIENTE JAVA Um programa Java pode ser executado em vários tipos de computadores por que ele não executa instruções diretamente no computador. Na verdade, executa o programa em um computador virtual conhecido como Java Virtual Machine (JVM). Você pode escrever um programa Java usando qualquer editor de textos. O arquivo contendo as instruções de programação em Java é também conhecido como código-fonte. O compilador Java converte o código-fonte em um tipo de arquivo chamado bytecode, independente de plataforma. Um programa chamado Interpretador Java verifica o bytecode e executa as instruções do bytecode, linha a linha, dentro da JVM. Considerando que o programa Java executa de forma isolada do sistema operacional, permite que possa ser executado em qualquer computador que possua uma versão JVM. Dessa forma, com a JVM sendo a responsável pela execução do programa, recursos de segurança são disponibilizados para o programador, que estão acima das fragilidades que possam existir no sistema operacional (figura 1. Programação Aplicada - Java 12 SOCIESC – Sociedade Educacional de Santa Catarina Figura 1 – O ambiente Java (JRE – Java Runtime Environment) Ao contrário do Java, o uso de outras linguagens de programação, os fornecedores de software precisam ter diferentes versões do programa para cada plataforma que deseja executá-lo. No Java uma única versão do programa é executada em todas as plataformas. O Bytecode Java permite que se realize a promessa de “escrever uma vez e executar em qualquer lugar”(figura 2). Você pode compilar seu programa em bytecode para qualquer plataforma que possua um compilador Java. Então o bytecode poderá ser executado em qualquer implementação da JVM. Isso significa que um programa construído em Windows, terá o mesmo comportamento em Linux, em Unix, etc. Programação Aplicada - Java 13 SOCIESC – Sociedade Educacional de Santa Catarina Figura 2 – O método Java “escrever uma vez, executar várias vezes” Além disso, duas tecnologias de implementação fazem parte do JRE: Java Plug-in, a qual permite que applets sejam executados nos navegadores para a Internet, e o Java Web Start, que permite a instalação de aplicações “stand alone” através de uma rede. 3 TIPOS DE PROGRAMAS Três tipos de programas podem ser construídos usando Java: • Aplicações – executadas em uma JVM instalada no sistema operacional do computador local; • Applets – executadas através de uma JVM no navegador, usando um plug-in; • Servlets – são aplicações executadas em uma JVM instalada em um servidor Web. Enquanto os applets e as aplicações são usualmente um tipo de interface gráfica com o usuário e um conjunto de funcionalidades embutidas, os servlets fornecem funcionalidades para serem consumidas por páginas Web, ou seja, através dos servlets o programador constrói recursos a serem executados em back-end no servidor Web. Desta forma, a interface como usuário de um servlet é normalmente Programação Aplicada - Java 14 SOCIESC – Sociedade Educacional de Santa Catarina uma página HTML com um formulário, que “chama” o servlet. Mas também é importante observar que um applet ou uma aplicação Java, que são executadas através de HTTP (Hypertext Transfer Protocol) podem chamar um servlet. As aplicações Java (figura 3) podem ser subdivididas em: • Aplicações Console: são as aplicações com o foco em apresentação e interface com o usuário usando apenas caracteres, por exemplo no Windows, são executadas em uma sessão do Prompt do MS-DOS; • Aplicações gráficas com Janelas: possuem uma interface gráfica com elementos visuais, como por exemplo menus, barras de ferramentas e caixas de diálogo. Figura 3 – Os tipos de aplicações Java 4 AS VERSÕES DO JAVA Desde 1995 a Sun vêm lançando várias versões do Java que é resultado das melhorias tecnológicas e inovações recebidas por profissionais do mundo todo e também como consequência de sua larga adoção. • Java 2 Platform Standard Edition (J2SE): é o kit necessário para o desenvolvimento de todas as aplicações em Java, exceto aquelas Programação Aplicada - Java 15 SOCIESC – Sociedade Educacional de Santa Catarina desenhadas para dispositivos de consumo. O J2SE já vem com um compilador, o ambiente de execução e as APIs principais do núcleo da plataforma Java; • Java 2 Platform Enterprise Edition (J2EE): esse pacote inclui um servidor de aplicações, um servidor Web, APIs específicas para a J2EE, suporte à Enterprise JavaBeans, Java Servlets API e a tecnologia Java Server Pages (JSP). O J2EE utiliza o J2SE; • Java Server Pages Development Kit (JSWDK): se você está interessado em construir e testar páginas JavaServer ou servlets, este kit fornece os componentes fundamentais para execução, incluindo o J2SE, mas se você estiver trabalhando com JavaBeans, será necessária a instalação do J2EE; • Java Platform, Micro Edition (J2ME): direcionada para os programadores que estão construindo programas para dispositivos móveis, como Palm Pilots, celulares e dispositivos de consumo, esse kit fornece as ferramentas para a compilação, disponibilização e configurações de dispositivos, incluindo as APIs específicas para cada tipo de dispositivo. A J2SE oferece um ambiente completo para suportar o desenvolvimento de sistemas, inclusive para desktop e servidores e ela é a base para todas as demais plataformas, como a J2EE. j) A plataforma J2SE versão 1.6 está distribuída em blocos que determinam sua especialidade e recursos, de acordo com a necessidade do programador. Uma visão clara sobre os componentes da plataforma está na figura 4. Programação Aplicada - Java 16 SOCIESC – Sociedade Educacional de Santa Catarina k) Figura 4 – A plataforma J2SE A versão do Java 1.0, lançada em 1995, forneceu a estrutura básica para o desenvolvimento de programas, basicamente as bibliotecas necessárias para escrever e compilar programas simples. A versão 1.1 do Java incorporou grandes avanços, lançada em 1997, com sua maior implementação para uma interface grágica (GUI), usando um pacote de bibliotecas (package) chamada AWT. Sua abordagem usando AWT foi uma grande evolução nas interfaces gráficas, já que suportava Netscape e Internet Explorer com o mesmo código. Também nesta versão foram lançados recursos para auxiliar na construção de programas com acesso a banco de dados (JDBC) e à comunicação em rede (RMI). O Java 2.0, lançado em 1998, na verdade internamente, é considerada como versão 1.2 do JDK. O principal objetivo de batizá-la como 2.0 para amplificar as mudanças significativas que ocorreram na plataforma, onde esta versão agregou mais de 500 novas classes, o dobro da versão anterior. Também nessa versão, novas adições foram incorporadas à plataforma, trazendo cada vez mais a abordagem de uso de “plu-ins” à linguagem. Uma nova capacidade de criação Programação Aplicada - Java 17 SOCIESC – Sociedade Educacional de Santa Catarina usando interfaces gráficas foi liberada, chamada SWING. As versões da J2SE começaram a ser lançadas, estando hoje na versão 6 (J2SE 1.6). O site oficial da plataforma Java e para obter maiores informações sobre as versões estão no seguinte endereço: http://java.sun.com 5 INSTALANDO O AMBIENTE PARA PROGRAMAÇÃO Antes de você iniciar os trabalhos de programação, é necessário preparar o seu computador para permitir que os programas sejam interpretados e compilados. Conforme já foi tratado anteriormente, a linguagem Java não exige que o programador utilize uma ferramenta particular para a construção de seus programas em Java. Na verdade, a linguagem nasceu com um apelo de uso livre, ou seja, incentivar o programador a escolher qual a melhor forma que deseja trabalhar, quebrando, com isso, paradigmas de algumas linguagens que demonstravam uma amarração a um ambiente de produção, o que era comercialmente aceitável. Historicamente, as linguagens compiladas não exigem necessariamente uma ferramenta para construir programas, mas a sua adoção facilita o trabalho do programador e aumenta a sua produtividade. Por isso, surgiram as IDEs (acronismo de Integrated Development Environment, ou Ambiente de Desenvolvimento Integrado) com o objetivo de auxiliar o programador na construção dos sistemas e acelerando o processo de construção, integrando em um único lugar, todos os recursos necessários para a composição de uma aplicação em Java. Nesse sentido, como a especificação Java busca estabelecer, vários fabricantes de software liberaram suas versões de IDE, sendo algumas muito conhecidas, como a Borland, a IBM e a Oracle. Outras iniciativas surgiram, de forma gratuita como o modelo de software livre, para atender aos programadores que desejavam manter uma linha de iniciativa sem custos. O produto gratuito mais utilizado no mundo Java é o Eclipse (www.eclipse.org) (figura 5). Programação Aplicada - Java 18 SOCIESC – Sociedade Educacional de Santa Catarina Figura 5 – O ambiente do Eclipse Segundo pesquisa (figura 6), o resultado do Java IDE Market Survey (http://www.qa-systems.com/products/qstudioforjava/ide_marketshare.html), o Eclipse permanece como o líder de mercado de IDE para Java. Figura 6 – Resultados da Pesquisa É importante ainda ressaltar que o grau de maturidade dessas ferramentas fez com que elas não ficassem exclusivas para uma determinada linguagem, como é Programação Aplicada - Java 19 SOCIESC – Sociedade Educacional de Santa Catarina o caso do Eclipse, que permite a construção de programas usando linguagem C++ e Java. Outro aspecto começou a incomodar a comunidade Java: à medida que as IDEs ficavam poderosas, maior era a capacidade exigida de processamento e recursos do computador, gerando um certo desconforto para os profissionais. Essa situação gerou uma nova onda de IDEs alternativos com finalidades específicas e com o objetivo de oferecer ambientes equivalentes a cada condição do profissional. Neste módulo,o utilizaremos um IDE muito simples chamado Jcreator (www.jcreator.com). Para que você possa construir programas usando o Jcreator, primeiramente você precisa efetuar a instalação do JDK (Java Development Kit) da Sun. O JDK é o pacote que fornece todas as bibliotecas principais da linguagem, o compilador e o ambiente de execução de aplicações, ou runtime, conhecido como JRE (Java Runtime Environment). Para apenas executar aplicações, basta o JRE. Em hardware Intel, o Java 2 SDK suporta as seguintes plataformas: • Windows 98, Windows NT 4.0, Windows ME, Windows XP, Windows 2000 e 2003.A versão 6 já suporta Windows Vista. A documentação da plataforma sugere que um hardware com processador Pentium 166 Mhz e 32 Mbytes de RAM são suficientes para executar aplicações com interfaces gráficas. Além disso, recomenda-se 48 Mbytes de RAM para a execução de applets a serem executados em navegadores. São necessários 120 Mbytes de disco rígido para a instalação do SDK. Efetue o download do SDK correspondente à sua plataforma no seguinte endereço oficial da Sun (figura 6): https://sdlc1a.sun.com/ECom/EComActionServlet;jsessionid=3F79837846CC 3A56F4F03527F746C218 Programação Aplicada - Java 20 SOCIESC – Sociedade Educacional de Santa Catarina Figura 6 – Página de download do JDK Após a conclusão do download, execute os seguintes passos: 1. Verifique se o arquivo baixado corresponde corretamente ao tamanho do arquivo informado na página (é aproximadamente 50 Mbytes) (figura 7); Figura 7 – Tamanho do arquivo de instalação do JDK 2. Desinstale uma versão anterior do JDK; 3. Execute o programa de instalação, efetuando um duplo clique sobre o arquivo baixado. É importante lembrar que, nas versões do Windows XP, NT, 2000, 2003 e Vista, você precisa ter privilégios como administrador para realizar a instalação; a. O programa de instalação, quando executado, apresenta um assistente de instalação, que auxilia o usuário no processo de configuração do JDK no computador. É uma abordagem que facilita para o usuário iniciante; b. A primeira tela solicita a sua concordância com os termos do contrato de licença de uso; Programação Aplicada - Java 21 SOCIESC – Sociedade Educacional de Santa Catarina c. A segunda tela, permite determinar quais os componentes do JDK você deseja instalar. É comum para o JDK, instalar todos os seus componentes; d. Após ter determinado os componentes a instalar, o programa de instalação iniciará a cópia dos arquivos do JDK para o computador; e. Ao terminar a instalação, será apresentada uma janela de confirmação de que o processo está concluído, conforme mostra a figura 8: Figura 8 – Janela de conclusão da instalação 4. Verifique a pasta de instalação do JDK. A instalação criará duas subpastas na pasta “Arquivos de Programas” do Windows: jdk1.6.0_01 e jre1.6.0_01; 5. Definindo a variável PATH no Windows XP; Você pode desenvolver em Java sem preocupar-se com a variável de ambiente PATH do Windows. Mas se deseja ter um ambiente mais conveniente para trabalhar, pode determinar o caminho onde estão as bibliotecas e o compilador do Java. a. Para configurar a variável no Windows, acesse a janela de propriedades do ícone “Meu Computador” ou através do Painel de Controle; b. Acesse guia Avançado; c. Clique no botão variáveis de ambiente, tal qual mostra a figura 9; Programação Aplicada - Java 22 SOCIESC – Sociedade Educacional de Santa Catarina Figura 9 – Janela de variáveis de ambiente d. Localize no grupo inferior de variáveis (Variáveis do sistema) a palavra TEMP e efetue um duplo clique sobre ela. Essa variável determinará onde está o compilador, a máquina virtual (JVM) e os demais utilitários da plataforma Java; e. Digite ao final do texto já existente na variável: ;C:\Arquivos de programas\Java\jdk1.6.0_01\bin Lembre-se de que a pasta Arquivos de Programas pode alterar de acordo com o idioma do Windows e a instrução inicia com o sinal de ponto-e-vírgula, para separar a instrução atual da instrução já existente na variável. Veja a figura 10. Programação Aplicada - Java 23 SOCIESC – Sociedade Educacional de Santa Catarina Figura 10 – Variável PATH f. Clique no botão OK; g. Repita os passos para a variável CLASSPATH, mas o conteúdo que deverá ser adicionado é: ;. h. Feche todas as janelas. Agora que o JDK está instalado e configurado, vamos instalar o JCreator LE, a ferramenta IDE que vamos utilizar neste móduloo. Efetue o download do arquivo do site do fabricante (http://www.jcreator.com/download.htm), de acordo com o que mostra a figura 11. Figura 11 – Página de download do Jcreator LE Repare que existem várias versões do produto e a que vamos utilizar é “freeware”, ou seja, podemos utilizar a ferramenta sem pagarmos nada e podemos inclusive replicar o produto para outras pessoas. Programação Aplicada - Java 24 SOCIESC – Sociedade Educacional de Santa Catarina Após baixar o arquivo, execute-o para entrar no programa de instalação, que é o mesmo das demais aplicações para Windows, usando um assistente de instalação. Siga os passos do programa para conduzir a instalação do JCreator. l) Ao terminar, o programa de instalação irá executar o JCreator LE. A primeira vez que você executa o JCreator, após a sua instalação, o software apresenta uma caixa de diálogo (figura 12) com o objetivo de determinar: 1) Associação dos tipos de arquivos específicos para o programa; 2) O Java Home Directory, que já definimos nas variáveis; 3) E o JavaDoc, que é a documentação da plataforma Java. Figura 12 – Configurações iniciais do JCreator O JCreator tem por finalidade oferecer caminhos rápidos e fáceis ,principalmente para o programador iniciante. O ambiente do produto já está orientado para esta particularidade. Quando você inicia o programa, uma janela central apresenta a documentação das principais opções de execução de comandos no produto (figura 13). Além disso, o produto segue os padrões gráficos das aplicações Windows, com menus, janelas, barra de ferramentas e barra de status. Programação Aplicada - Java 25 SOCIESC – Sociedade Educacional de Santa Catarina Figura 13 – Janela de início do JCreator Vamos agora testar se realmente nosso ambiente de programação está configurado adequadamente. Vamos criar uma aplicação simples e compilá-la para avaliar os resultados que teremos. 1. Clique no menu File, depois aponte para o item de menu New e no submenu apresentado, clique sobre o item File; 2. Na janela que será apresentada, selecione a opção Java Class (figura 14); Programação Aplicada - Java 26 SOCIESC – Sociedade Educacional de Santa Catarina Figura 14 – File Wizard 3. Clique no botão Next; 4. Na caixa Name, digite: Exemplo e clique no botão Finish; 5. Repare que será apresentada a estrutura inicial de uma classe Java: /** /** * @(#)Exemplo.java * * * @author * @version 1.00 2007/6/3 */ public class Exemplo { /** * Creates a new instance of <code>Exemplo</code>. */ public Exemplo() { } /** * @param args the command line arguments */ public static void main(String[] args) { Programação Aplicada - Java 27 SOCIESC – Sociedade Educacional de Santa Catarina // TODO code application logic here } } 6. Digite a seguinte instrução de código Java na área indicativa com o texto “TODO code application logic here”: System.out.println(“Exemplo de teste para o ambiente Java”); 7. Clique no botão Execute(figura 15) da barra de ferramentas; Figura 15 – Resultados do programa Programação Aplicada - Java 28 SOCIESC – Sociedade Educacional de Santa Catarina Síntese Nesta aula você aprendeu o que é a plataforma Java, sua importância e seus componentes. Agora você já consegue identificar quais as versões do Java e como cada uma de suas versões estão orientadas para determinadas necessidades. Você também conheceu um pouco da história da plataforma, extremamente resumida, mas que lhe oferece uma visão de como as tecnologias envolvidas chegaram até a versão atual da plataforma.Um dos aspectos relevantes que você pôde aprender foi entender como se iniciam os trabalhos no desenvolvimento de progamas em Java. Na próxima aula, você começará a conhecer a linguagem Java, suas regras e padrões. Será trabalhado no seu primeiro programa em Java. Até lá. Exercícios Propostos 1) Qual a principal característica da linguagem Java que a diferenciou das demais linguagens na época em foi lançada? Explique porque. ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ 2) Descreva as versões do Java e identifique qual é a base para todas as outras. ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ 3) Qual a importância do uso de um IDE para programar em Java? ______________________________________________________________ ______________________________________________________________ __________________________________________________ Programação Aplicada - Java 29 SOCIESC – Sociedade Educacional de Santa Catarina Aula 2 SINTAXE, DADOS E OOP EM JAVA Objetivos da aula Ao final desta aula, você deverá ser capaz de: • Descrever as regras de sintaxe da linguagem; • Identificar os arquivos envolvidos no processo de programação Java; • Utilizar variáveis, tipos de dados e operadores; • Aplicar os conceitos de OOP na linguagem Java. Conteúdos da aula Acompanhe os conteúdos desta aula. Se você preferir, assinale os conteúdos na medida em que for estudando. • Sintaxe; • Usando dados e variáveis; • Métodos, classes e objetos. Programação Aplicada - Java 30 SOCIESC – Sociedade Educacional de Santa Catarina Prezado(a) aluno(a), Nesta aula você aprenderá os elementos básicos da linguagem Java, especificamente suas regras de sintaxe e como um programa é organizado. Você já estudou sobre Lógica de Programação e os conceitos sobre Orientação a Objetos, agora você irá colocar em prática os assuntos, utilizando a linguagem Java. Boa Aula! 1 SINTAXE A sintaxe de uma linguagem determina a forma como os programas devem ser construídos. A linguagem Java possui um grande conjunto de regras, mas não é muito diferente das demais linguagens orientadas a objetos. Também é importante observar que alguns IDEs mais avançados já facilitam na digitação das instruções, já que fornecem ajuda e autocomplementação de código, de acordo com um determinado contexto. A linguagem Java, quanto à sintaxe, é similar às linguagens C e C++, mas com uma série de melhorias e agregações, principalmente no que se refere aos recursos orientados a objetos. A maioria dos autores consideram que o melhor caminho para aprender a sintaxe do Java é avaliando um programa simples. Vamos utilizar o programa apresentado na aula anterior para testarmos o ambiente de desenvolvimento Java que configuramos. 1 /** 2 /** 3 * @(#)Exemplo.java 4 * 5 * 6 * @author 7 * @version 1.00 2007/6/3 8 */ 9 10 public class Exemplo { 11 12 /** Programação Aplicada - Java 31 SOCIESC – Sociedade Educacional de Santa Catarina 13 * Creates a new instance of <code>Exemplo</code>. 14 */ 15 public Exemplo() { 16 } 17 18 /** 19 * @param args the command line arguments 20 */ 21 public static void main(String[] args) { 22 System.out.println(“Exemplo de teste para o ambiente Java”); 23 } 24 } As linhas que estão iniciadas com */ ou * ou // são comentários e serão desconsideradas quando o compilador realizar o trabalho de geração de código compilado. Esta condição também é aplicada para as linhas em branco no código. A combinação */...*.../* permite que você implemente comentários em múltiplas linhas. Já o uso de duas barras comuns no início da linha, aplica a condição de comentário apenas na linha corrente aonde as barras foram inseridas. A linha que contém “public class Exemplo {“ determina a declaração da classe, sendo as palavras public e class reservadas e a palavra Exemplo é o nome da classe que está sendo criada. As palavras reservadas da linguagem determinam que não podem ser utilizadas como identificadores em seu código de programação. A lista de palavras reservadas na linguagem estão na tabela 1. Programação Aplicada - Java 32 SOCIESC – Sociedade Educacional de Santa Catarina Tabela 1 – Palavras reservadas da linguagem Java O sinal de abertura de chaves, ao final da linha 10, é obrigatória e determina o início do bloco de instruções que fazem parte da classe. Todo bloco de instruções é “margeado” por chaves. Repare que há um sinal de fechamento de chaves ao final do código na linha 24. Logo em seguida, repare que a linha 15 possui uma declaração public Exemplo() {. É a criação de um método membro da classe. Nesse caso, não possui funcionalidades, já que entre as chaves de abertura e fechamento (linha 16) não exite qualquer instrução de código em Java. Depois, na linha 21, há a declaração mais importante de uma aplicação Java. Na verdade, o método Main é o ponto de entrada no programa, quando é executado. Além disso, dentro de uma aplicação Java só pode haver um método Main. A linha de código possui uma série de detalhes que veremos nas aulas seguintes, mas vamos adiantando alguns detalhes: public static void main(String[] args) { A palavra reservada public determina um modificador de acesso. A palavra static implementa ao método main a capacidade de ser acessível, mesmo que não existam objetos para a classe. Isso também indica que todo membro criado para a classe irá ter um método idêntico de main( ). Na linguagem Java, a palavra static também indica unicidade, ou seja, somente um método main ( ) da classe poderá Programação Aplicada - Java 33 SOCIESC – Sociedade Educacional de Santa Catarina ser armazenado na memória, mas obviamente outras classes poderão ter seus próprios métodos main ( ). A palavra void, basicamente, significa vazio. Quando a palavra void é utilizada na declaração do método main ( ), não significa que o método esteja vazio, mas que não retornará nenhum valor quando for chamado. Não significa que não poderá produzir saída de dados, na verdade, o método não enviará qualquer valor de retorno para o outro ponto de código que o chamou. Nem todas as classe possuem um método main ( ), a grande maioria não possui, porém, todas as aplicações Java precisam conter um método main( ), já que o compilador ou a JVM irá executar primeiro o método main( ) da aplicação. Finalmente, avaliando o método, existem parâmetros estabelecidos no método main( ). O conteúdo entre parênteses determina os argumentos que deverão ser passados para o método, quando for chamado. A palavra String representa uma classe Java que pode ser usada para representar strings de caracteres, e os símbolos de colchetes ([ ]) que acompanham a palavra, significam que a string é um array. O identificador args é usado para controlar qualquer valor String que seja enviado para o método Main. Essa palavra não é obrigatória, mas é tradicional na implementação do método main( ). A linha executável de fato no programa é a correspondente ao número da linha 21. Seu conteúdoé: System.out.println(“Exemplo de teste para o ambiente Java”); Note que a instrução foi finalizada com o sinal ; (ponto-e-vírgula). Todas as instruções na linguagem Java precisam terminar com ponto-e-vírgula. A frase “Exemplo de teste para o ambiente Java” é um argumento para o parâmetro do método println. Todo argumento para um método deve ser informado entre parênteses e quando o argumento for texto, ele deverá ser informado também entre aspas. Argumentos são informações que os métodos exigem para realizar uma determinada tarefa. No caso, o método Println imprime uma linha de texto na tela de saída e posiciona o curso para a próxima linha, mantendo o programa pronto para receber outras saídas. Os métodos são sempre acompanhados de parênteses para distingui-los de nomes de variáveis. Programação Aplicada - Java 34 SOCIESC – Sociedade Educacional de Santa Catarina A palavra out refere-se a um objeto de uma classe base do Java, que tem por finalidade apoiar as operações de tela. No caso, o método println é membro do objeto out, mas outros objetos também podem conter um método com o mesmo nome e finalidade. A palavra System é uma classe. O objeto out faz parte da classe system, que é parte integrante no núcleo de classes do Java. Um ponto importante a observar é que a linguagem Java é case sensitive, ou seja, textos digitados em maiúsculas e minúsculas são diferentes. Por isso, é fundamental que você observe as regras de digitação de determinado membro da linguagem. Finalmente, os pontos que se apresentam entre os elementos da instrução definem a hierarquia dos elementos na estrutura de classes do Java, que, nesse caso, segue: nome da classe, ponto, nome do objeto, ponto, nome do método. 1.1 Classes Java Tudo o que você utiliza em Java faz parte de uma classe. Quando você está declarando uma classe, conforme vimos no exemplo do tópico anterior, a linha public class Exemplo representa a criação de uma classe. A palavra “Exemplo” define o identificador da classe e precisa seguir as seguintes regras: • Um nome de uma classe precisa começar com um caractere alfanumérico, símbolo de sublinhado ou o sinal de cifrão; • O nome da classe somente pode conter caracteres, dígitos, sublinhados e cifrão; • Um nome de uma classe não pode conter qualquer uma das palavras listadas como reservadas da linguagem; • Um nome de uma classe não pode ser uma das seguintes palavras: true, false ou null; • O nome de uma classe não pode conter espaços. Programação Aplicada - Java 35 SOCIESC – Sociedade Educacional de Santa Catarina 1.2 Comentários Como você pôde observar, um simples programa Java recebe um grande número de linhas de código. Grandes programas que executam diversas tarefas incluem um grande volume de código, o que dificulta ainda mais a sua clareza. Os comentários nos programas são instruções que você insere no seu programa e servem para a sua documentação. Os programadores utilizam comentários para inserir informações relevantes sobre o que está sendo realizado nas próximas linhas ou na linha atual, facilitam a clareza do programa, ajudando-o a registrar detalhes que muitas vezes ficam apenas na cabeça do programador. Como melhores práticas de mercado, colocar comentários no início de uma classe, descrevendo o próposito da classe, documentação sobre seus parâmetros, o nome do autor e o controle de versão, são muito comuns. Além disso, também como prática comum, inserir no início de cada membro da classe (métodos, propriedades e eventos) uma breve descrição de sua finalidade. Existem três tipos de comentários na linguagem Java: • Comentários de linha: iniciam com duas barras (//) e aplicam-se até o final da linha corrente. Pode ser inserido no início de uma linha ou na mesma linha de uma instrução, ao seu final; • Comentários de bloco: iniciam com uma barra e um asterisco (/* e finalizam com um asterisco e uma barra (*/). Também pode ser utilizado em uma única linha, mas sua aplicação correta é para comentários que envolvam várias linhas contíguas; • Comentários Javadoc: são blocos especiais de comentários que iniciam com uma barra e dois asteriscos (/**) e finalizam com um asterisco e uma barra (*/). Você pode utilizar os comentários Javadoc para gerar documentação com um utilitário do JDK chamado javadoc. Os comentários javadoc, quando colocados imediatamente antes de uma declaração (de uma função ou variável), indica que poderão ser incluídos automaticamente em uma página HTML (gerado pelo comando javadoc). No conteúdo dos comentários javadoc, você pode utilizar descritores, que fornecem uma informação automática durante a geração da documentação. Veja esses descritores na tabela 2. Programação Aplicada - Java 36 SOCIESC – Sociedade Educacional de Santa Catarina Tabela 2 – Exemplos de descritores javadoc Para criar a documentação de um programa Java, usando os comentários javadoc, utilize o utilitário javadoc, incluído no pacote JDK do Java. O comando poderia ser assim: javadoc arquivo.java, arquivo2.java Exemplos de comentários: // Exemplo de comentário de uma linha System.out.println(“Teste”); //Exemplo de comentário de linha /* Exemplo de comentário de bloco */ /** * Programa para exemplificar o javadoc. */ public class HelloInternet { /** * Método <code>main</code>. Determina o início da execução. * @param args Recebe um array de elementos do tipo String que * será passado na linha de comando. */ public static void main (String args[]) { Programação Aplicada - Java 37 SOCIESC – Sociedade Educacional de Santa Catarina System.out.println("Hello Internet!"); } } 1.3 Executando um programa e conhecendo os arquivos da aplicação Quando você salva um arquivo de classe Java, ele deve possuir a extensão java. Este é o arquivo que deverá ser compilado usando o utilitário de compilação do J2SE, javac. Caso a compilação ocorrer sem erros, um novo arquivo será gerado com a extensão class, que é o bytecode do seu programa. O utilitário de execução de programas, ou runtime, do J2SE é o java e para executar o seu programa, simplesmente digite java nome-do-arquivo.class. Toda a operação acima é realizada em segundo plano por uma ferramenta IDE, como é o caso do JCreator. Quando você solicita ao JCreator para executar o programa, ele realiza as operações automaticamente, usando os utilitários do J2SE instalados no computador. Um arquivo bytecode é o formato binário que a JVM interpreta e converte para o código de máquina da plataforma corrente, onde o programa está sendo executado. Um bytecode contém instruções para a máquina virtual, uma tabela de símbolos e outras informações específicas para execução do programa. 1.4 Depurando um programa Se você insere instruções com erros de sintaxe em seu programa, o compilador Java irá apresentar uma mensagem de erro durante o processo de compilação e não fará a geração do bytecode correspondente. A mensagem de erro depende da origem do problema que a está gerando e o responsável pela validação e apresentação da mensagem é o compilador Java. O compilador detecta que houve uma violação das regras da linguagem e recusa a tradução para o bytecode (figura 16). Após entender e corrigir o problema indicado pelo compilador, você deverá realizar uma nova tentativa de compilação. Programação Aplicada - Java 38 SOCIESC – Sociedade Educacional de Santa Catarina Figura 16 – Ciclo de desenvolvimento Também existem os tipos de erros de lógica que não apresentam erros pelo compilador, já que as regras de sintaxe foram atendidas. O problema somente será apresentado quandoo usuário testar a aplicação e o resultado apresentado não foi o esperado. Esse tipo de erro de lógica é o mais difícil de estabilizar, já que o compilador não pode nos ajudar neste tipo de problema. É nesse contexto que novamente se reforça a necessidade do uso de uma ferramente IDE. Primeiro, porque, na maioria delas, há um validador de código durante a digitação do seu programa, indicando quando existe uma quebra de regra da linguagem e liberando o programador do método “tentativa e erro” de compilar e testar o programa. 2 USANDO DADOS E VARIÁVEIS Os dados podem ser categorizados em variáveis e constantes. Temos uma constante quando não podemos alterar o conteúdo de uma variável, depois que o Programação Aplicada - Java 39 SOCIESC – Sociedade Educacional de Santa Catarina programa foi compilado. Já uma variável permite ser alterada dinamicamente, quando o progama está em execução. Esse assunto já foi bastante trabalhado em Lógica de Programação. Como você já aprendeu, as variáveis são áreas de memória nomeadas que seu programa pode utilizar para armazenar informações. Você aplica nomes às variáveis em Java, usando as mesmas regras usadas para identificadores de classes. As variáveis precisam começar com uma letra e não se pode utilizar uma palavra reservada da linguagem. Em Java, é obrigatória a declaração de todas as variáveis que serão utilizadas no programa. A declaração de uma variável em Java inclui: • O tipo de dados que identificará o tipo de informação a ser armazenada na variável; • Um identificador como nome da variável; • Um valor opcional de atribuição, quando você deseja que uma variável já possua um valor inicial; • O sinal de ponto-e-vírgula ao final da linha de declaração. A linguagem Java não exige padronização de nomes de classes e variáveis, porém, há convenções para a forma de nomeá-los de maneira que outros programadores tenham maior facilidade em entender o sistema. Vejamos algumas delas: • O nome de classes deve começar com letra maiúscula (por exemplo: class Banco); • O nome de métodos, atributos e variáveis deve começar sempre com letra minúscula (por exemplo: comprar( )); • O nome de constantes deve utilizar todas as letras maiúsculas; • Utilizar nomes compostos para melhorar a clareza dos nomes, por exemplo, MeuCarrinhoCompras; • As variáveis locais deverão utilizar a primeira letra referente ao tipo primitivo de dados que está sendo utilizado, por exemplo, byte b, char c, etc.) e as palavras subseqüentes usando nomes compostos. Sintaxe para a declaração de variáveis: [Tipo de Dados] Nome da variável = [Valor Inicial]; A declaração de uma variável sem valor inicial é: Programação Aplicada - Java 40 SOCIESC – Sociedade Educacional de Santa Catarina int TempoCompra; E a declaração da variável com valor inicial é: int TempoCompra = 25; Há também a declaração de múltiplas variáveis que, nesse caso, pode agrupar variáveis do mesmo tipo em uma única declaração. int TempoCompra = 25, Identificador = 1; Se você desejar declarar variáveis de tipos diferentes, é obrigatório utilizar uma instrução para cada declaração. int TempoCompra = 25; double ResultadoCalculo; 2.1 Constantes Constante é uma varíavel com valor fixo, que não se altera durante a execução do programa. Por isso, toda constante, quando declarada, precisa receber imediatamente um valor no código de programação, caso contrário nunca receberá um valor durante a execução do programa. Para declarar uma constante, utilize a palavra reservada final na seguinte sintaxe: static [Tipo de Dados] final Nome da variável = [Valor]; 2.2 Tipos de dados Como vimos anteriormente, o uso de variáveis e constantes precisa ser acompanhado do uso do tipo de dados que será armazenado. O compilador Java fornece oito tipos de dados NATIVOS, que ficam automaticamente disponíveis para o programador, sem a necessidade de realizar qualquer parametrização para utilizá- los. São eles: • int: usado para armazenar números inteiros. Quando atribuir valores, não utilizar aspas e pode utilizar o sinal de menos para especificar números negativos; • byte, short e long: são variações do tipo de dados inteiro. Os tipos byte e short são utilizados quando há conhecimento claro dos limites menores Programação Aplicada - Java 41 SOCIESC – Sociedade Educacional de Santa Catarina que deverão ser utilizados, com isso, há capacidade de redução do consumo de memória. Já o tipo de dados long é usado quando há conhecimento do tamanho maior dos dados que poderão ser armazenados, com isso, ocupando maior espaço na memória; • boolean: o tipo de dados booleano, como o próprio nome descreve, somente pode armazenar os valores verdadeiro ou falso. Seu uso é comum quando precisamos realizar algum teste condicional e este deve ser armazenado para futuro uso; • float e double: esses tipos de dados são relacionados a manter o armazenamento de valores de ponto flutuante, incluindo quatro valores especiais: infinito positivo, infinito negativo, zero negativo e valores not-a- number (NaN). São valores que contêm posições decimais. O float possui a capacidade de precisão de 6 a 7 dígitos, enquanto o double permite a precisão de 14 a 15 dígitos; • char: este tipo de dados permite o armazenamento de caracteres no padrão Unicode. Tipos de dados também chamados de primitivos, por participarem do núcleo da plataforma Java. Além disso, servem de base para tipos mais complexos, chamados tipos referência. Um dos maiores obstáculos para conseguirmos independência de plataforma e com isto obter a portabilidade das aplicações é a ausência de padrões para armazenamento de dados na memória. Cada equipamento e cada CPU possui seus próprios padrões e formatos para o armazenamento de tipos básicos. A linguagem Java determina um padrão de tamanho e formato para cada tipo de dados nativo e deixa para o “interpretador” implementar o tamanho e formato particular para a arquitetura em que o programa Java está em execução. Veja os tipos de dados na tabela 3. Programação Aplicada - Java 42 SOCIESC – Sociedade Educacional de Santa Catarina Tabela 3 – Tipos de dados e seus limites É importante destacar que escolher os tipos de dados apropriados, permite que o seu programa ocupe menos espaço na memória. Além disso, o compilador irá apresentar um erro para qualquer valor fora do intervalo permitido pela variável, servindo, dessa forma, também como um validador da lógica implementada no programa. 2.3 Operadores Aritméticos Os operadores aritméticos (tabela 4) permitem a manipulação de valores em sua aplicação. Eles seguem as mesmas regras de outras linguagens. Tabela 4 – Operadores aritméticos Ao combinar operadores em uma expressão em Java, você precisa conhecer a precedência de cada operador. A precedência determina em que ordem as operações de uma expressão serão realizadas. O parêntese pode ser usado para sobrepor a precedência. Nesse contexto, a ordem de precedência é: 1. Operadores multiplicativos: * / % Programação Aplicada - Java 43 SOCIESC – Sociedade Educacional de Santa Catarina 2. Operadores aditivos: + - public class ExemploVariaveis { public static void main(String[] args) { int oneInt = 315; short oneShort = 23; long oneLong = 1234567876543L; System.out.println(“O inteiro é ” + oneInt); System.out.println(“O tipo Short é “ + oneShort); System.out.println(“O tipo long é “ + oneLong); int valor1 = 43, valor2 = 10, soma, diferenca, produto � coeficiente, modulo; soma = valor1 + valor2; diferenca = valor1 – valor2; produto =valor1 * valor2; coeficiente = valor1 / valor2; modulo = valor1 % valor2; System.out.println(“A soma é “ + soma); System.out.println(“O produto é “ + produto); System.out.println(“O coeficiente é “ + coeficiente); System.out.println(“O módulo é “ + modulo); } } 2.4 Conversão de tipos numéricos Quando você está trabalhando com variáveis e constantes do mesmo tipo, o resultado da operação aritmética mantém o mesmo tipo de dados. Por exemplo, quando você divide dois números de tipo int, o resultado será um número também do tipo int. Ás vezes, porém, você precisa realizar operações aritméticas com tipos de dados diferentes. Nessas condições, o Java escolhe um tipo unificando o resultado. O Java converte automaticamente os operandos para o tipo unificado, mas sempre que existir a garantia que não haverá perda de de dados (tipos menos para tipos maiores, tipos de menor precisão em tipos de maior precisão e inteiros em ponto-flutuante). A lista seguinte apresenta, em ordem de precedência, os tipos de dados dos operandos e qual o resultado unificado que deverá apresentar entre duas variáveis: Programação Aplicada - Java 44 SOCIESC – Sociedade Educacional de Santa Catarina 1. double; 2. float; 3. long; 4. int; 5. short; 6. byte. Você pode explicitamente sobrepor a unificação dos tipos impondo ao compilador Java executar uma operação chamada cast (coerção). Com o Type casting o programador assume o risco da conversão dos tipos de dados envolvidos na expressão. O operador cast possui maior precedência sobre os demais operadores. public class ExemploCast { public static void main(String[] args){ boolean t = true; byte b = 2; short s = 100; char c = 'C'; int i = 200; long l = 24000; float f = 3.14f; double d = 0.000000000000053; String g = "Texto"; System.out.println("Os valores comuns das variáveis "); System.out.println("t = " + t ); System.out.println("b = " + b ); System.out.println("s = " + s ); System.out.println("c = " + c ); System.out.println("i = " + i ); System.out.println("l = " + l ); System.out.println("f = " + f ); System.out.println("d = " + d ); System.out.println("g = " + g ); System.out.println(); //Convertendo de booleando para byte b = (byte)(t?1:0); System.out.println("Valor de b após conversão: " + b); Programação Aplicada - Java 45 SOCIESC – Sociedade Educacional de Santa Catarina //Convertendo de booleano para short s = (short)(t?1:0); System.out.println("Valor de s após conversão: " + s); //Convertendo de booleano para inteiro i = (int)(t?1:0); System.out.println("Valor de i após conversão: " + i); //Convertendo de booleano para char c = (char)(t?'1':'0'); System.out.println("Valor de c após conversão: " + c); c = (char)(t?1:0); System.out.println("Valor de c após conversão para Unicode: � " + c); //Conversão de booleano para long l = (long)(t?1:0); System.out.println("Valor de l após conversão: " + l); //Conversão de booleando para float f = (float)(t?1:0); System.out.println("Valor de f após conversão: " + f); //Convertendo booleano para double d = (double)(t?1:0); System.out.println("Valor de d após conversão: " + d); //Convertendo booleano para string g = String.valueOf(t); System.out.println("Valor de g após conversão: " + g); g = (String)(t?"1":"0"); System.out.println("Valor de g após conversão: " + g); int sum = (int)(b + i + l + d + f); System.out.println("Valor da soma após conversão: " + sum); } } Programação Aplicada - Java 46 SOCIESC – Sociedade Educacional de Santa Catarina 3 MÉTODOS, CLASSES E OBJETOS 3.1 Métodos Um método é uma série de instruções que tem por objetivo realizar uma determinada tarefa (figura 17). Qualquer classe em Java pode conter um número ilimitado de métodos. Em resumo, são operações que manipulam o estado de um objeto e podem fazer parte da interface do objeto (pode ser utilizado por outras classes) ou realiza uma atividade interna na classe. Sua composição é similar a uma função, onde o principal objetivo é o reuso e sua sintaxe é a seguinte: Figura 17 – Exemplo de método Como você pôde perceber, as regras são as mesmas. A declaração do método pode conter: • Modificadores de acesso (opcional), por exemplo, public (tabela 5). Além disso, pode ser private, protected ou static. Na maioria das vezes, o método é acessível externamente, tornando sua natureza pública e permitindo que outras classes o utilizem; Programação Aplicada - Java 47 SOCIESC – Sociedade Educacional de Santa Catarina Tabela 5 – Modificadores possíveis usando métodos • Tipo de retorno do método, por exemplo, void, que significa que não retorna valor; • O nome do método; • A lista de parâmetros do método, entre parentêses e separados por ponto- e-vírgula. No exemplo, não existem parâmetros e por isso a declaração apresenta apenas os parênteses sem conteúdo; • Finalmente, no corpo do método estão as instruções para realizar uma determinada tarefa que, nesse caso, irá imprimir três linhas de texto. Para “chamar” o método criado, você deve utilizar o nome declarado. No exemplo, o nome do método é Apresenta (figura 18). Simplesmente digitando Apresenta( ) em qualquer ponto do código, irá disparar o método criado. Programação Aplicada - Java 48 SOCIESC – Sociedade Educacional de Santa Catarina Figura 18 – Chamando o método Vamos ver agora como trabalhar com parâmetros nos métodos. O objetivo de aplicar parâmetros é permitir que ocorra uma troca de informações entre o código que chamou o método e o próprio método. Através dos parâmetros é possível que seja enviado um determinado valor para ser processado pelo método e esse, por sua vez, possui rotinas internas que manipulam o valor, transformam e podem retornar o resultado para o código que o chamou. Não há limite para a inserção de parâmetros. Realizando uma comparação com o mundo real, imagine que você precisa escrever um método para “calcular o risco de um empréstimo”. Esse cálculo envolve um conjunto de parâmetros que são elementos fundamentais para um bom ou mau resultado do risco. Informações como tempo em que o contratante possui relacionamento com a instituição, qual o valor do empréstimo, remuneração atual da pessoa e histórico de empréstimos anteriores, são parâmetros para que uma determinada tarefa seja realizada. Essa é a mesma abordagem dos métodos. Um princípio importante na programação orientada a objetos é a noção de implementação de encapsulamento. Quando você faz a chamada para um método, não sabe os detalhes de como foi executado. No exemplo anterior, a fórmula de cálculo do risco do empréstimo não é de seu conhecimento e você apenas se preocupa em utilizar bem o método, como passando parâmetros adequados para o resultado esperado (figura 19). Programação Aplicada - Java 49 SOCIESC – Sociedade Educacional de Santa Catarina Quando você realiza a chamada para um método, essa instrução deve conter o nome do método e os seus parâmetros, na ordem que foram estabelecidos e separados por ponto-e-vírgula. Figura 19 – Passando parâmetros e usando no método Lembre-se de que os parâmetros não são obrigatórios, bem como não há limite para a quantidade de parâmetros que um método pode conter. Perceba também que um parâmetro é usado no corpo do método, como uma variávele por isso, é necessária a declaração do parâmetro incluindo o tipo de dados. Finalmente vamos tratar sobre mais um elemento que estende as capacidades de um método: o retorno de valor (figura 20). Um método pode retornar valor para o ponto de código que o chamou. Pode ser de qualquer tipo de dados suportado pela linguagem Java, bem como, pode retornar nada usando a declaração void. Programação Aplicada - Java 50 SOCIESC – Sociedade Educacional de Santa Catarina Figura 20 – Valor de retorno do método Para que possamos utilizar um método e seu retorno, é necessário que o código que o chamou tenha condições de “receber” o valor retornado. Por exemplo, o método da figura 20pode ser armazenado em uma varíavel. Resultado = CalcularRisco(5000.00); Reforço aqui o uso de métodos: é a forma mais eficiente para o uso de encapsulamento e reuso na linguagem Java. Abuse na sua utilização, mas faça sempre um planejamento para que sua construção tenha sentido e possa ser claramente entendido pelo programador, usuário de sua classe. 3.2 Classes Quando você pensa em orientação a objetos, tudo é uma classe e todo objeto é membro de uma classe. Como você já aprendeu, é comum o uso de comparações com o mundo real para exemplificar classes e objetos. Novamente o conceito de classes é muito útil para obter reuso. Os objetos “herdam” atributos da classe e todos recebem atributos, já que são membros. Os componentes de dados de uma classe são, às vezes, referenciados como variáveis instanciadas. Os atributos do objeto derivados de uma classe também são chamados de “campos”, com o objetivo de disntigui-los das demais variáveis que possam existir no mesmo contexto. Além de seus atributos, os objetos derivados de uma classe possuem métodos que lhe Programação Aplicada - Java 51 SOCIESC – Sociedade Educacional de Santa Catarina são associados e todo objeto, que é uma instância de uma classe, assume-se que possui os mesmos métodos. As classes definem a estrutura e o comportamento de um determinado tipo de objeto. Na verdade, podemos considerá-las como “modelos” de objetos e sua composição pode ser reutilizada por objetos derivados, o que são chamados de instâncias do objeto. Ao criar uma classe, você precisa atribuir um nome para ela e determinar os métodos e os dados que farão parte da classe, também conhecidos como membros. Para criar uma classe, a declaração pode conter: • Um modificador de acesso (opcional); • A palavra reservada class; • Qualquer identificador válido para o nome da classe. public class Funcionario(); A palavra public (tabela 6) refere-se ao modificador de acesso. Você pode utilizar, por exemplo, os seguintes modificadores de acesso na declaração de uma classe: public, final ou abstract. Se você não especificar nenhum modificador, a classe naturalmente receberá o modificador public. Tabela 6 – Modificadores possíveis usando classes As classes públicas são acessíveis por todos os objetos, significa que podem ser estendidas ou utilizadas como base para outras classes. O acesso mais liberal para uma classe é o public. Os demais modificadores implementam certas restrições Programação Aplicada - Java 52 SOCIESC – Sociedade Educacional de Santa Catarina no uso da classe e somente são utilizados em circunstâncias especiais. O modificador public é o mais comum utilizado. Após declarar a classe, você deve construir o corpo de instruções da classe, que devem ser incluídos dentro de sinais de chaves. public class Funcionario() { //Instruções em código Java } Você pode inserir variáveis de instâncias, ou campos, declarando-as dentro do bloco de instruções da classe. A declaração das variáveis, por uma boa prática, sempre é realizada usando um modificador que pode ser: private, public, static e final. A maioria dos campos de uma classe são private, que fornece o mais alto nível de segurança. O uso de private determina que nenhuma outra classe poderá acessar o valor armazenado na variável e somente os métodos da mesma classe poderão utilizá-la. Esse é um recurso na OOP, que determina o encapsulamento, ou seja, o usuário não tem acesso ao conteúdo da classe. public class Funcionario() { private int CodFuncionario; } 3.3 Trabalhando com objetos Segundo a teoria de OOP, objetos possuem estado, comportamento e identidade. O estado de um objeto é mantido por um ou mais atributos (que são as variáveis membro do objeto), o comportamento é implementado por métodos e a identidade é a referência exclusiva que cada instância tem. Enquanto os atributos são variáveis, contendo alguma informação pertinente ao objeto, um método é uma função associada a ele. Declarar uma classe não cria objetos. Uma classe é uma abstração do que um objeto é ou será quando for instanciada a classe. Todas as características de um item a ser produzido em uma fábrica, primeiro é projetado. A classe é um projeto de Programação Aplicada - Java 53 SOCIESC – Sociedade Educacional de Santa Catarina objeto, pois contém informações sobre como o objeto possui informações, como deve ser utilizado e como deve ser identificado. O processo de criação de um objeto, ou instanciação de uma classe, é conduzido através de dois passos. Ao declarar uma variável, você determina o tipo de dados que ela deverá conter e um identificador, referência nomeada da memória que possuirá o dado armazenado. Quando você declara uma variável do tipo inteiro (int), o compilador está sendo notificado de que um valor inteiro será armazenado na área de memória. A mesma operação é realizada quando estamos criando um objeto. Na sua declaração, a primeira informação que precisa ser passada ao compilador é o nome da classe que será utilizada para compor o objeto. Funcionario exemploFunci = new Funcionario(); No exemplo, a palavra Funcionario é o tipo do objeto, ou seja, a classe que irá originar o objeto e a palavra exemploFunci é o nome do objeto. O operador new determina para o compilador a reserva de memória para o objeto e depois seguido da declaração do método Funcionario( );. Essa declaração é chamada de o construtor da classe, o que veremos mais adiante. Quando você não escreve explicitamente um construtor para a classe, o Java escreve uma para você e o nome do método construtor é sempre o nome da própria classe. public class Automovel { String modelo,cor; int ano; boolean estadoMotor = false; public void ligaMotor() { estadoMotor = true; } public void informaDados() { String motorString; if (estadoMotor){ motorString = " ligado"; } else{ Programação Aplicada - Java 54 SOCIESC – Sociedade Educacional de Santa Catarina motorString = " desligado"; } System.out.println("Automovel:" + modelo + " " � + ano + " " + cor + motorString); } } public class AgenciaAutomoveis { public static void main(String args[]) { // Criando os objetos (instancias) da classe Automovel: Automovel fusca = new Automovel(); Automovel gol = new Automovel(); fusca.modelo = "Fusca"; fusca.cor = "Preto"; fusca.ano = 69; gol.modelo = "Gol"; gol.cor = "Vermelho"; gol.ano = 96; // Ligando o motor de um automoveis: fusca.ligaMotor(); // Mostrando informações dos automóvel fusca.informaDados(); gol.informaDados(); } } 3.4 Construtores Quando você cria uma classe e uma instância dessa classe, ou cria um objeto, como vimos, você está chamando um método construtor que possui o mesmo nome da classe que,por sua ausência, o compilador Java cria automaticamente. Um método construtor é o responsável pela criação do objeto, mas é comum a necessidade de interferir no processo de criação, principalmente para reforçar determinadas regras que a classe pode precisar manter. Programação Aplicada - Java 55 SOCIESC – Sociedade Educacional de Santa Catarina Para realizar essa definição na classe, você pode declarar explicitamente um método com o mesmo nome da classe e inserir em seu bloco de instruções (entre as chaves), um conjunto de regras que deverão ser seguidas durante a instanciação da classe, ou seja, após o objeto ter sido criado, o conjunto de instruções contidas no construtor serão executadas. public class Pessoa { private String nome; private int idade; public Pessoa(String nome, int idade) { this.nome = nome; this.idade = idade; } } 3.5 Garbage Collection Nesse momento, você pode imaginar que um programa Java pode conter inúmeras classes e vários objetos em memória, instanciando-as. À medida que você instancia classes, a alocação de memória ocorre naturalmente, fazendo com que seja ocupada por um grande número de armazenamentos e, por sua vez, precisa ser liberada quando não for mais necessário. Para auxiliar o programador na tarefa de gerenciamento de memória da aplicação, a plataforma Java oferece um processo chamado “Garbage Collection”, executado em segundo plano, como um sistema operacional, que registra toda memória alocada e mantém contagem do número de referências para cada ponto da memória. A JVM, periodicamente, verifica se há na memória alguma referência com valor 0, procedendo então a desalocação. Em resumo, esse processo é responsável por liberar parte da memória alocada que não é mais referenciada. Essa condição é necessária, garantindo que os objetos não mais necessários para o programa em execução sejam lixos e possam ser excluídos da memória. Programação Aplicada - Java 56 SOCIESC – Sociedade Educacional de Santa Catarina Essa funcionalidade faz parte do núcleo do ambiente de execução Java, com o objetivo de liberar os programadores da necessidade de liberar memória alocada, o que, em linguagens mais antigas era exigido e gerava mais um trabalho para o progamador (quando não esquecia de fazê-lo). Além disso, com o uso do Garbage Collection, há garantia da integridade do programa, deixando a responsabilidade do que deve ou não ser descarregado da memória a cargo do processo do JRE, não gerando com isso risco de uma exclusão indevida na memória. Síntese Nesta aula tivemos a grande oportunidade de conhecer a aplicação da OOP em Java. É a união dos conceitos que você já aprendeu com a prática da implementação de classes e objetos em Java. Na próxima aula você aprenderá mais detalhes para a construção do corpo de instruções em linguagem Java, com o uso de estruturas de dados. As peças vão se encaixando cada vez mais, na direção de aplicações mais complexas em Java. Até lá. Programação Aplicada - Java 57 SOCIESC – Sociedade Educacional de Santa Catarina Exercícios Propostos 1) .Por que devemos utilizar modificadores na declaração campos em uma classe? ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ 2) Qual a necessidade do Garbage Collection? ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ 3) O que é um método construtor? ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ Programação Aplicada - Java 58 SOCIESC – Sociedade Educacional de Santa Catarina Aula 3 ESTRUTURAS DE PROGRAMAÇÃO Objetivos da aula Ao final desta aula, você deverá ser capaz de: • Trabalhar com lógica condicional em Java; • Utilizar os operadores lógicos; • Implementar blocos de repetição em Java; • Descrever com detalhes o uso de strings e arrays. Conteúdos da aula Acompanhe os conteúdos desta aula. Se você preferir, assinale os conteúdos na medida em que for estudando. • Trabalhando com estruturas de dados; • Controle de fluxo; • Operadores lógicos; • Blocos de repetição (loops); • Strings; • Arrays Programação Aplicada - Java 59 SOCIESC – Sociedade Educacional de Santa Catarina Prezado(a) aluno(a), Nesta aula você aprenderá a trabalhar com blocos de programação em Java. Vamos inicialmente falar sobre as princípais características para trabalhar com blocos de código e suas particularidades. Depois vamos tratar das estruturas convencionais de lógica, como controle de fluxo e loops. Finalmente, vamos dar uma atenção especial nos trabalhos com strings e arrays. Perceba que na maioria do conteúdo desta aula, vamos aplicar os conceitos de lógica de programação e OOP, que você já aprendeu, usando a linguagem Java e entendendo suas regras e sintaxe. Boa Aula! 1 TRABALHANDO COM ESTRUTURAS DE DADOS O conteúdo de instruções de código Java entre chaves é considerado um bloco de código. É comum encontrarmos blocos de código dentro de outro bloco como também blocos de código separados em uma mesma classe (figura 21). O principal objetivo de compreender os limites de um bloco é entender como funciona o escopo de dados na linguagem Java. Figura 21 – Blocos de código em uma classe A regra principal é: ao declarar uma variável em um programa, você não pode utilizar o valor armazenado nela em outro programa. Quando a variável está dentro de um bloco, você não pode referenciá-la em outro bloco. A este tipo de limitação Programação Aplicada - Java 60 SOCIESC – Sociedade Educacional de Santa Catarina chamamos escopo. Isso também determina que um mesmo nome de variável não pode ser declarado duas vezes no mesmo bloco. Novamente o uso de modificadores de acesso (tabela 7) são fundamentais para o uso adequado de variáveis de acordo com seu escopo. Quando não é especificado o modificador na declaração da variável, ela é considerada friendly (amigável) e poderá ser acessada por todas as classes que pertencem ao pacote. Tabela 7 – Modificadores de escopo 1.1 Sobrecarga de métodos À medida que implementamos métodos em nossas classes, é comum termos um grande número de métodos para atender determinadas necessidades. O conceito de sobrecarga de métodos é a capacidade de implementar métodos com o mesmo nome em uma mesma classe. O compilador consegue diferenciá-los pela assinatura do método, composta do identificador do método, o tipo de retorno, os tipos de dados dos parâmetros e a quantidade de parâmetros. Esse recurso é muito útil na criação de classes cujos métodos utilizam parâmetros opcionais, exigindo a criação de métodos com diferentes quantidades e tipos de parâmetros. A sobrecarga de métodos é uma das formas de implementação do polimorfismo em Java. class ContaBancaria { int numeroDeConta; int nomeDoCorrentista; int saldo; Programação
Compartilhar