Java

54
JAVA 7 de dezembro de 2006

description

 

Transcript of Java

Page 1: Java

JAVA7 de dezembro de 2006

Page 2: Java

Sumário

I Sobre essa apostila 2

II Informações Básicas 4

III JAVA 9

1 Introdução 10

2 Plano de ensino 112.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.6 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.7 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.8 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 História de JAVA 143.1 História . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4 Instalação da linguagem JAVA 154.1 Métodos de instalação do Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.2 Instalação através de pacote binário . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.3 Distribuições derivadas do Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

5 Estrutura e Tipos de Dados de um programa em Java 185.1 Estrutura, Compilação e Execusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.2 A estrutura de um programa em Java . . . . . . . . . . . . . . . . . . . . . . . . . . 185.3 Programando em Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195.4 Tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5.4.1 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

6 Conceitos Básicos 216.1 Classes e Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6.1.1 CLASSES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216.2 OBJETOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

6.2.1 CRIANDO OBJETOS: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

1

Page 3: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

6.3 ATRIBUTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

7 Métodos 267.1 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

7.1.1 Chamando Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267.1.2 Declarando Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

7.2 Método println . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287.3 Classe Teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

8 Estruturas de Controle de Fluxo 328.1 Estruturas Condicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

8.1.1 Comando if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328.1.2 Comando else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328.1.3 Comando switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

8.2 Estruturas de repetição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368.2.1 Comando While: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368.2.2 Comando do: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368.2.3 Comando For: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

9 Encapsulamento, herança e polimorfismo 389.1 Encapsulamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389.2 Herança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399.3 Polimorfismo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

10 Variáveis 4210.1 Variáveis Paramétricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

11 Caracteres e ArquivosCaracteres e Arquivos 4411.1 Caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4411.2 Arquivos: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

12 VETORES 4712.1 Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4712.2 Array Unidimensional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4812.3 Array Multidimensional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

13 Tratamento de Erros e Exceções 5013.1 Tratamento de Erros e Exceções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5013.2 Comando Try . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5113.3 Cláusula finally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

2

Page 4: Java

Parte I

Sobre essa apostila

3

Page 5: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Conteúdo

O conteúdo dessa apostila é fruto da compilação de diversos materiais livres publicados na in-ternet, disponíveis em diversos sites ou originalmente produzido no CDTC em http://www.cdtc.org.br.

O formato original deste material bem como sua atualização está disponível dentro da licençaGNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção demesmo nome, tendo inclusive uma versão traduzida (não oficial).

A revisão e alteração vem sendo realizada pelo CDTC ([email protected]), desde outubrode 2006. Criticas e sugestões construtivas são bem-vindas a qualquer tempo.

Autores

A autoria deste conteúdo, atividades e avaliações é de responsabilidade de Cindya KaterinePardo ([email protected]) .

O texto original faz parte do projeto Centro de Difusão de Tecnolgia e Conhecimento, que vemsendo realizado pelo ITI em conjunto com outros parceiros institucionais, atuando em conjuntocom as universidades federais brasileiras que tem produzido e utilizado Software Livre, apoiandoinclusive a comunidade Free Software junto a outras entidades no país.

Informações adicionais podem ser obtidas atráves do email [email protected], ou dahome page da entidade, atráves da URL http://www.cdtc.org.br.

Garantias

O material contido nesta apostila é isento de garantias e o seu uso é de inteira responsabi-lidade do usuário/leitor. Os autores, bem como o ITI e seus parceiros, não se responsabilizamdireta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido.

Licença

Copyright ©2006,Cindya Katerine Pardo ([email protected]) .

Permission is granted to copy, distribute and/or modify this document under the termsof the GNU Free Documentation License, Version 1.1 or any later version published bythe Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOS-TILA. A copy of the license is included in the section entitled GNU Free DocumentationLicense.

4

Page 6: Java

Parte II

Informações Básicas

5

Page 7: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Sobre o CDTC

Objetivo Geral

O Projeto CDTC visa a promoção e o desenvolvimento de ações que incentivem a dissemina-ção de soluções que utilizem padrões abertos e não proprietários de tecnologia, em proveito dodesenvolvimento social, cultural, político, tecnológico e econômico da sociedade brasileira.

Objetivo Específico

Auxiliar o Governo Federal na implantação do plano nacional de software não-proprietário ede código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre osservidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercadonacional a adotar novos modelos de negócio da tecnologia da informação e de novos negóciosde comunicação com base em software não-proprietário e de código fonte aberto, oferecendotreinamento específico para técnicos, profissionais de suporte e funcionários públicos usuários,criando grupos de funcionários públicos que irão treinar outros funcionários públicos e atuar comoincentivadores e defensores de produtos de software não proprietários e código fonte aberto, ofe-recendo conteúdo técnico on-line para serviços de suporte, ferramentas para desenvolvimento deprodutos de software não proprietários e de seu código fonte livre, articulando redes de terceiros(dentro e fora do governo) fornecedoras de educação, pesquisa, desenvolvimento e teste de pro-dutos de software livre.

Guia do aluno

Neste guia, você terá reunidas uma série de informações importantes para que você comeceseu curso. São elas:

• Licenças para cópia de material disponível

• Os 10 mandamentos do aluno de Educação a Distância

• Como participar dos foruns e da wikipédia

• Primeiros passos

É muito importante que você entre em contato com TODAS estas informações, seguindo oroteiro acima.

Licença

Copyright ©2006, Cindya Katerine Pardo ([email protected]) .

É dada permissão para copiar, distribuir e/ou modificar este documento sob os termosda Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior

6

Page 8: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

públicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSAAPOSTILA. Uma cópia da licença está inclusa na seção entitulada "Licença de Docu-mentação Livre GNU".

Os 10 mandamentos do aluno de educação online

• 1. Acesso à Internet: ter endereço eletrônico, um provedor e um equipamento adequado épré-requisito para a participação nos cursos a distância.

• 2. Habilidade e disposição para operar programas: ter conhecimentos básicos de Informá-tica é necessário para poder executar as tarefas.

• 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distân-cia conta muitos pontos, pois irá colaborar para o processo ensino-aprendizagem pessoal,dos colegas e dos professores.

• 4. Comportamentos compatíveis com a etiqueta: mostrar-se interessado em conhecer seuscolegas de turma respeitando-os e fazendo ser respeitado pelo mesmo.

• 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisãoe a sua recuperação de materiais.

• 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações erealizá-las em tempo real.

• 7. Curiosidade e abertura para inovações: aceitar novas idéias e inovar sempre.

• 8. Flexibilidade e adaptação: requisitos necessário à mudança tecnológica, aprendizagense descobertas.

• 9. Objetividade em sua comunicação: comunicar-se de forma clara, breve e transparente éponto - chave na comunicação pela Internet.

• 10. Responsabilidade: ser responsável por seu próprio aprendizado. O ambiente virtual nãocontrola a sua dedicação, mas reflete os resultados do seu esforço e da sua colaboração.

Como participar dos fóruns e Wikipédia

Você tem um problema e precisa de ajuda?

Podemos te ajudar de 2 formas:

A primeira é o uso dos fóruns de notícias e de dúvidas gerais que se distinguem pelo uso:

. O fórum de notícias tem por objetivo disponibilizar um meio de acesso rápido a informaçõesque sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas atodos participantes. Assim, se o monitor ou algum outro participante tiver uma informação queinteresse ao grupo, favor postá-la aqui.Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico docurso. É recomendado que você faça uso do Forum de dúvidas gerais que lhe dá recursos mais

7

Page 9: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

efetivos para esta prática.

. O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativopara solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadasa todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podemajudar.Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com aformalização ou a gramática. Responda! E não se esqueça de que antes de abrir um novo tópicoé recomendável ver se a sua pergunta já foi feita por outro participante.

A segunda forma se dá pelas Wikis:

. Uma wiki é uma página web que pode ser editada colaborativamente, ou seja, qualquer par-ticipante pode inserir, editar, apagar textos. As versões antigas vão sendo arquivadas e podemser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece umótimo suporte a processos de aprendizagem colaborativa. A maior wiki na web é o site "Wikipé-dia", uma experiência grandiosa de construção de uma enciclopédia de forma colaborativa, porpessoas de todas as partes do mundo. Acesse-a em português pelos links:

• Página principal da Wiki - http://pt.wikipedia.org/wiki/

Agradecemos antecipadamente a sua colaboração com a aprendizagem do grupo!

Primeiros Passos

Para uma melhor aprendizagem é recomendável que você siga os seguintes passos:

• Ler o Plano de Ensino e entender a que seu curso se dispõe a ensinar;

• Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar dasferramentas básicas do mesmo;

• Entrar nas lições seguindo a seqüência descrita no Plano de Ensino;

• Qualquer dúvida, reporte ao Fórum de Dúvidas Gerais.

Perfil do Tutor

Segue-se uma descrição do tutor ideal, baseada no feedback de alunos e de tutores.

O tutor ideal é um modelo de excelência: é consistente, justo e profissional nos respectivosvalores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita asidéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar.A classificação por um tutor desta natureza proporciona o melhor feedback possível, é crucial, e,para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem.’ Este tutorou instrutor:

• fornece explicações claras acerca do que ele espera, e do estilo de classificação que iráutilizar;

8

Page 10: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• gosta que lhe façam perguntas adicionais;

• identifica as nossas falhas, mas corrige-as amavelmente’, diz um estudante, ’e explica por-que motivo a classificação foi ou não foi atribuída’;

• tece comentários completos e construtivos, mas de forma agradável (em contraste com umreparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, deameaça e de nervossismo’)

• dá uma ajuda complementar para encorajar um estudante em dificuldade;

• esclarece pontos que não foram entendidos, ou corretamente aprendidos anteriormente;

• ajuda o estudante a alcançar os seus objetivos;

• é flexível quando necessário;

• mostra um interesse genuíno em motivar os alunos (mesmo os principiantes e, por isso,talvez numa fase menos interessante para o tutor);

• escreve todas as correções de forma legível e com um nível de pormenorização adequado;

• acima de tudo, devolve os trabalhos rapidamente;

9

Page 11: Java

Parte III

JAVA

10

Page 12: Java

Capítulo 1

Introdução

Responda às avaliações do curso quando houver e oriente-se no conteúdo semanal paraacompanhar o curso.

Este curso não contempla a emissão de certificados, esta sendo disponibilizado somente paraque os INTERESSADOS em aprender a Linguagem Java tenham um ponto de partida.

11

Page 13: Java

Capítulo 2

Plano de ensino

2.1 Objetivo

introduzir ao estudante conceitos da linguagem Java que o capacitem a produzir programas bá-sicos, dando-lhe os elementos para posteriormente poder criar programas mais complexos.

2.2 Público Alvo

Usuários finais ou novatos que desejam migrar os seus sistemas proprietários para software livre,em especial, o gerenciador pessoal de e-mail.

2.3 Pré-requisitos

Os usuários deverão ser, necessariamente, funcionários públicos, ter conhecimentos básicospara operar um computador e saber lógica de programação.

2.4 Descrição

O curso será realizado na modalidade Educação a Distância e utilizará a Plataforma Moodle comoferramenta de aprendizagem. O curso tem duração de duas semanas e possui um conjunto deatividades (lições, fóruns, glossários, questionários e outros) que deverão ser executadas deacordo com as instruções fornecidas. O material didático está disponível on-line de acordo comas datas pré-estabelecidas em cada tópico. A versão utilizada para Java será a 1.5.0, casopossua outra versão, podem ocorrer diferenças com relação a este material.

2.5 Metodologia

O curso está dividido da seguinte maneira:

12

Page 14: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Duração Descrição do Módulo1 semana Lição 1 - história e instalação

Lição 2 - Estrutura de um programa em java - Tipos de dadosLição 3 - Conceitos básicosLição 4 - MétodosLição 5 - Estruturas de controle de fluxo

2 semana Lição 1 - Heranaça encapsulamento e polimorfismoLição 2 - VariáveisLição 3 - Caracteres e ArquivosLição 4 - VetoresLição 5 - Tratamento de erros

As lições contém o contéudo principal. Elas poderão ser acessadas quantas vezes forem ne-cessárias, desde que esteja dentro da semana programada. Ao final de uma lição, você receberáuma nota de acordo com o seu desempenho. Responda com atenção às perguntas de cada lição,pois elas serão consideradas na sua nota final. Caso sua nota numa determinada lição for menordo que 6.0, sugerimos que você faça novamente esta lição.Ao final do curso será disponibilizada a avaliação referente ao curso. Tanto as notas das liçõesquanto a da avaliação serão consideradas para a nota final. Todos os módulos ficarão visíveispara que possam ser consultados durante a avaliação final.Aconselhamos a leitura da "Ambientação do Moodle"para que você conheça a plataforma de En-sino a Distância, evitando dificuldades advindas do "desconhecimento"sobre a mesma.Os instrutores estarão a sua disposição ao longo de todo curso. Qualquer dúvida deverá serenviada no fórum. Diariamente os monitores darão respostas e esclarecimentos.

2.6 Programa

O curso Introdução á Linguagem Java oferecerá o seguinte conteúdo:

• História e instalação.

• Estrutura e tipos de dados de um programa Java.

• Conceitos básicos na programação orientada a objetos.

• Métodos e funções.

• Estruturas de controle de fluxo.

• Herança, encapsulamento e polimorfismo.

• vetores.

• Tratamento de erros.

2.7 Avaliação

Toda a avaliação será feita on-line.Aspectos a serem considerados na avaliação:

13

Page 15: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• Iniciativa e autonomia no processo de aprendizagem e de produção de conhecimento;

• Capacidade de pesquisa e abordagem criativa na solução dos problemas apresentados.

Instrumentos de avaliação:

• Participação ativa nas atividades programadas.

• Avaliação ao final do curso.

• O participante fará várias avaliações referente ao conteúdo do curso. Para a aprovação eobtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordocom a fórmula abaixo:

• Nota Final = ((ML x 7) + (AF x 3)) / 10 = Média aritmética das lições

• AF = Avaliações

2.8 Bibliografia

• Site ofisial: http://www.java.com

• de download: http://java.sun.com/

14

Page 16: Java

Capítulo 3

História de JAVA

3.1 História

Em 1991, um grupo de engenheiros da Sun Microsystems foi encarregado de criar uma nova lin-guagem que pudesse ser utilizada em pequenos equipamentos como controles de TV, telefones,fornos, geladeiras, etc. Essa linguagem deveria dar a esses aparelhos a capacidade de se comu-nicar entre si, para que a casa se comportasse como uma federação. Deveria ainda ser capaz degerar códigos muito pequenos, que pudessem ser executados em vários aparelhos diferentes, epraticamente infalível.

Os engenheiros escolheram o C++ como ponto de partida. Orientada a objetos, muito po-derosa e gerando pequenos programas, parecia a escolha correta. Para solucionar o problemada execução em várias arquiteturas, eles utilizaram o conceito da máquina virtual, onde cadafabricante iria suportar algumas funções básicas que os programas utilizariam.

Até hoje a linguagem resultante deste projeto não é utilizada em aparelhos eletrodomésticos.Ao invés disso, o Java se tornou um das linguagens de programação mais utilizadas no planeta.

As especificações da linguagem Java são mantidas uniformes através de um processo comu-nitário gerido pela Sun Microsystems, que é também detentora da marca registrada com o nomeda linguagem.

Quatro características principais da linguagem Java são:

• é orientada por objetos;

• é independente em relação à plataforma (pelo menos, praticamente)

• integra mecanismos e bibliotecas de funções para programação na área das redes;

• é desenhada para executar código a partir de pontos remotos, sem perda de segurança.

Estas características da linguagem serão desenvolvidas durante o curso.

15

Page 17: Java

Capítulo 4

Instalação da linguagem JAVA

4.1 Métodos de instalação do Java

Temos à nossa disposição uma variedade de métodos de instalação do Java, podendo variardependendo da distribuição GNU/Linux sendo utilizada.

É importante notar que diferentes métodos de instalação poderão prover versões diferentesdo software: neste curso, por exemplo, utilizaremos a versão 1.5.0, o pacote mais atualizadodisponível no repositório testing/non-free do Debian. Vale observar que o pacote do Java seencontra na seção non-free, o que indica que ele é considerado não-livre. Isto ocorre porque elepossui uma licença que não é considerada livre pelos padrões do Debian.

Podemos diferenciar os métodos de instalação basicamente entre aqueles que utilizam pa-cotes pré-compilados da própria distribuição, ou aqueles que utilizam um binário genérico paraLinux, provido pela própria Sun Microsystems.

Distribuições derivadas do Debian utilizam pacotes nativos às distribuições (.deb), e parainstalá-los simplesmente os descompactam e movem os arquivos para os lugares apropriados.Já o pacote binário da Sun deverá ser baixado do site do fabricante, e prosseguiremos com ainstalação do mesmo.

4.2 Instalação através de pacote binário

O primeiro método que iremos abordar quanto à instalação do Java será o da instalação dopacote binário provido pela Sun. Para atingir sucesso por esse método de instalação, devemossaber como obter esse pacote e instalá-lo, além de adicionar entradas apropriadas nos arquivosde configuração do sistema.

O pacote binário do Java pode ser obtido a partir do site da Sun, na página de downloads doJava SE (http://java.sun.com/javase/downloads/index.jsp).

Nesta página, podemos observar que existem várias versões a serem baixadas, porém aque (provavelmente) se adequa à sua necessidade é a JDK 5.0 Update 9, que inclui o RuntimeEnvironment para o Java (JRE) e também o development kit (JDK) básico para o Java.

Clicando no referido link, você deverá aceitar a licença e baixar o pacote apropriado para oseu sistema operacional, que, no caso do autor, é Linux self-extracting file para arquiteturas de32 bits (para 64 bits, o pacote se chama x64). Caso esteja utilizando distribuições derivadas deRed Hat, você pode ainda obter o RPM, caso deseje.

Obtido o pacote, agora você deve descompactá-lo, o que implica apenas executar o arquivoem questão, já que ele tem a extensão .bin . Caso ele não esteja executável, pode ser necessário

16

Page 18: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

dar permissões de execução ao arquivo utilizando o comando:

$ chmod a+x jdk(...).bin

Feito isso, execute o arquivo com o comando:

$ ./jdk(...).bin

Recomenda-se que, antes de executar este arquivo, você o mova para o diretório /opt, quesegundo a FHS (File Hierarchy System), é o diretório padrão para instalações de programasindependentemente instalados. Outro benefício é que todos os usuários da máquina poderãoutilizar-se do software, pois o /opt é legível para todos do sistema. Para fazê-lo, porém, vocêdeverá ser o usuário root, já que apenas este possui privilégios de escrita nesse diretório.

Seguidos estes passos, um diretório será gerado (caso tenha seguido o conselho, dentro do/opt), contendo binários, documentação e arquivos adicionais da JDK e JRE do Java. Agora, bastaadicionar o caminho desses binários ao caminho de busca de binários do sistema, designado pelavariável de ambiente $PATH, setada pelo arquivo de configuração /etc/profile.

Para adicionar esses binários do Java a esse caminho, você pode atualizar a variável $PATH (oque será apagado após o próximo reboot do computador) ou setar a variável PATH no /etc/profile,que é lido pelo sistema.

4.3 Distribuições derivadas do Debian

Para instalar o Java em distribuições derivadas do Debian podemos simplesmente utilizar o ge-renciador de pacotes nativo, o apt-get. Vale lembrar que, como o Java não é considerado livrepelos padrões do Debian, você deve adicionar a seção non-free à sua lista de repositórios. Feitoisso, devemos primeiramente buscar o nome do pacote correspondente ao Java utilizando o co-mando apt-cache:

fscarel@debian3: $ apt-cache search java5sun-java5-bin - Sun Java(TM) Runtime Environment (JRE) 5.0sun-java5-demo - Sun Java(TM) Development Kit (JDK) 5.0 demos and examplessun-java5-doc - Sun JDK(TM) Documention – integration installersun-java5-fonts - Lucida TrueType fonts (from the Sun JRE)sun-java5-jdk - Sun Java(TM) Development Kit (JDK) 5.0sun-java5-jre - Sun Java(TM) Runtime Environment (JRE) 5.0sun-java5-plugin - The Java(TM) Plug-in, Java SE 5.0sun-java5-source - Sun Java(TM) Development Kit (JDK) 5.0 source filesfscarel@debian3: $

17

Page 19: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Como podemos ver, o nome do pacote correspondente ao Java JDK é sun-java5-jdk, acom-panhado de uma série de bibliotecas e plugins. Sabendo disso, basta-nos agora instalar, comousuário root, o pacote utilizando o comando apt-get:

debian3: # apt-get install sun-java5-jdkReading package lists... DoneBuilding dependency tree... DoneThe following extra packages will be installed:odbcinst1debian1 sun-java5-bin sun-java5-demo sun-java5-jre unixodbcSuggested packages:sun-java5-doc sun-java5-source sun-java5-plugin ia32-sun-java5-plugin sun-java5-fonts ttf-baekmukttf-sazanami-gothicttf-sazanami-mincho ttf-arphic-bsmi00lp libmyodbc odbc-postgresql libct1Recommended packages:gsfonts-x11The following NEW packages will be installedodbcinst1debian1 sun-java5-bin sun-java5-demo sun-java5-jdk sun-java5-jre unixodbc0 upgraded, 6 newly installed, 0 to remove and 58 not upgraded.Need to get 45.1MB of archives.After unpacking 114MB of additional disk space will be used.Do you want to continue [Y/n]? y0% [Connecting to ftp.at.debian.org]debian3: #

Pronto, agora já temos o JDK Java instalado através do gerenciador de pacotes apt-get. Foibem fácil também, não é?

Vale lembrar que os exemplos acima foram testados na distribuição Debian GNU/Linux, porémpoderiam ser executados da mesma maneira em qualquer outra distribuição compatível com oDebian, como o Ubuntu Linux, Kurumin ou Knoppix, dentre outras.

18

Page 20: Java

Capítulo 5

Estrutura e Tipos de Dados de umprograma em Java

Um programa é a implementação de um algoritmo em uma linguagem de programação. Estabele-cendo os dados que serão usados, como eles serão transformados e como serão apresentados.Deve-se também estruturar os comandos e determinar a ordem de sua execução e incluir os con-troles necessários para que o programa produza o resultado desejado.

Para programar bem deve-se fazer um algoritmo apropriado e ter um conhecimento sólido dalinguagem de programação a ser utlizada.

5.1 Estrutura, Compilação e Execusão

Um programa, é um texto (chamado de programa fonte) que possui comandos e declaraçõesnecessarias para a implementação de um algoritmo que é traduzido para um texto equivalenteescrito em comandos binários (código binário) os quais são executados pelo computador. Oprocesso de tradução é chamado de compilação e posteriormente a ele se produz a ligação docódigo binário a outros códigos para se obter finalmente o programa executável.

O programa executável é carregado na memória e colocado sobre o controle de um ambientede execução, que faz com que cada comando seja executado pelo processador.

Todo programa deve ter uma estrutura que permita definir seu inicio e fim, de tal forma que oambiente de execução possa identificar precisamente o ponto de entrada do programa, isto é, oprimeiro comando que será executado, e o término da execução.

5.2 A estrutura de um programa em Java

Os programas orientados a objetos são baseados no conceito classe. Cada classe contém asdeclarações e os comandos que, em conjunto, implementam o algoritmo do programa. Estescomandos são organizados na forma de métodos e pelo menos deve possuir um método principalque é o ponto de inicio da execução, a partir dele os demais métodos são acionados.

Em Java especificamente, a sua estrutura consiste de um conjunto de unidades de compi-lação. Cada uma delas contem as especificações de classes e interfaces, juntamente com as

19

Page 21: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

declarações necessárias para a compilação. Quando compiladas essas unidades geram arqui-vos com os códigos binários referentes ás classes e interfaces nelas descritas.

A estrutura básica de uma classe consiste de uma palavra chave class, de um identificadorIdent, e de um corpo que é delimitado por chaves e contem opcionalmente declarações e coman-dos próprios da classe.

5.3 Programando em Java

Em Java todos os arquivos com os respectivos códigos devem ser escritos em um editor de textoutilizando ASCII e devem ser salvas com a terminação ?java?. Cada arquivo represente umaunidade de compilação, podendo conter uma ou mais especificações de classes e interfaces.

Em java temos alguns comandos que nos ajudam na compilação e execução dos programas,como o comando javac e o comando java.

Javac: ele é o compilador da linguagem Java que ao ser executado este comando em umarquivo que contenha o codigo da linguagem, se gerá um segundo código contendo o códigobinário que é utilizado para a execução do programa. Para compilar seu codigo digite javac No-meDoArquivo.java.

Java: O executável Java é a máquina virtual Java, ou seja, é o programa responsável pelaexecução do código compilado pelo javac. Para fazer uso do comando digite java NomeDoAr-quivo, para executar um arquivo não deve-se colocar a sua extensão.

5.4 Tipos de dados

Na linguagem Java todas as variáveis tem seus tipos de dados definidos. Os tipos de dadosdefinem quais são os valores que uma variável pode armazenar e quais operações pode executar.

Existem somente oito tipos primitivos em Java, todo o resto é objeto. Estes tipos ficaram nalinguagem pela sua velocidade de interação, e por isso não foram transformados em Objetos.Como não são objetos a sua declaração já cria a variável em memória não necessitando deconstrutores.

Inteiros:

Tipo Tamanho Valorbyte 8 bits de - 128 a 127.short 16 bits de - 32.768 a 32.767int 32 bits de - 2.147.483.648 a 2.147.483.647long 64 bits - 9.223.372.036.854.775.808 a 9.223.372.036.854.775.807

Reais ou ponto flutuante:

Tipo Tamanho Valorfloat 32 bits - 1.40239846E-45 a + 3.40282347E + 38 (com nove dígitos significativos de precisão)double 64 bits - 4.94065645841246544E-324 a + 1.79769313486231570E + 308 (com 18 dígitos significativos de precisão)

20

Page 22: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Outros tipos:

Tipo Tamanho Valor Descriçãochar 16 bits 0 a 65535 Um caratere.boolean 8 bits true ou false Valor booleano (V ou F).

5.4.1 Operadores

Executam alguma função sobre os operandos; existem operadores unários que requerem só umoperando e operadores binários e ternários que requerem dois e três operandos respectivamente.Depois de ser executada uma determinada função, um operador retorna um valor, e esse valor otipo de retorno dependem do operador e de seus operandos.

Operadores binários:

Operador Uso Descrição+ (Adição) X + Y Soma X e Y.- (substração) X - Y Subtrai Y de X.* (multiplicação) X * Y Multiplica X por Y./ (divisão) X / Y Divide X por Y.

Operadores Unários:

Operador Uso Descrição++ X++ (incrementa 1) Utiliza valor de X antes de fazer o incremento.++ ++X (incrementa 1) Incrementa antes de usar o valor de X.– X– (decrementa 1) Utiliza valor de X antes de fazer o decremento.– –X (decrementa 1) Decrementa antes de usar o valor de X.

Operadores condicionais e relacionais:

Operador Uso Retorna verdadeiro se> X > Y X é maior que Y.>= X >= Y X é maior ou igual que Y.< X < Y X é menor que Y.<= X <= Y X é menor ou igual que Y.== X == Y X e Y são iguais.!= X != Y X e Y são diferentes.

Operadores binários condicionais:

Operador Uso Retorna verdadeiro se&& X && Y X e Y verdadeiros, avalia condicionalmente Y.|| X || Y Se X ou Y verdadeiro, avalia condicionalmente Y! ! X X é falso& X & Y X e Y são verdadeiros, sempre avalia X e Y| X | Y Se X ou Y é verdadeiro, sempre avalia X e Y.

21

Page 23: Java

Capítulo 6

Conceitos Básicos

6.1 Classes e Objetos

Conceitos de classe e objeto são centrais para a programação orientada objeto, por isso é neces-sário entender muito bem estes conceitos.

6.1.1 CLASSES

Uma classe é o elemento básico da programação orientada a objetos, que define suas formas ecomportamentos. Também pode ser definida como uma estrutura de dados que possui métodose atributos, os métodos da classe são todos seus procedimentos ou funções que existem nela eos atributos são as variáveis declaradas dentro da classe.

Para a criação de uma classe coloca-se um comando que inicia a declaração da classe. Apósa palavra-chave class segue-se o nome da classe, que deve ser um identificador válido para alinguagem. Os modificadores são opcionais, e dentro das chaves da classe esta definido seucorpo.

Sintaxe: [modificador] class <nome_classe> <corpo classe> .Exemplo:

public class Exemplo_de_classe{//atributos//métodos}

A primeira palavra nos da a possibilidade de dar permissões de acesos a nossa classe, nestecaso nossa permissão é de tipo public. Uma classe public é acessível desde qualquer outraclasse bem seja diretamente ou por herança O corpo da classe normalmente segue a seguinteseqüencia:

• Variáveis de classe.

• Atributos.

22

Page 24: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• Construtores.

• Métodos.

Toda classe pode também ter um método main (será visto profundamente mais a frente), queé utilizado pelo interpretador Java para dar início à execução de uma aplicação.

Exemplo 1:

class estudante {// declaração dos atributos da classe estudanteString aluno;String matricula;// metodos da classe estudantevoid def_aluno ( String novo_aluno){

aluno = novo_aluno;}

void def_matricula ( String nova_matricula){matricula = nova_matricula;}

void imp_estudante ( ){System.out.println( "aluno: "+aluno);System.out.println( "matricula: "+matricula);}

}

Em nossa classe estudante temos 3 métodos def_aluno, def_matricula e imp_estudante, osdois primeiros usam parâmetros e servem para modificar os atributos aluno e matricula do objetoque os executa. O ultimo método contém a solicitação de um objeto (referenciado por) System.outpara que este execute seu método println, o qual fará que seja impresso na tela o aluno e suamatricula.

6.2 OBJETOS

É através deles que praticamente todo o processamento ocorre em aplicações desenvolvidas comlinguagens de programação orientadas a objetos. Toda linguagem de programação orientada aobjetos oferece mecanismos para definir os tipos de objetos para cada aplicação através doconceito de classes.

Objetos são a instância de uma classe. Em outras palavras, são um pedaço de memóriareservada para armazenar os dados e os métodos declarados na classe. Um objeto não é maisque uma abstração que contem um identificador, um estado e um conjunto de operações que eleconsegue realizar; indicam ao computador como proceder em determinadas situações.

Os identificadores são definidos pelo ambiente ao serem criados, seu estado é determinadopelos valores referentes a seus atributos e as operações executadas são implementadas por meio

23

Page 25: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

de código (chamado método); no objeto pode-se executar os métodos que foram definidos, alémde poder acessar e alterar dados.

6.2.1 CRIANDO OBJETOS:

Para toda classe existe definido algum método (metodo()), que é usado para criar os objetos daclasse. Estes métodos usados para a criação de objetos são chamados de construtores e secaracterizam por não possuir valor de retorno.

A criação de um objeto da classe exemplo é feita através do comando:

new exemplo() ,sendo iniciada a execução do construtor da classe.

Exemplo2: suponhamos que num programa temos duas classes a classe_1 e a classe_2.

class classe_1 {void soma(){

}}

Criaremos o objeto assim:

class classe_2 {public static void main(String[] args) {

classe_1 objeto = new classe_1(); //criando o objetoobj = objeto.soma; //referenciando atributos da classe classe_1}

}

A referência de um objeto se faz com a indicação do objeto sendo concatenado ao nome doatributo através de um ponto (objeto.soma).

6.3 ATRIBUTOS

Atributos são um modo de modificar uma ou mais declarações.Referência de Atributos:A referência dos objetos é feita:

• Pelo nome do atributo, se a referência faz parte da mesma classe

24

Page 26: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• Pela identificação do objeto seguido de um ponto seguido do nome do atributo.

• Pela identificação de uma classe seguida de um ponto seguido do nome do atributo, quandose trata de atributos estáticos.

Exemplo de uma referência de atributo a objetos específicos:

class aluno {char turma;int matricula;void imprimeAluno(){

System.out.println( "matricula aluno:"+matricula);}

}

class criaObjetos {public static void main(String[] arg){

aluno obj1, obj2, obj3;obj1 = new aluno();obj2 = new aluno();obj1.turma = ’K’;obj1.matricula = 217;obj2.matricula = 2 * obj1.matricula;System.out.println("matricula: "+obj1.matricula);System.out.println("turma: "+obj1.turma);System.out.println( "matricula * 2: "+obj2.matricula);}

}

Será impresso na tela:

matricula: 217 turma: K matricula * 2: 434

Atributos estáticos:Os atributos estáticos são declarados com o modificador static, estes atributos se aplicam a

funções e dados. Sua declaração não è aplicada a uma instància particular do objeto, mas aotipo do objeto.

class aluno {static int matricula;char turma;

25

Page 27: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

void imprimeAluno(){System.out.println( "matricula aluno:"+matricula);}

}

A variável matricula, ao ser declarada como um atributo estático (static int matricula), permiteque seu valor seja compartilhado por todos os objetos da classe aluno.

26

Page 28: Java

Capítulo 7

Métodos

Na sequência serão relembrados os conceitos de classe e objeto, por que é necessário que osmanipulemos perfeitamente para poder entender tudo o que será apresentado nesta lição.

Objetos são instâncias de classes; ao serem criados possuem uma identificação única que éatribuída pelo ambiente, e um conjunto de atributos que o caracteriza. Estes atributos assumemvalores que compõem o estado do objeto, e cada objeto executa operações definidas através decódigos chamados métodos.

Nas classes encontramos os objetos e suas devidas descrições, isto é , as classes descrevemos atributos de seus objetos, bem como os métodos que eles podem executar.

7.1 Métodos

Nas linguagens orientadas a objetos os métodos são usados para implementar operações queserão usadas pelos objetos criados no programa. Os métodos definem as ações a serem tomadasem diversos momentos da execução de um programa. Eles realizam todas as tarefas para asquais o programa foi escrito, por exemplo, fazer cálculos, resumir informações de um arquivo,criar gráficos, etc.

7.1.1 Chamando Métodos

Podemos chamar um método explicitamente ou implicitamente. A chamada explícita se dá atravésda execução de um comando ou por meio de uma expressão que contem o nome do método. Porexemplo ao chamar o método System.out.println (sua função é imprimir na tela) fazemos umachamada explicita. Chamada implícita ocorre quando o interpretador Java chama um método porsua própria deliberação. Por exemplo quando o interpretador Java chama o método main parainiciar a execução do programa.

7.1.2 Declarando Métodos

Os métodos são declarados como parte da especificação de uma classe. Sintaxe:

void <nome do método>{corpo do método>

27

Page 29: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

}

caso seja necessário nos métodos podemos ter um valor de retorno, na sintaxe acima a chavevoid é usada para especificar que o método não retorna nenhum valor. O nome do método é umidentificador que define o nome pelo qual o método é conhecido, o corpo do método contém to-das as declarações e especificações necessárias para que quando seja chamado os comandossejam executados. Nos métodos também podemos fazer uso de moderador de acesso comopublic, private, etc, que são empregados para restringir o acesso a um método. Os modificadorespermitem dar algumas propriedades ao método.

Exemplo 1:

class exemplo1 {public static int soma(int num, int num2 ){

int res=0;res = num +num2;return res;}

}

Para retornar o resultado da soma que é de tipo inteiro é necesário colocar a palavra chaveint antes do nome do método. O método termina quando o comando return é executado.

Exemplo2

class exemplo2 {public static String SomaPositivos(int num, int num2 ){

int res=0;if(num<0 || num2<0)return "numeros negativos";System.out.println(num + num2);return "fim de programa";}

}

No método SomaPositivos temos um if que testa se as variaveis num e num2 são maiores quezero, se não forem ele da um return e sai do método, caso sejam imprime a soma de num e num2e posteriormente "da um"return e sai do método; o comando if será visto mais detalhadamentena seguinte lição.

Referindo-se a métodos:

28

Page 30: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• Se a referência e o método são da mesma classe, então nos referimos a ele pelo seu nome.

• Quando se quer invocar a execução do método por um objeto específico, faz-se a referênciapela identificação de um objeto seguido do nome do método.

Para métodos estáticos, faz-se a identificação de uma classe seguida de o nome do métodoque se quer dentro desta classe.

Exemplo 3:

class Exemplo3 {int X;void soma(){

int res=0;res = X+10;imprime();//referencia ao método}

void imprime(){System.out.println("fim de programa");}

}

Neste exemplo, a referência ao método imprime é feita só pelo nome porque ele pertence àmesma classe do método soma.

class Exemp3 {public static void main(String[] arg){

Exemplo3 obj;obj = new Exemplo3();obj.X = 21;obj.soma();//executar método por um objeto}

}

7.2 Método println

Este método é executado pelo objeto referenciado System.out e imprime o argumento que re-cebe. Para imprimir uma seqüencia de caracteres, é necessário que a seqüencia seja colocadaentre aspas duplas, exemplo:

29

Page 31: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

System.out.println("Imprimindo seqüencia de caracteres");

aparecerá na tela do computador:

Imprimindo seqüencia de caracteres

Os caracteres são impressos exatamente como são escritos. O println após imprimir da umsalto de linha, enquanto o print imprime os argumentos mas não produz salto de linha.

Exemplo 3:

class Exemplo3 {public static void main ( String[] argumento) {

System.out.print("Imprimindo primeira linha ");System.out.println("Imprimindo segunda linha ");System.out.println("Imprimindo terceira linha ");}

}

Aparecera na tela do computador:

Imprimindo primeira linha Imprimindo segunda linhaImprimindo terceira linha

Na primeira impressão esta sendo usado o método print, por isso não se produz salto de linhae a segundo impressão aparece na mesma linha da primeira.

Para imprimir uma variável, ela é passada como argumento sem fazer uso das aspas duplas,por exemplo: se a váriavel var tem como valor 1000 usamos a seguinte seqüencia de comandospara imprimir este valor.

System.out.println(var);

aparecerá na tela o valor 1000.

Observando o exemplo 2 :

void imp_estudante ( ){System.out.println( "aluno: "+aluno);System.out.println( "matricula: "+matricula);

30

Page 32: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

}

Podemos observar que neste método para cada println são passados dois argumentos, umaseqüencia de caracteres e uma variável, o símbolo de adição "+"serve para indicar que outroargumento será impresso.

7.3 Classe Teclado

Obtendo Valores do Teclado

Para poder obter os valores do usuário apartir do teclado é necesário criar uma classe quechamaremos de Teclado (será criada em um arquivo com nome de Teclado. java).

import java.io.*;public class Teclado {

private BufferedReader fonte = new BufferedReader(new InputStreamReader(System.in));public int lerInteiro(){

while(true){try{return Integer.parseInt(fonte.readLine());}catch (IOException e){}catch (NumberFormatException e) {System.out.println("Numero invalido.");System.out.println("por favor digite um numero entero:");}}

}public float lerReal(){

while(true){try{return Float.parseFloat(fonte.readLine());}catch (IOException e){}catch (NumberFormatException e){System.out.println("Numero invalido.");System.out.println("por favor digite un numero Real:");}}

}public String lerLinha(){String linha=null;try{

linha = fonte.readLine();}catch(IOException e ){}

return linha;}

31

Page 33: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

}

Nesta classe teclado, temos 3 métodos public int lerInteiro(), public float lerReal() e public StringlerLinha(), que nos permitem ler inteiros, reais e strings.

Não se preocupe por não conseguir entender a classe Teclado completamente, pois ela possuiassuntos mais avançadas que serão vistos mais para frente. Por enquanto você só precisa sabercomo usá-la para obter dados do teclado.

32

Page 34: Java

Capítulo 8

Estruturas de Controle de Fluxo

Na execução de programas as ações primitivas nem sempre são executadas na ordem em quesão escritas, devido à lógica de programação que foi aplicada na construção do algoritmo. Istoé porque as vezes necessitamos que determinada parte do programa deva repetir-se algumasvezes ou que uma parte do programa deva ser executada de acordo com uma condição.

8.1 Estruturas Condicionais

A estrutura condicional faz com que o fluxo de execução de um programa seja desviado, pois asvezes precisamos executar um bloco de ações (uma seqüência de ações primitivas) apenas seuma determinada condição for satisfeita.

8.1.1 Comando if

Sua sintaxe é if (<condição>) <comandos> , ela nos traduz se a condição for verdadeira as se-guintes ações serão executadas. Veja o exemplo:

if (X > 0) {++X;}

Lê-se: se X for maior que zero então incremente um em X.

8.1.2 Comando else

No caso em que a condição for falsa, por exemplo se X não é maior que zero então outras açõesserão executadas, neste caso utilizamos o comando else. Tenha em mente que sempre antes deum else deve existir um if. Sintaxe: if (<condição>) <comandos> else <comandos> .

33

Page 35: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Exemplo:if (X > 0) ++X; else –X;

Tomando X menor que zero, o programa passa o controle para o if e testa a primeira condi-ção, como ela é falsa o controle passa para o else e executa o que esta no bloco dele, neste casoserá decrementado o valor da variável X. Veja que não foi necessário colocar chaves no if e noelse, isto acontece porque para cada um deles temos um único comando, portanto podem sersuprimidas as chaves.

Exemplo 1:

import java.io.*;class exemplo_1 {

public static void main(String[] arg){Teclado tec = new Teclado();float num = tec.lerReal();float X;if (num != 0){

X= 100/numif( X > 10)

System.out.println(X);else

System.out.println("X < 10");}

System.out.println("fim de programa");}

}

Neste programa testamos no primeiro if se num é diferente de zero, se for, então 100 é divididopor num, posteriormente se faz um novo teste na condição do segundo if, se o valor obtido emX for maior que 10 então imprime o valor de X senão o controle vai para o else e é impresso aseqüencia de caracteres X < 10, terminando assim o bloco do primeiro if; por último é impressoa palavra fim de programa. No caso em que num é igual a zero, a condição testada no primeiroif será falsa e portanto o controle não entra no bloco do if, sendo passado o controle à primeiralinha de comando depois do if, por consiguiente será impresso fim de programa.

8.1.3 Comando switch

O comando switch também desvia por meio de um teste na condição o controle do programapara outro trecho do programa, trabalhando de forma um pouco parecida ao if, sua diferença éque pode tratar mais de dois blocos de execução. sintaxe:

34

Page 36: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

switch (<expressão>){case <valor1>:<comandos 1>[break;]case <valor2>:<comandos 2>[break;]...default: <comandos default>}

A expressão que é passada para o switch será testada nas diferentes cláusulas case, se elafor igual ao valor de alguma das cláusulas o controle passa para ela e serão executados todosseus comandos.

O break é utilizado para sair do switch e pode ser usado em qualquer trecho dele, o defaultatua como um else no caso de não se encontrar nenhuma cláusula igual à expressão.

Exemplo 2:

import java.io.*;class exemplo_2 {

public static void main(String[] arg){int X = tec.lerInteiro();

switch (X){case 1: System.out.println("X é valido");System.out.println("X vale 1");case 21: System.out.println("X vale 21");default: System.out.println("X não é valido");case 30: System.out.println("X vale 30");}

}}

Se o valor de X for 1 aparecerá na tela:

X é validoX vale 1X vale 21X não é validoX vale 30

Se o valor de X for 21 aparecera na tela:

35

Page 37: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

X vale 21X não é validoX vale 30

Se o valor de X não for 1 ou 21 ou 30, então aparecera na tela:

X não é validoX vale 30

Como o valor de X não existe em nenhuma cláusula o controle é desviado para o comandodefault, prosseguindo-se a partir deste ponto com a execução dos outros comandos.

Exemplo 3:

import java.io.*;class exemplo_3 {

public static void main(String[] arg){Teclado tec = new Teclado();int X = tec.lerInteiro();switch (X){

case 1: System.out.println("rotulo 1");break;case 2: X = 2+X;switch (X){

case 4: System.out.println("dentro do segundo switch");break;case 7: System.out.println ("no segundo switch");break;}

System.out.println("fora do segundo switch");break;}

}}

Se o valor de X é 1 então é impresso na tela rotulo 1 e sai do switch terminando o programa.Se o valor de X é 2 o controle vai para case 2, e é incrementado 2 à variável X que fica valendo4 agora. O controle é passado para o segundo switch em case 4 é impresso na tela a frase den-tro do segundo switch, posteriormente encontra-se um break que faz o controle sair do segundoswitch, depois é impresso a frase fora do segundo switch e logo encontramos um break com oqual saímos do primeiro switch e termina o programa.

36

Page 38: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

8.2 Estruturas de repetição

Os ciclos de repetição em sua estrutura possuem um conjunto de comandos e uma condição.Enquanto a condição fo verdadeira serão executados estes comandos.

8.2.1 Comando While:

Repete um conjunto de instruções enquanto uma certa condição é satisfeita. Sintaxe:

while <(condição)>{<comandos>; }

Exemplo:

while(cont != 0) {cont = cont -1;}

Na primeira linha é testado se cont é diferente de zero, se for, então são executados oscomandos que estão dentro do bloco while, mas se a condição não é satisfeita o ciclo de repetiçãotermina e o controle passa para a primeira linha depois do bloco.

8.2.2 Comando do:

Este comando é parecido ao while sua diferença é que a condição é testada após a execução dobloco de instruções. Portanto, este bloco é executado no mínimo uma vez. Sintaxe:

do {<comandos>;}while <(condição)>;

Exemplo:

do {cont = cont -1;}while (cont != 0);

37

Page 39: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Neste exemplo, o controle esta no bloco do comando do, onde primeiro são executadas todasas instruções, neste caso subtrai-se um da variável cont, posteriormente é testada a condiçãoque, caso seja satisfeita, o controle volta para o comando do e se repete o procedimento. Mas senão for satisfeita, termina o ciclo de repetição e o controle passa para a primeira linha que estádepois do comando while.

8.2.3 Comando For:

Como os comandos anteriores, o comando for serve para repetir um conjunto de instruções, de-fere dos demais pela existência de procedimentos executados no inicío de sua estrutura. Possuium cabeçalho com três elementos separados por ponto e vírgula, no primeiro elemento decla-ramos o tipo de variável que vamos a utilizar e atribuimos um valor inicial para ela, no segundoelemento é declarada a condição e no terceiro temos a cláusula de fim de interação.

Sintaxe: for ( int cont = valor_inicial; <condição> ; <cláusula_fim_interação>){ }

Exemplo:

for ( int var = 0; var <= 10; var++){System.out.println(var);}

Neste exemplo, primeiro foi declarada uma variável vai de tipo inteiro com um valor inicialde zero, depois é testada a condição que se for satisfeita será impresso o valor de var, senãoterminará o ciclo de repetição e o controle passará para o primeiro comando que estiver depoisdo bloco for.

38

Page 40: Java

Capítulo 9

Encapsulamento, herança epolimorfismo

9.1 Encapsulamento

É a capacidade de poder restringir na classe o acesso a seus elementos, através de um quali-ficador. Os qualificadores (são palavras reservadas) permitem a visibilidade a um determinadoatributo ou método definindo. Em Java existem os qualificadores private, public, protected e pac-kage, estas palavras reservadas permitem restringir o acesso as declarações de uma classe e aprópria classe.

Benefícios de se restringir uma classe:

• Código de programa legível.

• minimização de erros.

• facilidade de modificação.

• facilidade de extensão.

Qualificadores:Public: permite que os atributos e métodos sejam acessíveis a todos os métodos de todas as

classes, isto é, sejam acessados por códigos externos.

Private: os atributos e métodos só podem ser acessados por métodos que pertençam àmesma classe deles. Este é o mais rígido nível de encapsulamento.

39

Page 41: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Protected: O acesso dos métodos ou atributos pode ser feito na própria classe ou em sub-classes, isto quer dizer, em classes filhas.

Package: os atributos e métodos são acessíveis pela própria classe ou por classes que per-tencem ao "package"em que foram criados.

Exemplo:

public class nome_classe { //declaração inicial da classe de tipo publicprivate int valorprivate float valor2 //atributos da classepublic void exemplo(){

}} //fim da classe

9.2 Herança

Definida como a habilidade de uma classe poder herdar características de uma outra. A classeque recebe a herança é dita como derivada da classe ou subclasse; a subclasse inclui o compor-tamento da superclasse e dá a possibilidade de adicionar-lhe funcionalidades.

Esta propriedade de uma classe poder herdar características de outra e assim sucessiva-mente é chamado de hierarquia de classes. Podemos imaginar a hierarquia como uma árvoregenealógica, onde temos a superclasse pai e a partir dele as subclasses filhos.

Exemplo:

//declaração da superclasse

class Colegio {String NomeColegio; //atributos da classe colegiopublic string endereco(){ //metodo

return endereco2;}

}fim da superclasse

// declaração subclasse

class Disciplina{

40

Page 42: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

String NomeAluno;//atributo adicional á superclassepublic string matricula(){//metodo adicional á superclasse

return matricula2;} //fim da subclasse

Uma visualização da herança:

9.3 Polimorfismo

É o princípio pelo qual existe uma troca de mensagens entre a superclasse e os métodos dassubclasses. As subclasses invocam métodos que têm a mesma identificação, mas para cadaclasse derivada possuem distintos comportamentos.

Por exemplo:

Ao fazer a chamada de um método apartir de um objeto de uma classe A, gera-se a buscado método nesta classe, caso ele não seja encontrado é realizada a busca na superclasse (quechamaremos de classe B) da classe A, caso não seja encontrado na classe B é feita a busca nasua superclasse, isto é feito ate encontrar o método ou ate chegar na raiz da hierarquia de clas-ses. Encontrado o método ele é executado e qualquer outra chamada dentro dele gera a buscado método desde a classe.

41

Page 43: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Na linguagem Java os métodos são virtuais portanto suportam polimorfismo, bastando serredeclarados na subclasse.

42

Page 44: Java

Capítulo 10

Variáveis

As rotinas são classificadas em funções e procedimentos, rotina é um trecho identificado de umprograma, com início e fim bem definido. Quando uma rotina é chamada o controle vai para oprimeiro comando da rotina e prossegue a partir dali com o resto do programa.

Nas rotinas, as funções são caracterizadas por retornar algum valor como resultado de seuprocessamento por exemplo funções aritméticas, cálculo de raízes, somas, etc, enquanto um pro-cedimento não da nenhum valor de retorno por exemplo ler registros e armazena-los em algumaestrutura da memória, etc.

10.1 Variáveis Paramétricas

São variáveis declaradas na especificação de um método, estas variáveis possuem algum valorque será usado no método invocado. Seu uso é semelhante ao das variáveis locais podendo sermodificado o seu valor.Sintaxe: nome_metodo(TipoDaVariavel NomedaVariavel){ }

Exemplo 1:

class Exemplo1 {static long multiplica (int x){

long cont;for(cont = 1; x != 0; x–)

cont = cont*x;return cont;}

}

class chama{public static void main (String[] arg){

43

Page 45: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

system.out.println(Exemplo1.multiplica(3));system.out.println(Exemplo1.multiplica(5));}

}

no método main é chamado o método multiplica e é passado à variável paramétrica x o valorde 3 e de 21. Estes valores são utilizados nos comandos do método multiplica, posteriormentesão retornados os valores e impresso na tela:

6120

As variáveis paramétricas são criadas quando chamadas ao método que pertencem e existemsó durante a execução do método.

Existem duas maneiras de atribuir os valores às variáveis paramétricas: passagem de argu-mento por valor e por referência.

Passagem de argumentos por valor:

No exemplo1 a passagem é por valor, isto é, é feita a chamada a um método e os parâmetrosreais utilizados na chamada são avaliados, produzindo valores que são atribuídos aos parâmetrosformais correspondentes.

Passagem de argumentos por referência:Quando é invocada uma função ou procedimento, faz-se que as variáveis paramétricas arma-zenem uma referência aos parâmetros reais em vez de uma copia do valor, como é feito napassagem por valor. Mas este tipo de passagem em Java não é implementada, isto aconteceporque em Java não existem ponteiros, existem objetos. Assim, toda variável do tipo "objeto"é narealidade uma referência para aquela instância do objeto.

Observação: Variáveis do tipo de dados primitivo são passadas por valor. Objetos não sãopassados para métodos; em vez disso, são passados aos métodos referências a objetos. Aspróprias referências também são passadas por valor. Quando um método recebe uma referênciaa um objeto, o método pode manipular o objeto diretamente.

44

Page 46: Java

Capítulo 11

Caracteres e ArquivosCaracteres eArquivos

11.1 Caracteres

Representam uma seqüencia de caracteres e são implementadas como objetos da classe String.Uma cadeia de caractere é o único objeto que possui uma representação no código fonte do pro-grama, ou seja uma cadeia de caractere é o único objeto que tem um literal na linguagem Java.

System.out.println(21); System.out.println("meu programa");

O literal 21 é de tipo int e a cadeia de caracteres "meu programa"é de tipo String.int é um tipoprimitivo e a cadeia de caracteres é de tipo String (que é uma classe). Em Java

Quando temos String str; estamos definindo uma variável com nome str de tipo String, mas oseu conteúdo não é definido. Agora definiremos o conteúdo da variável, String str = "programa";o conteúdo corresponde a um endereço de memória onde o compilador montou um objeto con-tendo a cadeia de caracteres "programa".

Para construir um novo objeto usamos new. A expressão str = new String("oi") corresponde aum construtor. Um construtor instrui o operador new em como deve ser construído o novo objeto.

Algumas operações

Concatenação: Esta operação é feita em operandos de tipo String por meio do símbolo +, seo operando que está sendo concatenado não for de tipo String, ele será transformado antes daconcatenação na cadeia de caracteres que o representa.

45

Page 47: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Exemplo 1:

Class Exemplo1 {public static void main (String[] arg){

String Aluno;String Nome = "Felipe";int Matricula = 3219;curso = new String("Computacao ");Aluno = Nome + curso + Matricula;System.out.println(Aluno );}

}

Aparecera na tela do computador: Felipe Computacao 3219

Subcadeia: Fazendo uso do método substring podemos obter uma subcadeia de uma cadeiade caracteres. O método recebe um valor inteiro e ele retorna a subcadeia formada pelos carac-teres a partir da posição dada pelo valor inteiro.

Exemplo:

String X; String Srt = "testando metodo subcadeia"; X = Srt.substring(9);

Então na variável X produz-se a cadeia de caracteres: metodo subcadeia

Alguns outros métodos que permitem fazer certas operações:

int length() : Retorna o tamanho da cadeia de caracteres. int compareTo(String str) : Sendoexecutado por um objeto S, compara lexicograficamente a cadeia S com str, retorna um inteironegativo se S precede str e positivo se str precede S, caso sejam iguais retorna o valor zero.char charAt(int ind) : Usa o inteiro ind e retorna o caracter que esta na posição do índiceind. CaracTeres.toLowerCase() : Todos os caracteres são convertidos a minúscula. CaracTe-res.toUpperCase() : Todos os caracteres são convertidos a maiúscula.

Existem mais métodos que ajudam nas operações entre cadeia de caracteres.

46

Page 48: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

11.2 Arquivos:

São um conjunto de dados armazenados em um formato especifico. Na continuação você iráaprender as bases para poder trabalhar com arquivos.

• Identificar um arquivo: é passado o caminho para determinar a localização dele, por exem-plo : /felipe/home/arquivo.txt;

• Abrir um arquivo para leitura: O ambiente de execução deve localizá-lo e prepará-lo paraleitura. Comando: new FileReader("/felipe/home/arquivo.txt ");

• Gravando arquivos: Para gravar arquivos use o comando:new FileWriter("arquivo.txt");

• Fechando um arquivo: Para fechar use o comando close(), por exemplo:FileWriter arq =new FileWriter("arquivo.txt"); arq.close(); //fecha arquivo

47

Page 49: Java

Capítulo 12

VETORES

12.1 Vetores

Vetores, também conhecidos como arrays, são seqüências de elementos de um determinado tipo,em um número pré-determinado de dimensões (vetores de uma, duas ou mais dimensões, porexemplo).

Arrays são ditos unidimensionais quando possuem apenas uma dimensão, podendo assimreferenciar-se seus elementos através de um único índice numérico, geralmente entre colchetesexemplo [1]. Arrays multidimensionais são aqueles em que devemos referenciar cada elementoatravés de dois ou mais índices numéricos, como por exemplo [1][2]. Podemos implementarmatrizes facilmente através dessa possibilidade de manipulação de arrays.

Arrays são referenciados como variáveis, cabendo ao programador determinar qual o tipodeste vetor. Além de definirmos o nome do array, devemos também definir portanto o tipo destearray e quantas dimensões possuirá. Como dito anteriormente, as dimensões são especificadaspor pares de colchetes, quando declaramos o array.

Vejamos agora exemplos de declarações de arrays unidimensionais e multidimensionais:

Uma dimensão:

A B C D

Multidimensionais (matriz):

A B CD E FG H IJ K L

Para declarar arrays usaremos a seguinte sintaxe, que já foi apresentada:

Unidimensional: tipo nome_array[] => int numeros[10];Muiltidimensionais:tipo nome_array[][] => char Lista[5][4], sendo que no primeiro colchetes te-mos o numero de linhas da matriz e no segundo o numero de colunas.

48

Page 50: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

12.2 Array Unidimensional

Podemos utilizar arrays para evitar o uso de múltiplas variáveis redundantes em um programa,facilitando a manipulação de grande quantidade de dados. Normalmente, manipula-se uma es-trutura utilizando "for"para percorrer o array, conforme o exemplo abaixo:

import java.io.*;class exemplo1() {

public static void main(String[] arg){int x=21;char[] vogais =’a’,’e’,’i’,’o’,’u’;int Nuns [x];Teclado tec= new Teclado();for(int i=0; i<x;i++)

Nuns[i] = tec.LerInteiro();}

}

Vogais é um vetor de tipo char, que tem atribuido seus valores, o vetor Nuns é de tipo inteirocom um tamanho de 21, os seus valores são obtidos atraves do teclado. O ciclo de repetiçãofor é usado para percorrer o array e guardar em cada posição um valor inteiro, lembre-se que aprimeira posição do vetor inicia com o numero zero, por isso nossa variável está declarada com ovalor inicial de zero.

Para imprimir os elementos de um vetor, é necessário percorrer o vetor: for(int i=o; i < x; i++ )System.out.println(array[i]+);

Saber percorrer um vetor é muito importante porque a partir dele podemos manipular melhorseus elementos.

12.3 Array Multidimensional

A criação de matrizes é muito parecido ao unidimencional, podemos criar arrays de muitas di-mensões:

int array[][] => array de duas dimensões. int array[][][] => array de tres dimensões. int array[][][][]=> array de quatro dimensões.

49

Page 51: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Para criar um array de n dimensões, devemos colocar n colchetes abertos e fechados.

Percorrer Matriz:Para percorrer uma Matriz faremos uso de dois for, um percorre as linhas enquanto o outro

percorre as colunas, exemplo:

import java.io.*;class exemplo2() {

public static void main(String[] arg){int x=21, y=10;int Nuns [x][y];Teclado tec= new Teclado();for(int i=0; i<x;i++){

for(int j=0; j<x;j++){Nuns[i][j] = tec.LerInteiro();System.out.println(Nuns[i][j]+);}

}}

}

No exemplo acima, é percorrido o array para receber os dados do teclado e serem guardadosem cada posição da matriz, posteriormente é impresso o valor que foi inserido.

50

Page 52: Java

Capítulo 13

Tratamento de Erros e Exceções

13.1 Tratamento de Erros e Exceções

Na execução de um programa podem ocorrer erros que podem,tanto, causar a interrupção doprograma quanto produzir resultados incorretos ou comportamento inesperado.

Existem dois tipos de erros erros de lógica e erros de execução:

Erros lógicos: Estes erros se apresentam no desenvolvimento de um algoritmo não apro-priado para solucionar o problema que se propõe. Estes erros não necessariamente causaminterrupção na execução do programa.

Erros de execução:São erros mais específicos em relação aos lógicos, que decorrem de uma operação inválida

e causam interrupção na execução do programa. Este tipo de erro depende da plataforma e dalinguagem que esta sendo utilizada, por exemplo se realizamos uma divisão por zero vai causarum erro de execução. Ao se causar um erro a execução é interrompida e é enviado um sinal aoprograma indicando que a operação não pode ser realizada.

As linguagens de programação possuem formas para identificar e tratar os erros de execução.

Os erros são caracterizados por objetos de classes especificas, estas classes são classe Erroe classe Exception. Funcionam como superclasses, mas ambas são subclasses da classe Th-rowable.

Classe error: a classe error com suas subclasses, é utilizada para indicar erros graves quenão se espera que sejam tratados pelos programas.

Classe Exception: esta classe indicam erros que podem e devem ser tratados pelos progra-

51

Page 53: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

mas, como por exemplo erros aritméticos.

13.2 Comando Try

Os tratamentos de erros são feitos pelo comando Try, em sua sintaxes temos um corpo e a eleassociadas várias cláusulas catch.

Quando o controle esta no bloco do comando try o ambiente passa a monitorar todos oscomandos declarados em seu bloco (corpo). se nenhum erro aparecer o comando try terminanormalmente mas se ocorrer algum erro a cláusula catch é acionada, ao fim da execução dacláusula catch o comando try termina normalmente e o fluxo passa para o próximo comandoapós ele.

try{res = 100/num;System.out.println("100/"+num+"= "+res);}catch (ArithmeticExecption e){System.out.println("não se pode calcular");

}

Aqui é tratado o erro em casso de que num tenha o valor de zero, neste caso é um erro aritmético que é tratada na cláusula catch. try{int num = Interger.parseInt(teclado.readLine());}catch (NumberFormatException e){System.out.println("digitou um valor não inteiro");

}

Neste é tratada a entrada de um numero não inteiro.

13.3 Cláusula finally

Esta cláusula é sempre executada e se encontra no corpo do comando try, caso não se produzanenhum erro os comandos são executados e o controle passa para a cláusula finally, caso ocorraalgum erro o controle passa para a cláusula catch onde é tratado o erro e depois para a cláusulafinally.

try{int num = Interger.parseInt(teclado.readLine());}catch (NumberFormatException e){System.out.println("digitou um valor não inteiro");}

52

Page 54: Java

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

finally{System.out.println("saindo do bloco try");}

Caso ocorra um erro no programa será impresso na tela:digitou um valor não inteiro saindo do bloco try

53