Autor José Jesse Gonçalves Graduado em Licenciatura em Matemática pela Universidade Estadual de São Paulo - UNESP, de Presidente Prudente (1995), com especialização em Análise de Sistemas (1999) e mestrado em Gestão do Conhecimento e da Tecnologia da Informação (2008), ambos pela UCB . Foi professor em cursos de Sistemas de Informação do ensino superior, além de desenvolvedor e roteirista de cursos de Educação a Distância. Possui publicações na área de Informática na Educação e, atualmente, é Gerente de Projetos do Instituto Nacional de Estudos e Pesquisas Educacionais Anísio Teixeira (Inep). Revisão NT Editora e Figuramundo Projeto Gráfico NT Editora Editoração Eletrônica NT Editora e Figuramundo Capa NT Editora NT Editora, uma empresa do Grupo NT SCS Q2 - Bl. D - Salas 307 e 308 - Ed. Oscar Niemeyer CEP 70316-900 - Brasília - DF Fone: (61) 3421-9200 [email protected] www.nteditora.com.br e www.grupont.com.br Programação de Computadores II: Java. / NT Editora. -- Brasília: 2014. 82p. : il. ; 21,0 X 29,7 cm. ISBN - 978-85-68004-69-2 1. Programação de Computadores II - Java. Copyright © 2014 por NT Editora. Nenhuma parte desta publicação poderá ser reproduzida por qualquer modo ou meio, seja eletrônico, fotográfico, mecânico ou outros, sem autorização prévia e escrita da NT editora. LEGENDA ÍCONES Prezado(a) aluno(a), Ao longo dos seus estudos, você encontrará alguns ícones na coluna lateral do material didático. A presença desses ícones o(a) ajudará a compreender melhor o conteúdo abordado e também como fazer os exercícios propostos. Conheça os ícones logo abaixo: Saiba Mais Esse ícone apontará para informações complementares sobre o assunto que você está estudando. Serão curiosidades, temas afins ou exemplos do cotidiano que o ajudarão a fixar o conteúdo estudado. Importante O conteúdo indicado com esse ícone tem bastante importância para seus estudos. Leia com atenção e, tendo dúvida, pergunte ao seu tutor. Dicas Esse ícone apresenta dicas de estudo. Exercícios Toda vez que você vir o ícone de exercícios, responda às questões propostas. Exercícios Ao final das lições, você deverá responder aos exercícios no seu livro. Bons estudos! Sumário 1. CONVERSA INICIAL��������������������������������������������������������������������������������������������������� 7 1.1 O que é o Java?�������������������������������������������������������������������������������������������������������������������������������������� 7 1.2 Como o Java funciona?���������������������������������������������������������������������������������������������������������������������� 8 1.3 Características da linguagem Java������������������������������������������������������������������������������������������������� 9 2. PREPARANDO O AMBIENTE����������������������������������������������������������������������������������� 13 2.1 Introdução��������������������������������������������������������������������������������������������������������������������������������������������13 2.2 Baixando o JDK�����������������������������������������������������������������������������������������������������������������������������������14 2.3 Instalação do JDK�������������������������������������������������������������������������������������������������������������������������������15 2.4 Verificando a instalação�������������������������������������������������������������������������������������������������������������������15 3. MEU PRIMEIRO PROGRAMA EM JAVA������������������������������������������������������������������ 20 3.1 Introdução��������������������������������������������������������������������������������������������������������������������������������������������20 3.2 Um programa simples em Java�����������������������������������������������������������������������������������������������������20 3.3 Comentários e espaços em branco����������������������������������������������������������������������������������������������20 3.4 Declaração da classe pública���������������������������������������������������������������������������������������������������������22 3.5 Declaração do método main()�������������������������������������������������������������������������������������������������������23 3.6 Compilando e executando o programa�������������������������������������������������������������������������������������25 4. TIPOS PRIMITIVOS DE DADOS E DECLARAÇÃO DE VARIÁVEIS E CONSTANTES������ 29 4.1 Tipos primitivos de dados���������������������������������������������������������������������������������������������������������������29 4.2 Nomes de variáveis����������������������������������������������������������������������������������������������������������������������������31 4.3 Declaração de variáveis��������������������������������������������������������������������������������������������������������������������31 4.4 Inicialização de variáveis�����������������������������������������������������������������������������������������������������������������32 4.5 Constantes��������������������������������������������������������������������������������������������������������������������������������������������32 5. OPERAÇÕES COM VARIÁVEIS�������������������������������������������������������������������������������� 37 5.1 Operadores aritméticos�������������������������������������������������������������������������������������������������������������������37 5.2 Forma reduzida e hierarquia dos operadores aritméticos��������������������������������������������������38 5.3 Operadores de incremento e decremento�������������������������������������������������������������������������������39 5.4 Expressões lógicas�����������������������������������������������������������������������������������������������������������������������������40 5.5 Operadores relacionais��������������������������������������������������������������������������������������������������������������������40 4 NT Editora 6. CONTROLE DE FLUXO�����������������������������������������������������������������������������������������������48 6.1 Introdução����������������������������������������������������������������������������������������������������������������������������������������������48 6.2 If-else��������������������������������������������������������������������������������������������������������������������������������������������������������48 6.3 Switch-case���������������������������������������������������������������������������������������������������������������������������������������������49 6.4 While���������������������������������������������������������������������������������������������������������������������������������������������������������51 6.5 Do-while��������������������������������������������������������������������������������������������������������������������������������������������������52 6.6 For��������������������������������������������������������������������������������������������������������������������������������������������������������������52 7. CONCEITOS BÁSICOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS������������������57 7.1 Introdução����������������������������������������������������������������������������������������������������������������������������������������������57 7.2 Classes e objetos����������������������������������������������������������������������������������������������������������������������������������57 7.3 Encapsulamento�����������������������������������������������������������������������������������������������������������������������������������59 7.4 Herança����������������������������������������������������������������������������������������������������������������������������������������������������60 7.5 Sobreposição de métodos����������������������������������������������������������������������������������������������������������������61 8. CLASSES E OBJETOS COM JAVA������������������������������������������������������������������������������65 8.1 Introdução����������������������������������������������������������������������������������������������������������������������������������������������65 8.2 Definindo atributos da classe����������������������������������������������������������������������������������������������������������65 8.3 Instanciando a classe��������������������������������������������������������������������������������������������������������������������������66 8.4 Instanciando a classe��������������������������������������������������������������������������������������������������������������������������66 8.5 Encapsulamento�����������������������������������������������������������������������������������������������������������������������������������70 8.6 Construtores�������������������������������������������������������������������������������������������������������������������������������������������73 8.7 Estendendo uma classe���������������������������������������������������������������������������������������������������������������������77 Programação de Computadores II: Java 5 1. CONVERSA INICIAL Se você já tem experiência em lógica de programação e já andou se aventurando em algoritmos com alguma linguagem estruturada, isso lhe ajudará a entender mais rapidamente os conceitos abordados aqui. “Como assim? A linguagem Java é orientada a objetos? Em que a programação estruturada vai me ajudar?” Pode ajudar, e muito. Apesar de a orientação a objetos ser outro paradigma, uma forma diferente de compreender e “modelar” o mundo, conceitos aprendidos em programação estruturada também são usados. Os conceitos sobre orientação a objetos serão abordados com mais detalhes nas próximas lições. Vamos conhecer agora um pouco mais sobre a tecnologia Java. 1.1 O que é o Java? A linguagem de programação Java é resultante de um trabalho consistente de pesquisa e foi anunciada formalmente pela Sun Microsystems em 1995. Reprodução proibida. Copyright © NT Editora. Todos os direitos reservados. Por ser uma tecnologia voltada à Internet, suas características chamaram a atenção da comunidade de negócios por causa do enorme interesse na World Wide Web, que estava em plena expansão. Além disso, o Java provocou bastante entusiasmo entre os desenvolvedores, pois não se trata apenas de uma linguagem de programação. O Java também apresenta uma rica biblioteca, um ambiente para o desenvolvimento e execução de programas seguros e portáveis, não se prendendo, assim, a sistemas operacionais “proprietários”. Exercitando o conhecimento... Java não é apenas uma linguagem de programação orientada a objetos. ( )Certo ( )Errado SUMÁRIO Programação de Computadores II: Java 7 De modo geral, o termo Java é usado para se referir, além da linguagem de programação orientada a objetos, ao ambiente de desenvolvimento e ao ambiente de execução. O ambiente de desenvolvimento Java é constituído, dentre diversos outros utilitários, por: um compilador (o javac), uma Máquina Virtual (a JVM), um gerador de documentação (javadoc) e um conjunto padronizado de bibliotecas de classes. A Java Virtual Machine (JVM), que quer dizer Máquina Virtual Java, permite a portabilidade do código Java. Ela fica embutida nas plataformas, como que simulando um processador, e pronta para interpretar os códigos Java compilados. Applets: programas executados dentro de um navegador Web. Quando um navegador carrega uma página da Web que contém um applet, o applet é baixado para o navegador e começa a ser executado. O appletviewer permite a visualização de applets fora de um navegador Web. 8 1.2 Como o Java funciona? Vamos entender melhor como o Java funciona? 1 – Código-fonte: Na linguagem de programação Java, os códigos-fontes são primeiramente escritos em arquivos textos armazenados com a extensão .java. 2 – Compilador: O documento com a extensão .java é executado em um compilador de código-fonte, o javac. O compilador procura por erros e não permite que o código-fonte seja compilado enquanto erros forem detectados. 3 – Saída (código): Os códigos fontes são, então, compilados em arquivos .class, pelo compilador javac. Os arquivos .class não contém códigos nativos dos processadores de máquinas, em vez disso, possuem bytecodes (linguagem de máquina da Máquina Virtual Java). 4 – Máquinas Virtuais Java: Finalmente, a ferramenta de execução java roda a aplicação com uma instância da JVM. A JVM converterá o bytecode em algo que a plataforma subjacente entenda para, dessa forma, executar o programa. Outras siglas que devem ser mencionadas: JRE – O Java Runtime Environment (JRE), ou Ambiente de Tempo de Execução Java, contém tudo aquilo (bibliotecas, a JVM e outros componentes) que um usuário comum precisa para executar uma aplicação escrita na linguagem de programação Java. O JRE pode ser distribuído com as aplicações para torná-las portáveis. JDK – O Java Development Kit (JDK), ou Kit de Desenvolvimento Java, é um conjunto de utilitários para desenvolver aplicações em Java. É composto pelo JRE e por ferramentas de desenvolvimento, tais como: compilador da linguagem Java (javac); interpretador Java (java); debugger (jdb); gerador de documentação (javadoc); visualizador de applets (appletviewer), etc. NT Editora SUMÁRIO Reprodução proibida. Copyright © NT Editora. Todos os direitos reservados. JVM adequada: Para plataformas diferentes existem Máquinas Virtuais Java diferentes. Por exemplo, existem JVMs distintas para os sistemas operacionais Microsoft Windows, Linux, Solaris OS e Mac OS. Dessa forma, é possível desenvolver uma aplicação sem se preocupar onde ela será executada, pois se a JVM adequada estiver instalada, o código será executado. É essencial saber esses conceitos básicos para depois nos aventurarmos na programação sabendo como o Java funciona. 1.3 Características da linguagem Java A linguagem de programação Java é uma linguagem de alto nível. Dentre as diversas características dessa linguagem, podemos citar: Simples e familiar: o aprendizado da linguagem de programação Java pode ser obtido em pouco tempo. Além disso, é uma linguagem muito parecida com as linguagens C e C++, que são linguagens muito populares. Orientada a objetos: desde o início de seu desenvolvimento, a linguagem de programação Java foi projetada para ser orientada a objetos e não é possível desenvolver nenhum programa em Java sem seguir esse paradigma. A orientação a objetos modela o mundo real com classes e instâncias. Sendo assim, objetos e classes são conceitos centrais em Java que interagem entre si para atingir um resultado esperado. Robusta: A linguagem de programação Java é projetada para o desenvolvimento de softwares altamente confiáveis. Fornece verificação do código na compilação, seguido por um segundo nível de verificação em tempo de execução. Linguagem de alto nível: Essas linguagens possuem palavras e frases mais próximas de nossa realidade. Para que possamos programar em uma linguagem de alto nível, não é necessário ter o conhecimento das linguagens de máquina. Um fator importante é o que entre programadores é chamado de “linguagem fortemente tipificada”. Significa que os tipos de dados devem ser definidos para que o código seja compilado. Reprodução proibida. Copyright © NT Editora. Todos os direitos reservados. Outro fator importante é que o modelo de gerenciamento de memória dessa linguagem é muito simples e evita que os programas tenham acesso direto à memória, deixando esse controle a cargo do sistema operacional. Com coletor de lixo: O Coletor de lixo (Garbage Collector) é um recurso usado para a liberação de memória. É um processo que roda em segundo plano e é responsável pela liberação de memória alocada por variáveis e objetos que não mais serão utilizadas pela aplicação. Muitas linguagens de programação permitem que espaços de memória sejam alocados em tempo de execução e o gerenciamento de memória, que nem sempre é simples, é responsabilidade do programador. É o programador, então, que tem que se preocupar com a alocação e liberação de memória. Assim, quando os dados armazenados nesse espaço alocado não são mais necessários, o programa deve liberar esse espaço reservado para evitar erros graves. Na linguagem Java, os programadores ficam livres desse fardo, pois a responsabilidade do gerenciamento de memória é do Coletor de lixo, que de tempos em tempos varre a memória e libera os espaços que não estão sendo mais usados. Segura: A tecnologia Java foi projetada para operar em ambientes distribuídos, o que significa que a segurança tem importância primordial. Aplicações Java são executadas em ambiente próprio, o Java Runtime Environment (JRE). Isto permite o desenvolvimento de aplicações que não possam ser invadidas de fora do ambiente de execução e que evitam, também, a intrusão de códigos não-autorizados. SUMÁRIO Programação de Computadores II: Java 9 Independente de plataforma: Os programas em Java são considerados independentes de plataforma, isto é, portáveis. Isto porque esses programas podem ser executados em praticamente qualquer máquina que possua a Java Virtual Machine (JVM) instalada. Antes de ser executado, porém, um programa em Java tem que ser compilado para que o código-fonte seja traduzido para uma linguagem intermediária (bytecode), que pode ser interpretada pela JVM. Exercícios Parabéns, você finalizou esta lição! Agora responda às questões ao lado. Questão 01 – Assinale a alternativa que apresenta componentes apenas do JRE (Java Runtime Environment). a) Javac e javadoc. b)Compilador e Máquina Virtual Java. c) Bibliotecas e a Máquina Virtual Java. d)Javac e appletviewer. Questão 02 – O javac é o: a)compilador; b)gerador de documentação; c) ambiente de execução; d)interpretador. Questão 03 – Baseado nas afirmações abaixo, assinale a alternativa correta: I – O Java Runtime Environment (JRE) contém os componentes necessários para a execução de uma aplicação escrita na linguagem de programação Java. II – Quando acionado, o javac procura por erros no código-fonte e não permite que ele seja compilado enquanto erros forem detectados. Reprodução proibida. Copyright © NT Editora. Todos os direitos reservados. III – A mesma Java Virtual Machine é usada para os sistemas operacionais Microsoft Windows, Linux e Solaris SO. a) Todas as afirmações estão corretas. b)Apenas as afirmações I e II estão corretas. c) Apenas as afirmações II e III estão corretas. d)Apenas a afirmação II está correta. Questão 04 – Selecione a alternativa que apresenta as palavras que preenchem respectivamente as lacunas do seguinte texto: “Na linguagem de programação Java, os códigos-fonte são primeiramente escritos em arquivos textos armazenados com a extensão . Os códigos fontes são compilados em arquivos com a extensão pelo compilador .” 10 NT Editora SUMÁRIO a) .txt, .java, javac. b).class, .java, javadoc. c) .java, .class, javac. d).java, .javadoc, .class. Questão 05 – Os programas em Java são considerados portáveis. O principal componente responsável pela portabilidade é: a) o applet; b)o código-fonte; c) o debbuger; d)a JVM. Questão 06 – Dentre as afirmativas abaixo, está(ão) correta(s) apena(s) a(s): I – O JDK é um conjunto de utilitários para desenvolver aplicações em Java. II – O JRE contém componentes para a execução de uma aplicação escrita na linguagem de programação Java e não faz parte dos utilitários do JDK. III – O compilador javac e o interpretador java são utilitários do JDK. a) I e II; b)II, III; c) I, III; d)I. Questão 07 – Recurso usado para a liberação de memória. É um processo que roda em segundo plano e é responsável pela liberação de memória alocada por variáveis e objetos que não mais serão utilizadas pela aplicação. Trata-se: Reprodução proibida. Copyright © NT Editora. Todos os direitos reservados. a) da Máquina virtual; b)do Coletor de lixo; c) do compilador; d)da Memória virtual. Questão 08 – Assinale a alternativa que apresenta a característica da linguagem de programação Java à qual se refere a seguinte descrição: “Aplicações Java são executadas em ambiente próprio, o que permite que você construa aplicações que não possam ser invadidas de fora do ambiente.” a)segurança; b)portabilidade; c)distribuída; d)estruturada. SUMÁRIO Programação de Computadores II: Java 11 Questão 09 – Assinale a alternativa incorreta a respeito da linguagem Java: a) é uma linguagem orientada a objetos. b)um programa deve ser compilado para poder ser executado. c) é projetada para o desenvolvimento de softwares confiáveis; d)Os tipos de dados não precisam necessariamente ser definidos para que o código seja compilado. Questão 10 – Assinale a alternativa correta: a) códigos-fonte em Java são escritos em bytecodes; b)o compilador transforma arquivos em bytecodes para uma linguagem interpretada por processadores; c) o JRE é o ambiente de desenvolvimento JAVA; Reprodução proibida. Copyright © NT Editora. Todos os direitos reservados. d)os programas em Java podem ser executados em praticamente qualquer máquina que possua a JRE instalada. 12 NT Editora SUMÁRIO