Curso Java Basico

193
Curso Java Básico Instrutora: Katia Cristina Lage dos Santos Regional Belo Horizonte 19/11/2007 a 30/11/2007

description

Curso de Java Básico - Uniserpro

Transcript of Curso Java Basico

Page 1: Curso Java Basico

Curso Java Básico

Instrutora: Katia Cristina Lage dos SantosRegional Belo Horizonte

19/11/2007 a 30/11/2007

Page 2: Curso Java Basico

Título da Apresentação

Visão geral

Curso Java Básico

O nome Java é usado para referir-se à:

uma linguagem de programação orientada a objetos;

uma coleção de APIs (classes, componentes, frameworks) para o desenvolvimento de aplicações multiplataforma;

um ambiente de execução presente em navegadores, mainframes, sistemas operacionais, celulares, palmtops, cartões inteligentes, eletrodomésticos

Java foi lançada pela Sun Microsystems em 1995

write once, run everywhere; programe uma única vez, execute em qualquer lugar;

o projeto é controlado pela Sun (http://java.sun.com/) e pela comunidade de usuários JPC (Java Community Process - http://jcp.org/en/home/index).

Page 3: Curso Java Basico

Título da Apresentação

Visão geral

Curso Java Básico

Um programa escrito para a plataforma Java necessita de dois componentes para ser executado:

a máquina virtual Java (Java Virtual Machine - JVM);

um conjunto de bibliotecas de classe que disponibilizam um série de serviços para esse programa.

O pacote de software que contém a máquina virtual e esta biblioteca de classes é conhecido como JRE (Java Runtime Environment).

JVM Bibliotecas de Classe

JRE

+

Page 4: Curso Java Basico

Título da Apresentação

Máquina Virtual

Curso Java Básico

A máquina virtual Java, ou simplesmente JVM:

é um dos principais componentes da plataforma Java;

permite que o mesmo código possa ser executado em várias plataformas sem a necessidade de recompilação.

Mas COMO?

a JVM emula uma máquina real possuindo um conjunto de instruções próprio e atua em áreas de gerenciamento de memória;

a JVM possui uma especificação que pode ser implementada nas diversas arquiteturas. Essa especificação visa não atender a nenhum tipo de tecnologia em específico, seja de hardware ou de sistema operacional;

os ambientes de execução e de desenvolvimento são fornecidos por fabricantes de hadware e software (MacOS, Linux, etc).

Page 5: Curso Java Basico

Título da Apresentação

Máquina Virtual

Curso Java Básico

CÓDIGO JAVA

COMPILADOR

CÓDIGO JAVA

COMPILADOR

Byte Code Java

VM Windows

SO Windows

VM Linux

SO Linux

VM Celular

SO Celular

Ambiente de Desenvolvimento

Distribuição

Ambiente de Execução

A máquina virtual não trabalha diretamente com a linguagem de programação Java, mas sim com o arquivo de formato class.

Esse tipo de arquivo contém os bytecodes, que são as instruções para a máquina virtual e uma tabela de símbolos.

Page 6: Curso Java Basico

Título da Apresentação

Máquina Virtual

Curso Java Básico

O código Java é compilado, gerando o conjunto de instruções chamado de byte-code;

Esse byte-code é aplicado à Máquina Virtual Java (JVM) que se encarrega de interpretar os comandos para o sistema operacional onde o programa está rodando. Ou seja, a máquina virtual traduz as instruções do código Java para instruções válidas no sistema operacional em que está rodando;

Esse byte-code poderá então ser interpretado por qualquer máquina virtual Java, rodando em Linux, Windows, Palm OS, Solaris ou qualquer outro sistema operacional que possua uma máquina virtual Java implementada.

Compile once, run anywhere.

Page 7: Curso Java Basico

Título da Apresentação

Máquina Virtual

Curso Java Básico

Um programa Java só é executado caso o seu byte-code passe pela verificação de segurança da JVM, que consiste em:

o programa foi escrito utilizando a sintaxe e semântica da linguagem;

não existem violações de áreas restritas de memória no código;

o código não gera Stack Overflow;

os tipos de parâmetros dos métodos são corretos;

não existe nenhuma conversão ilegal entre dados do programa

o acesso a objetos está corretamente declarado.

Caso alguma das condições acima não seja satisfeita, a máquina virtual Java causará um erro de execução (runtime error).

A JVM não permite que um programa Java acesse recursos de hardware diretamente, protegendo o computador de operações perigosas.

Page 8: Curso Java Basico

Título da Apresentação

Máquina Virtual

Curso Java Básico

Uma JVM possui definições concretas para a implementação dos seguintes itens:

conjunto de instruções (equivalentes às instruções da CPU), conjunto de registradores, formato padrão de classes, pilha de memória, pilha de objetos coletados pelo garbage-collector e área de memória.

Compilador JIT (just-in-time)

desde a versão 1.2 da JRE, a implementação da Sun da JVM inclui um compilador just-in-time (JIT);

com este compilador todo o bytecode de um programa é transformado em instruções nativas e carregado na máquina virtual em uma só operação, permitindo um ganho de desempenho muito grande em comparação com a implementação anterior, onde as instruções em bytecode eram interpretadas uma por vez.

Page 9: Curso Java Basico

Título da Apresentação

Bibliotecas de Classes

Curso Java Básico

Na maioria dos sistemas operacionais modernos, um corpo formado por código reusável é organizado e disponibilizado para simplificar o trabalho do programador;

Este código encontra-se, normalmente, na forma de bibliotecas dinâmicas que a aplicação utiliza durante a sua execução.

Como a plataforma Java não é dependente de qualquer sistema operacional, as aplicações não podem depender das bibliotecas destes sistemas.

Por isso, a plataforma Java disponibiliza um grande conjunto padronizado de bibliotecas de classe, que contém praticamente o mesmo número de funções encontradas nos sistemas operacionais modernos.

Page 10: Curso Java Basico

Título da Apresentação

Bibliotecas de Classes

Curso Java Básico

Uma classe de biblioteca Java serve a três propósitos dentro da plataforma Java:

disponibilizam ao programador um conjunto de funções bem conhecidas que realizam tarefas comuns, como a manutenção de listas de elementos ou manipulação de strings;

contém uma interface para tarefas que dependem do hardware e do sistema operacional (exemplo, acesso a rede e manipulação de arquivos);

se alguma plataforma não suportar alguma função que uma aplicação Java necessita, as bibliotecas implementam esta funcionalidade usando os recursos disponíveis, ou disponibilizam um meio consistente para que a aplicação verifique a presença de determinada funcionalidade.

Page 11: Curso Java Basico

Título da Apresentação

Gerenciamento de Memória

Curso Java Básico

Durante a execução de um programa de computador, ocorre a alocação e liberação dinâmica de memória RAM. Dados são escritos e lidos da memória do computador satisfazendo os requisitos de cada programa.

Em linguagens tradicionais como Pascal, Basic e C/C++, o programador é responsável por controlar essa alocação, impedindo o estouro de memória (stack overflow) e outros problemas, como o acesso indevido a áreas reservadas de memória.

Para facilitar a vida dos programadores, e evitar os erros comuns associados à alocação de memória, a linguagem Java introduziu o conceito de garbage-collection.

Page 12: Curso Java Basico

Título da Apresentação

Gerenciamento de Memória

Curso Java Básico

Garbage-collection

é um mecanismo de controle automático de alocação e liberação de memória.

Quando uma variável é declarada em um código de computador, a JVM cria um ponteiro para uma área de memória equivalente ao tamanho do tipo de dado utilizado por essa variável.

public class Pessoa{ int intIdade; String strNome (...) public static void main(){ Pessoa pessoa1 = new Pessoa(); }}

pessoa1

Pessoa

MEMÓRIA

Page 13: Curso Java Basico

Título da Apresentação

Gerenciamento de Memória

Curso Java Básico

Garbage-collection

Quando essa variável é associada a outra região de memória, a JVM coloca o espaço alocado anteriormente em uma pilha de objetos em desuso.

Caso o computador fique com pouca memória disponível, a JVM remove objetos dessa pilha, permitindo que esse espaço de memória seja re-alocado.

(...) public static void main(){ Pessoa pessoa1 = new Pessoa(); Pessoa pessoa2 = new Pessoa(); pessoa1 = pessoa2; }

pessoa1MEMÓRIA

pessoa2

Pessoa

Page 14: Curso Java Basico

Título da Apresentação

Gerenciamento de Memória

Curso Java Básico

O processo de garbage-collection ocorre automaticamente durante a execução de um programa Java.

é possível sugerir ao JVM que execute a coleta de lixo;

no entanto não haverá garantias de que todos os objetos não utilizados serão realmente removidos da memória;

chamadas possíveis:Runtime.getRuntime() ou System.gc();

O programador não precisa se preocupar com aritmética de ponteiros (grande dificuldade em linguagens como C e Pascal.

Exemplo 1

Page 15: Curso Java Basico

Plataforma Java

Curso Java Básico

A plataforma Java se divide em três grandes edições. http://www.javafree.org/wiki/Java

Java Standard Edition (JavaSE);

Java Mobile Edition (JavaME);

Java Enterprise Edition (JavaEE).

Page 16: Curso Java Basico

Título da Apresentação

Plataforma Java

Curso Java Básico

Java Standard Edition (JavaSE)

É a tecnologia Java para computadores pessoais, notebooks e arquiteturas com poder de processamento e memória consideráveis.

Várias APIs acompanham esta versão e tantas outras podem ser baixadas opcionalmente no site da Sun.

É com elas que a maioria das aplicações são construídas e executadas.

O J2SE possui duas divisões:

Java Development Kit (JDK) ou Standard Development Kit (SDK): um conjunto para desenvolvimento em Java: compilador (javac), depurador, gerador de documentação (javadoc), empacotador de componentes (jar);

Java Runtime Edition (JRE): uma versão mais leve da JDK pois é preparada para o ambiente de execução.

Page 17: Curso Java Basico

Título da Apresentação

Plataforma Java

Curso Java Básico

Java Mobile Edition (JavaME)

É a tecnologia Java para dispositivos móveis com limitações de memória ou processamento.

Possui APIs bem simples e leves para economizar espaço, memória e processamento.

São utilizadas para sistemas em celulares, palm tops, pocket pcs, smartphones, javacards e demais dispositivos.

O J2ME se divide em dois grupos de bibliotecas. É dividida em dois grupos:

Connected Limited Device Configuration (CLDC): para celulares e smartphones, que são mais limitados;

Connected Device Configuration (CDC): para Palmtops e Pocket pcs e alguns dispositívos mais poderosos.

Page 18: Curso Java Basico

Título da Apresentação

Plataforma Java

Curso Java Básico

Java Enterprise Edition (JavaEE)

É a tecnologia Java para aplicações corporativas que podem estar na internet ou não.

Possui um grande número de APIs onde a segurança é a principal preocupação.

É ideal para a construção de servidores de aplicação, integração de sistemas ou distribuição de serviços para terceiros.

A plataforma Java EE não é um produto, mas sim de uma especificação definida pela Sun.

A Java EE simplifica as aplicações empresariais e multi-camadas, baseada em componentes padronizados, modulares e reusáveis, e oferece um conjunto completo de serviços para estes componentes.

Page 19: Curso Java Basico

Título da Apresentação

O ambiente Eclipse

Curso Java Básico

O Eclipse é um ambiente de desenvolvimento integrado (IDE – Integrated Development Environment)

Contém um conjunto de funcionalidades embutidas, cuja finalidade é prover um modo mais fácil e interativo de construir e manipular seus programas.

Dentre essas funcionalidades, destacam-se:

um editor de texto com facilidades especialmente desenhadas para a linguagem;

um compilador e um interpretador, para muitas linguagens interpretadas, dentre elas o Java;

um editor gráfico, com facilidades para criação e edição da interface gráfica do programa a ser desenvolvido;

Page 20: Curso Java Basico

Título da Apresentação

Curso Java Básico

uma ferramenta, denominada debugger, que possibilita um monitoramento mais elegante do funcionamento do seu programa, facilitando a detecção e remoção dos erros de lógica do código.

Além das funcionalidades inerentes ao conceito de IDE, é importante ressaltar que o Eclipse é tido como “meta-ambiente de desenvolvimento de software”, um “ambiente para construção de ambientes”. Em outras palavras, um framework para integração de diferentes tipos de aplicação.

O ambiente Eclipse

Page 21: Curso Java Basico

Curso Java Básico

Funcionalidades do ambiente Eclipse

ao iniciar o Eclipse pela primeira vez, será solicitada a indicação de um diretório onde será armazenado o código a ser desenvolvido workspace;

é possível existir mais de um workspace na mesma mídia de armazenamento. Entretanto, cada workspace poderá ser utilizado por somente uma instância do Eclipse em execução no momento.

na janela de definição do workspace é possível definí-lo como o diretório padrão (default) onde os projetos a serem desenvolvidos por aquela instância do Eclipse serão armazenados.

O ambiente Eclipse

Page 22: Curso Java Basico

Título da Apresentação

Curso Java Básico

Funcionalidades do ambiente Eclipse

após a definição do workspace, será exibida uma janela de boas-vindas(welcome).

após fechá-la, será exibido o layout do ambiente sob a denominada perspectiva Java Perspective;

O ambiente Eclipse

Page 23: Curso Java Basico

Título da Apresentação

Curso Java Básico

O ambiente Eclipse

Page 24: Curso Java Basico

Título da Apresentação

Curso Java Básico

Funcionalidades do ambiente Eclipse

o Eclipse destaca-se dentre as demais IDEs, pelo fato de possuir a funcionalidade de customização do ambiente de trabalho.

trata-se de um programa open-source, originalmente escrito para ser uma IDE versátil e possível de ser adaptada para qualquer propósito relacionado ao desenvolvimento de software, desde a produção de plug-ins para ele mesmo e/ou outros programas, passando pela integração de ferramentas ao ambiente Eclipse e culminando no desenvolvimento do software final em si. Esta adaptabilidade já começa pela estética do ambiente.

O ambiente Eclipse

Page 25: Curso Java Basico

Título da Apresentação

Curso Java Básico

Package Explorer (1)

é um visualizador simples e elegante dos seus projetos;

um projeto representa toda a estrutura do seu programa, armazenando os arquivos-fonte (.java), os bytecodes (.class), as configurações gerais do ambiente para o projeto, eventuais arquivos de backup e outros arquivos inerentes ao escopo do programa (por exemplo, quaisquer possíveis imagens relacionadas ao projeto);

a navegação é semelhante à do Windows Explorer, bastante intuitiva e respeitando a hierarquia do projeto, com a qual ficaremos mais familiarizados com a prática, ao longo do desenvolvimento do projeto.

O ambiente Eclipse

Page 26: Curso Java Basico

Título da Apresentação

Curso Java Básico

Editor de Textos (2)

o editor de textos do Eclipse denota as palavras-chave de Java™ em letras destacadas para facilitar a leitura do código;

esta é uma das funcionalidades mais utilizadas nesta ferramenta, possuindo um número expressivo de facilidades, ilustradas nas situações seguintes.

O ambiente Eclipse

Page 27: Curso Java Basico

Título da Apresentação

Curso Java Básico

Editor de Textos (2)

Função Autocompletar

Suponha que estejamos escrevendo o método “transferir” de uma classe Conta

este método é composto de uma chamada ao método “debitar” e outra chamada ao método “creditar”, como podemos na definição abaixo:

O ambiente Eclipse

Page 28: Curso Java Basico

Título da Apresentação

Curso Java Básico

Editor de Textos (2)

durante a implementação deste método, quando digitarmos o nome de alguma variável que denote um objeto e o ponto para chamada de método, o editor de textos do Eclipse nos mostrará uma janela com uma relação completa de todos os métodos e atributos que este objeto pode acessar em seu contexto, e a medida em que escrevermos as letras, ele filtrará tudo o que puder ir sendo descartado, como ilustra a imagem abaixo.

O ambiente Eclipse

Page 29: Curso Java Basico

Curso Java Básico

Editor de Textos (2)

Detecção de erros de sintaxe

uma grande funcionalidade das principais IDEs atuais é a detecção de erros de compilação em tempo de implementação;

o editor de textos do Eclipse, ao perceber um erro de sintaxe (e até alguns poucos erros de lógica), imediatamente destaca o trecho que ele supõe estar errado, além de indicar as possíveis causas do erro e sugerir algumas soluções;

como podemos ver na figura seguinte, ele sublinha o trecho e errado e marca as linhas que apresentam problema de sintaxe no lado direito da janela:

O ambiente Eclipse

Page 30: Curso Java Basico

Curso Java Básico

O ambiente Eclipse

Page 31: Curso Java Basico

Título da Apresentação

Curso Java Básico

Editor de Textos (2)

Indicação de Escopo de Blocos de Código

O editor também separa os trechos de código contido entre chaves, no lado esquerdo da janela, em azul.

Podemos clicar nos triângulos azuis para exibir/esconder trechos entre chaves, facilitando a visualização do arquivo e sua navegação.

Por último, o editor do eclipse nos poupa bastante tempo de pesquisa em documentação de classes nas APIs das mesmas com um recurso muito simples e interessante.

Ao mantermos o mouse por cima de nomes de classe ou métodos, uma caixa de texto aparecerá na tela com toda a documentação da classe / método em questão. A figura seguinte exemplifica essa funcionalidade.

O ambiente Eclipse

Page 32: Curso Java Basico

Título da Apresentação

Curso Java Básico

O ambiente Eclipse

Page 33: Curso Java Basico

Título da Apresentação

Curso Java Básico

Console (3)

o Eclipse oferece um terminal de console para a entrada de dados do teclado pela stream de entrada padrão e a saída de dados que o programa escreve na stream de saída padrão.

Outline (4)

a janela Outline funciona semelhantemente ao Package Explorer, sendo que voltada para a estrutura interna do seu arquivo .java - frequentemente a sua classe;

existem ícones diferentes para cada parte do arquivo.

O ambiente Eclipse

Page 34: Curso Java Basico

Título da Apresentação

Curso Java Básico

Criando um projeto

primeiramente clique em File > New > Project;

um wizard de criação de projetos aparecerá;

O ambiente Eclipse

Page 35: Curso Java Basico

Título da Apresentação

Curso Java Básico

Criando um projeto

em seguida, selecione a opção Java > Java Project;

clique em Next.

A seguinte tela irá aparecer:

O ambiente Eclipse

Page 36: Curso Java Basico

Título da Apresentação

Curso Java Básico

Criando um projeto

digite um nome para o seu projeto;

se você quiser criar o projeto em um diretório diferente do workspace:

marque a opção "Create project at external location";

especifique o diretório onde o projeto será ser armazenado;

marque também a opção “Create separate source and output folders” na caixa “Project Layout”. Essa opção permite que você não misture os arquivos que contém o código-fonte(source) com os arquivos gerados pelo compilador(output ou saída) , criando pastas diferentes para cada um desses tipos de arquivos;

clique em Next.

O ambiente Eclipse

Page 37: Curso Java Basico

Título da Apresentação

Curso Java Básico

Criando um projeto

agora você terá a oportunidade de escolher os diretórios do source e de saída;

para deixar os valores default clique em Finish, ou então altere os valores de acordo com sua conveniência.

possívelmente aparecerá uma janela pedindo para confirmar uma mudança de perspectiva. Se aparecer, clique em "Yes".

O ambiente Eclipse

Page 38: Curso Java Basico

Título da Apresentação

Curso Java Básico

Criando uma classe

agora, seu projeto já está criado, mas ainda não possui nenhuma classe;

para criar uma classe, clique em File > New > Class

a seguinte tela aparecerá:

O ambiente Eclipse

Page 39: Curso Java Basico

Título da Apresentação

Curso Java Básico

Criando uma classe

a parte superior da janela dá algumas indicações sobre o preenchimento - como campos obrigatórios, a sugestão de usar inicial maiúscula para nomes de classes, etc;

em "Source Folder", determine de que projeto sua classe fará parte e a localização do arquivo .java;

selecione o nome da sua classe no campo "Name";

opcionalmente você pode pré-determinar os modificadores de acesso da sua classe e deixar prontos os esqueletos de alguns métodos, no campo Modifiers e nos campos abaixo de “Which method stubs would you like to create?”

escolha "public static void main(String[] args)" – o método principal já será defido na classe;

O ambiente Eclipse

Page 40: Curso Java Basico

Título da Apresentação

Curso Java Básico

Criando uma classe

clique em Finish.

sua classe será criada e aparecerá como a imagem seguinte.

O ambiente Eclipse

Page 41: Curso Java Basico

Título da Apresentação

Curso Java Básico

Utilização de bibliotecas

para adicionar uma biblioteca externa ao projeto:

clique com o botão direito sobre a pasta do projeto no Package Explorer;

selecione a opção Properties.

a seguinte janela surgirá:

O ambiente Eclipse

Page 42: Curso Java Basico

Título da Apresentação

Curso Java Básico

Utilização de bibliotecas

no menu da esquerda, selecione a opção Java Build Path (como está selecionado na figura).

A parte da direita mudará para mostrar o que está na figura;

selecione a aba Libraries para visualizar as bibliotecas utilizadas pelo seu projeto. Provavelmente você poderá ver a biblioteca JRE System Library, que é a biblioteca padrão que vem com o JDK instalado na sua máquina, e que praticamente todo projeto Java deve utilizar;

para adicionar mais bibliotecas, clique no botão Add External JARs (Java ARchives ou, extra-oficialmente, Java Application Resources, o último menos usado);

por último, selecione o caminho da biblioteca a ser adicionada e clique em Open.

O ambiente Eclipse

Exemplo 2

Page 43: Curso Java Basico

Título da Apresentação

Características da linguagem

Curso Java Básico

Todos os programas Java possuem quatro elementos básicos:

Pacotes;

Classes;

Métodos;

Variáveis.

Page 44: Curso Java Basico

Título da Apresentação

Curso Java Básico

Pacotes

as classes que compõem o núcleo de funcionalidades Java estão organizadas em pacotes;

um package Java é um mecanismo para agrupar classes de finalidades afins ou de uma mesma aplicação;

além de facilitar a organização conceitual das classes, o mecanismo de pacotes permite localizar cada classe necessária durante a execução da aplicação;

no entanto, a principal funcionalidade de um pacote Java é evitar a explosão do espaço de nome, ou seja, classes com o mesmo nome em pacotes diferentes podem ser diferenciadas pelo nome completo, pacote.classe.

Características da linguagem

Page 45: Curso Java Basico

Título da Apresentação

Curso Java Básico

Entre os principais pacotes oferecidos como parte do núcleo Java estão:

java.lang;

java.util;

java.io;

java.net.

Pacotes contêm classes e duas outras entidades de Java que veremos posteriormente: exceções e interfaces;

Um package é uma coleção de classes e interfaces relacionadas fornecendo proteção de acesso e gerenciamento de nomes de diretórios.

Usamos a declaração import para acessar essas classes.

Se a declaração import não for utilizada e desejarmos utilizar alguma classe externa, será necessário colocar o caminho da classe a cada acesso.

Características da linguagem

Page 46: Curso Java Basico

Título da Apresentação

Curso Java Básico

Exemplo:

import java.lang.*;

O asterisco no final diz ao compilador para importar todas as classes do pacote java.lang.

Esse é um dos vários pacotes incluídos na API.

O compilador Java define implicitamente um pacote para as classes no diretório atual e o importa implicitamente.

Esse é o motivo porque não precisamos colocar explicitamente as classes que escrevemos em um pacote.

Para colocarmos uma classe em um pacote, deve-se inserir a diretiva package com o nome do pacote no início da classe.

Características da linguagem

Page 47: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura de um código Java

Como todas linguagem de programação, Java possui um formato básico para a escrita de códigos. Tal formato é demonstrado abaixo:

1 // Duas barras significam comentário

2 /* comentários também podem seguir o formato de C++ */

34 public class NomeDoPrograma

5 {

6 // O método main indica que o código Java pode ser executado

7 static public void main(String[] args)

8 {

9 // aqui virão os comandos

10 }

11 }

Características da linguagem

Page 48: Curso Java Basico

Título da Apresentação

Curso Java Básico

Compreendendo o código Java

linhas 1 e 2: representam comentários. Um comentário pode conter qualquer informação relevante ao comportamento do programa, autor, versão, etc;

linha 3: está em branco, pois Java permite linhas em branco entre os comandos;

linha 4: é a declaração do "nome do programa", que é case-sensitive (existe diferença entre maiúsculas e minúsculas). O arquivo que contém o código Java deve ser salvo com o mesmo nome que aparece após a declaração public class e mais a extensão .java (o exemplo acima deveria ser salvo como NomeDoPrograma.java).

Características da linguagem

Page 49: Curso Java Basico

Título da Apresentação

Curso Java Básico

Compreendendo o código Java

linhas 5 e 8: a abertura de chave { indica início de bloco;

linha 8: essa linha indica à Java Virtual Machine que o programa será executado. Os demais programas não conterão o método main();

Quando um programa Java é executado, o interpretador da JVM executa os comandos que estiverem dentro do bloco indicado pelo método "static public void main(String)".

linha 9: aqui seria escrito o código propriamente dito;

linhas 10 e 11: o fechamento de chave } indica fim de bloco.

Características da linguagem

Page 50: Curso Java Basico

Título da Apresentação

Curso Java Básico

Compilando e Executando

a seguir, apresentaremos um exemplo de criação, compilação e execução de um programa Java, sem o uso de uma IDE, utilizando apenas os programas da JSDK.

1- Crie o arquivo HelloWorld.java em um diretório qualquer com o seguinte conteúdo:

public class HelloWorld {

public static void main (String args[])

{

System.out.println("Hello World!");

}

}

Configurar variáveis de ambiente – referência artigo http://www.guj.com.br/java.tutorial.artigo.12.1.guj

Características da linguagem

Page 51: Curso Java Basico

Título da Apresentação

Curso Java Básico

Compilando e Executando

2 - Chame o compilador Java para este arquivo:

$ javac HelloWorld.Java

3- Seu diretório deve ter recebido um novo arquivo após essa compilação:

HelloWorld.class

Características da linguagem

Page 52: Curso Java Basico

Título da Apresentação

Curso Java Básico

Compilando e Executando

4 - Chame o interpretador Java para este arquivo (omita a extensão .class do arquivo):

$ j ava HelloWorld

5- Observe o resultado na tela:

Hello World!

Características da linguagem

Page 53: Curso Java Basico

Título da Apresentação

Estrutura da linguagem

Curso Java Básico

Comentários

Qualquer informação especificada entre os caracteres de comentário será ignorada pelo compilador;

Os comentários em Java podem ser por linha ou em bloco:

por linha:

// isto é um comentário e inicia com duas barras. int valor; // e pode estar no final da linha

em bloco: /* Comentário em bloco

Aceita múltiplas linhas Não utilize comentários aninhados

*/

Page 54: Curso Java Basico

Título da Apresentação

Curso Java Básico

Comentários

As regras que tratam dos comentários em Java são:

comentários não podem ser aninhados;

não podem ocorrer dentro de strings ou literais;

as notações /* e */ não tem significado dentro dos comentários //;

a notação // não tem significado dentro dos comentários /* e /**.

Estrutura da linguagem

Page 55: Curso Java Basico

Título da Apresentação

Curso Java Básico

Comentários javadoc

É tipo especial de comentário, utilizado para gerar documentação da API do código Java.

/** isto é um comentário para geração de javadoc*/

Estrutura da linguagem

Page 56: Curso Java Basico

Título da Apresentação

Curso Java Básico

Identificadores

Identificadores são usados para determinar nomes de variáveis, atributos de classe ou de instância, parâmetros e métodos;

Os identificadores em Java iniciam com:

uma letra;

um sublinhado (_ );

ou um sinal de dólar "$";

Podem possuir números após o primeiro caractere da palavra;

Pela premissa de ser case-sensitive existe uma diferenciação entre letras maiúsculas e minúsculas.

Estrutura da linguagem

Page 57: Curso Java Basico

Curso Java Básico

Convenções para Identificadores

na linguagem Java é utilizada a seguinte convenção para formação de identificadores:

constantes com todas as letras em maiúsculo: CONSTANTE

variáveis e métodos começam com letra minúscula: variável

classes e interfaces começam com letra maiúscula: Classe

se o identificador for um nome composto por mais de uma palavra, cada nova palavra começa com letra maiúscula:

exemplo: variávelComNomeComposto

Estrutura da linguagem

Page 58: Curso Java Basico

Título da Apresentação

Curso Java Básico

Tipos Primitivos

no Java, todos os objetos necessitam ter seu tipo especificado.

existem 8 tipos primitivos em Java;

seis deles são numéricos, um é o caractere e o outro é o booleano;

os tipos Array e String não são tipos primitivos, são Classes e serão tratados a seguir.

Estrutura da linguagem

Page 59: Curso Java Basico

Título da Apresentação

Curso Java Básico

Tipos Numéricos Inteiros

os tipos inteiros guardam valores numéricos sem parte fracionária.

na maioria das ocasiões, o tipo int é suficiente;

não se pode esquecer que como Java é portável, esses valores são os mesmos para qualquer plataforma de hardware.

Tipo Tamanho Faixa de Valores

int 4 bytes -2.147.483.648 até2.147.483.647

short 2 bytes -32.768 até 32.767

byte 1 byte -128 até 127

long 8 bytes -9.223.372.036.854.775.808 até 9.223.373.036.854.775.807

Estrutura da linguagem

Page 60: Curso Java Basico

Título da Apresentação

Curso Java Básico

Tipos Numéricos de Ponto Flutuante

os tipos primitivos que representam valores numéricos com ponto flutuante:

normalmente utilizamos o double na maioria das situações onde é necessária a representação desse tipo de número, pois sua precisão é maior;

números do tipo float aparecem com um sufixo F. (3.04F).

se o número aparecer sem o F, ele é considerado double.

Tipo Tamanho Faixa de Valores

float 4 bytes +/- 3.40282347E+38F (aproximandamente 7 dígitos significativos)

double 8 bytes +/- 1.79769313486231570E+308 (15 dígitos significativos)

Estrutura da linguagem

Page 61: Curso Java Basico

Curso Java Básico

Estrutura da linguagem

Tipo caractere

O tipo char serve para representar apenas uma letra ou número.

Esse tipo serve para representar caracteres usando a tabela Unicode;

Dessa tabela faz parte a tabela ASCII e mais alguns caracteres especiais.

O tipo char é sempre representado por aspas simples (‘h’).

Caracteres representados por aspas duplas (“h”) na verdade são Strings.

Tipo Tamanho Faixa de Valores

char 2 bytes 0 até 65536

Page 62: Curso Java Basico

Curso Java Básico

Estrutura da linguagem

Tipo booleano

o tipo booleano pode assumir apenas dois valores, true ou false. Esse tipo é usado apenas para testes lógicos.

Tipo Tamanho Faixa de Valores

boolean 1 bit true ou false

Page 63: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Valores Padrão

abaixo segue uma lista com os valores padrões de todos os tipos primitivos, sendo que não é necessário inicializar as variáveis com esses valores, a máquina virtual cuidará desse trabalho.

Tipo Valor

byte 0

short 0

int 0

long 0

float 0.0

double 0.0

boolean false

char \u0000

Page 64: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

String

String é uma classe que manipula cadeias de caracteres;

incluída no pacote java.util;

possui métodos para essas manipulações;

a representação de um String é feita por um conjunto de caracteres entre aspas.

Exemplo:String str = “Isto é uma String do Java”;

String str = “”; //uma string vazia

Concatenação de Strings

String uniao = “use o sinal de + para ” + “concatenar Strings”;

Exemplo 3

Page 65: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Métodos da Classe java.lang.String

a classe java.lang.String possui muitos métodos;

abaixo apresentamos os mais significativos:

charAt(int indice)

retorna o caractere na posição especificada

int compareTo(String outraString)

retorna um valor negativo se a string vier antes de outraString

na ordem do dicionário, um valor positivo se outraString vier

antes e 0 (zero) caso forem iguais

boolean endsWith(String sufixo)

retorna true se a string terminar com sufixo

Page 66: Curso Java Basico

Curso Java Básico

Estrutura da linguagem

Métodos da Classe java.lang.String

boolean equals(String outra)

retorna true se a string for igual à outra

boolean equalsIgnoreCase(String outra)

retorna true se a string for igual à outra, ignorando maiúsculas eminúsculas

String toLowerCase()

retorna uma nova string convertendo maiúsculas para minúsculas

Page 67: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Métodos da Classe java.lang.String

String toUpperCase()

retorna uma nova string convertendo minúsculas para maiúsculas

String trim()

elimina espaços iniciais e finais

Exemplos 4 e 5

Page 68: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

StringTokenizer

“Quando você lê uma frase, sua mente divide a frase em palavras individuais ou tokens...” Deitel&Deitel

Tokens são separados entre si por delimitadores (espaços em branco, tabulação, nova linha e retorno de carro);

Pertence ao pacote java.util;

Page 69: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

StringTokenizer

Há três construtores possíveis:

o construtor que aceita um argumento String, utilizará o string delimitador padrão “\n\t\r”;

aquele que aceita dois argumentos String: o segundo String é o String delimitador;

a versão que aceita três argumentos, o segundo String é o string delimitador e o terceiro argumento (um boolean) determina se os delimitadores também são retornados como tokens (somente se o argumento for true).

Exemplo 6

Page 70: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Array

um array tipo de dados utilizado para armazenar um grupo de informações semelhantes;

arrays são tipos indexados de dados que permitem a representação de agrupamento de dados como vetores e matrizes;

todos os itens de um array devem ser do mesmo tipo em tempo de compilação.

o código para declarar o array é:

int nums[10];

Page 71: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Array

arrays são inicializados com o uso do operador new;

pense em cada elemento do array como um objeto distinto;

o tipo mais simples de array é um array de dimensão de um tipo primitivo, por exemplo, um int.;

o código para criar e inicializar o array é:

int nums[ ] = new int [5];

os colchetes depois do identificador nums, dizem ao compilador que nums é um array;

o operador new instancia o array e chama o construtor para cada elemento;

o construtor é do tipo int e pode conter cinco elementos.

Page 72: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Array

arrays podem ser multimensionais;

durante a instanciação, um array multidimensional deve ter pelo menos uma de suas dimensões especificadas;

a seguir, exemplos de como criar um array bidimensional:

int [ ][ ] numlist = new int [2][];

int lista[ ][ ] = new int[5][5];

Page 73: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Array

arrays podem ser inicializados na hora da criação, colocando-se os valores inicias desejados entre chaves {};

não é necessário especificar o tamanho – Java irá inicializar o array com o número de elementos especificados.

Exemplo:int nums[ ] = {1, 2, 3, 4, 5};

int nums[ ][ ] = {(1,1), (2,2), (3,3), (4,4), (5,5)};

Page 74: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Array

os arrays podem ser indexados por um valor byte, short, int ou char;

não se pode indexar arrays com um valor long, ponto flutuante ou booleano;

se precisar usar um desses tipos deve-se fazer uma conversão explícita;

os arrays são indexados de zero até o comprimento do array menos um.

Exemplo 7

Page 75: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Operador de Atribuição

a atribuição é feita através do operador “=”:

<identificador> = <valor>;

Exemplos: (na declaração da variável)float umFloat = 0.5;char caracter = ‘i’;

Exemplos: (após declaração da variável)

idade = 18; existe = true;

Page 76: Curso Java Basico

Curso Java Básico

Estrutura da linguagem

Operadores Aritméticos

operadores aritméticos são aqueles que efetuam operações aritméticas em um ou mais tipos primitivos.

Operador Nome Exemplo+ Adição 23+29- Subtração 29-23* Multiplicação 0.5 * salario/ Divisão 100/42% Módulo 57%5

Exemplo 8

Page 77: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Operadores Relacionais

os operadores relacionais utilizados para formar expressões condicionais, utilizados em testes e condições de entrada em um fluxo do programa.

Operador Nome Exemplo== Igual 10 == 10!= Diferente 3 != 2< Menor 4 < 10> Maior 10 > 6>= Maior ou igual 3 >= 3<= Menor ou igual 5 <= 6

Exemplo 9

Page 78: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Operadores Lógicos

os operadores lógicos, assim como os relacionais, são utilizados para formar expressões condicionais, utilizados em testes e condições de entrada em um fluxo do programa.

Operador Nome Exemplo&& AND (0 < 2) && ( 10 > 5)|| OR ( 10 >11 ) || (10 < 12 )! NOT !( 1= = 4 )^ XOR ( 1!= 0) ^ ( 3< 2 )?: Condicional 3>2? (comando):

(comando)

Exemplo 10

Page 79: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Atribuição Composta

para facilitar a programação, Java oferece um tipo de atribuição chamada atribuição composta, que pode ser formada com operadores aritméticos ou lógicos;

Exemplos:a += b; // Equivalente a: a = a + b;

a *= 3; // Equivalente a: a = a * 3;

Page 80: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Incremento e Decremento

o incremento é dado pelo operador ++ e o decremento pelo operador --.;

este decremento ou incremento pode ser feito antes ou depois da utilização da variável;

colocando–se antes (++var), será realizado o incremento ou decremento e depois o valor da variável será utilizado;

ao contrário (var++), o operador após a variável, faz com que o valor da variável seja utilizado primeiro e o incremento ou decremento seja feito depois.

Exemplos:i++; //Equivalente a: i = i +1;--i; //Equivalente a: i = i -1;

Exemplo 11

Page 81: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Precedência dos Operadores

a tabela abaixo apresenta os operadores em ordem decrescente de precedência, isto é, o que está mais acima ocorre antes:

++ - - !

* / %

+ -

<> <= >=

== !=

^

&&

||

= *= /= %= += -=

Page 82: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo

a maioria dos programas tomam decisões que afetam seu fluxo;

as declarações que tomam essas decisões são chamadas de comandos de controle de fluxo.

Page 83: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

if...else

executa, condicionalmente, um bloco de comandos, dependendo do valor de uma expressão;

Sintaxe:

if (condição) {bloco de comandos} [else {bloco de comandos} ]

Exemplo:if ( fim == true )

System.out.println(“Término!”);else System.out.println(“Continuando...”);

Page 84: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

if...else

para mais de um comando ser executado depois da declaração, utiliza-se o conceito de blocos, delimitados por { };

Exemplo:if ( fim == true ){

cont = 0;System.out.println(“Término!”);

}else {

cont = cont +1;System.out.println(“Continuando...”);

}

Exemplo 12

Page 85: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

Operador Condicional ?:

uma alternativa para o comando if...else é a utilização do operador condicional “?:”;

ele é o único operador ternário do Java;

sintaxe:(expressão lógica) ? expressão 1 : expressão 2;

caso a expressão booleana retorne um valor verdadeiro (true), a expressão 1 é executada; caso retorne um valor falso (false), a expressão 2 é executada.

Page 86: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

Operador Condicional ?:

Exemplo:

int total = (salario < 1000) ? salario : salario – desconto;

no exemplo acima, se a variável salario for menor que 1000, é atribuído o valor de salario a variável total, mas se a variável salário for maior ou igual a que 1000, a variável total recebera o valor da variável salário menos a variável desconto.

Page 87: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

switch

a instrução switch é utilizada quando precisamos selecionar uma ação dentro de um número de possibilidades;

switch executa um, de vários grupos de comandos, dependendo de uma expressão inteira;

a expressão de comparação do switch deve ser um char, um byte, um short ou um int;

não é permitido outro tipo primitivo ou objeto;

o valor resultante da expressão inteira é comparado com cada um dos itens constantes nas cláusulas case;

a ordem em que as cláusulas aparecem é importante, visto que a comparação é feita seqüencialmente;

uma cláusula opcional default pode aparecer no final do comando.

Page 88: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

switch

sintaxe:switch ( expressão_teste ) {

[case expressão constante 1:

comandos]...[default: comandos;]

}

Page 89: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

switch

Exemplo:

switch ( diaSemana ){

case 1: System.out.println(“Hoje é segunda-feira”);

break;

case 2: System.out.println(“Hoje é terça-feira ”);

break; ...

case 7: System.out.println(“Hoje é domingo”);

break;

default: System.out.println(“Opção inválida!”);}

Exemplo 13

Page 90: Curso Java Basico

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

while

executa um bloco de comandos enquanto uma condição for verdadeira;

é a mais simples das estruturas de repetição (ou loop), onde a expressão de comparação é avaliada antes que o laço seja executado;

utilizada quando não se quer que o corpo do laço seja necessariamente executado;

Sintaxe:while (expressão booleana) { bloco de comandos; }

Exemplo:while ( i != 0 ){

salario = salario * 0.5;i--; }

Exemplo 14

Page 91: Curso Java Basico

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

do...while

executa um bloco de comandos enquanto uma condição for verdadeira;

a expressão de comparação é avaliada depois que o laço for executado;

utilizada quando se quer que o corpo do laço seja necessariamente executado;

Page 92: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

do...while

Sintaxe:do { bloco de comandos; }while (expressão booleana);

Exemplo:do {

salario = salario * 0.5;i--;

} while ( i != 0 );

Exemplo 15

Page 93: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

for

repete um grupo de comandos em um número específico de vezes;

fornece uma expressão para inicializar as variáveis, seguida por uma expressão de comparação e depois um lugar para incrementar ou decrementar as variáveis de laço;

a declaração pode ser um comando simples ou um bloco de comandos;

Sintaxe:for (inicialização; terminação; incremento) { bloco de comandos; }

Exemplo:for (i = 0; i < 20; i ++)

salario = salario * 0.5;

Page 94: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

for

a seção de inicialização é executada uma única vez, quando se entra no laço;

a inicialização pode ser vazia se a variável da condição já tiver sido inicializada antes do laço;

a seção de terminação é uma expressão lógica que é verificada no início de cada uma das iterações do laço;

a terminação também pode ser vazio, caso onde precisaríamos de uma instrução break para sair do laço;

a seção de incremento é uma expressão (ou expressões separadas por vírgula) que é executada em cada iteração do laço;

não é obrigatório que essa expressão esteja relacionada com o controle do laço; o incremento também pode ser vazio.

Page 95: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

for

na versão 5, o java ampliou a utilização do comando for, agora com sintaxe simplifica e normalmente chamado de "for estendido"

Exemplo:...int[] mat = { 3, 4, 5, 6 };for( int x:mat ) {

System.out.println( x );}

o laço estendido cria a variável de controle interna para percorrer um conjunto (vetor ou Coleções, que veremos adiante)

a cada iteração um valor do conjunto é passado para a variável x e executado o bloco de instruções.

Exemplo 16

Page 96: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

break

o comando break desvia o fluxo de execução de um programa para o fim de um laço ou de uma instrução switch;

utilizada para sair de um laço antes do normal;

o laço irá encerrar independentemente de seu valor de comparação e a declaração após o laço será executada.

Exemplo:int i = 0;while (true) {

System.out.println(i);i++;if ( i > 10 ) break;

}Exemplo 17

Page 97: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

continue

o comando continue desvia o fluxo de execução de um laço para o próxima iteração, abandonando a iteração em que se encontra;

Exemplo:

for (int i = -10; i<10; i++){

if ( i == 0 )continue;

System.out.println(1/i);}

Exemplo 18

Page 98: Curso Java Basico

Título da Apresentação

Curso Java Básico

Estrutura da linguagem

Comandos de Fluxo: Comandos de Decisão

return

comando utilizado para transferir controle entre métodos;

retorna informações de métodos, encerrando a execução e retornando para o local de onde o método foi chamado;

Sintaxe:return valor;

exemplo:class Teste{

public int Potencia ( int base, int n){int result = base;for ( int i = 0; i < n-1; i ++ )

result = result * base;return result; }

} Exemplo 19

Page 99: Curso Java Basico

Título da Apresentação

Curso Java Básico

O desenvolvimento de aplicações Java sempre é feito através de classes. Uma aplicação Java sempre terá a seguinte estrutura:

class NomedaClasse{

// Atributos// Métodos

public static void main( String args[] ){

//corpo principal do programa}

}

Classes em Java

Page 100: Curso Java Basico

Título da Apresentação

Curso Java Básico

Uma aplicação em Java é caracterizada por possuir o método main();

O método main é o método chamado pelo interpretador Java quando executado;

A declaração do método main deve ser:

public static void main( String args[] )

ou public static void main(String... args) (desde 1.5)

define um método de acesso público (public), sem retorno (void), que recebe como parâmetro um array de strings de tamanho indefinido representado pela variável args (onde são passados os argumentos da linha de comando para a aplicação)

a única alteração que pode ser feita é no nome do array (args).

Classes em Java

Page 101: Curso Java Basico

Título da Apresentação

Curso Java Básico

Classes e Objetos

classe é uma descrição de algo existente no domínio do problema (aplicação);

é usada na criação de múltiplos objetos;

é a descrição dos dados (atributos) e do comportamento (métodos) de um objeto;

um objeto é uma instância particular de um tipo de dado específico (classe);

objeto é uma instância de uma classe;

instanciar um objeto é criar seu espaço de memória e repassar um ponteiro para ele;

Classes em Java

Page 102: Curso Java Basico

Título da Apresentação

Curso Java Básico

Classes e Objetos

quando um objeto é criado ele precisa ser inicializado, precisa ser carregado com a referência (o endereço) de um espaço de memória alocado para o seu armazenamento

para uma única classe podemos ter vários objetos durante a execução de um programa.

em um programa orientado a objetos temos muitos objetos se relacionando entre si;

a interação entre objetos é feita através de mensagens;

um objeto “chama” os métodos de outro, passando parâmetros quando necessário;

a esta interação entre objetos chama-se troca de mensagens.

Classes em Java

Exemplo 20

Page 103: Curso Java Basico

Título da Apresentação

Curso Java Básico

Classes e Objetos – Exercício 1

Implemente o relacionamento "uma empresa possui vários endereços" (um de cada filial). Os dados da empresa são:

Nome, CNPJ e nome do dono. Os dados de cada um de seus endereços são: tipo de logradouro (AVENIDA, RUA, BECO), NÚMERO e CEP.

Classes em Java

Page 104: Curso Java Basico

Curso Java Básico

Métodos

Um método descreve o comportamento de uma classe;

Um método de uma classe tem a seguinte estrutura genérica:

<visibilidade> <static> <tipo_retorno> <nome_método> (<parâmetros>) {

// corpo ou escopo do método}

Classes em Java

Page 105: Curso Java Basico

Título da Apresentação

Curso Java Básico

Métodos

<visibilidade> - é o modificador de acesso para o método, podendo ser:

public – o método poderá ser acessado por qualquer classe.

private - o método só poderá ser acessado dentro da mesma classe.

default (package) – o método só poderá ser acessado dentro da própria classe ou por classes do mesmo pacote. Modificador utilizado por default, caso não seja especificado.

protected – o método só poderá ser acessado por classes do mesmo pacote ou por subclasses (veremos isto em herança).

<static> - modificador que define se o método é de classe (com static) ou de instância (sem static). Métodos de classe podem ser chamado sem a especificação de um objeto.

Classes em Java

Page 106: Curso Java Basico

Título da Apresentação

Curso Java Básico

Métodos

<tipo_retorno> - declaração do tipo de retorno do método, que pode ser qualquer um dos tipos primitivos, qualquer objeto ou o tipo void, que significa que o método não retorna valor algum.

(<parâmetros>)

um método pode ter zero ou mais argumentos, também chamados parâmetros;

cada argumento indicará um pedaço da informação que deve ser passada ao método no momento de sua chamada;

quando houver mais de um argumento, eles devem ser separados por vírgulas;

caso o método não receba argumentos, os parênteses devem ser deixados vazios.

Classes em Java

Page 107: Curso Java Basico

Curso Java Básico

Métodos

Em Java todos os argumentos são passados por valor;

Não existe passagem por referência;

Se o parâmetro for uma variável de tipo primitivo o valor da variável é passada no parâmetro e pode ser alterada dentro do método que não será refletido na variável externa;

Com objetos o efeito é diferente, já que o valor passado no parâmetro do método é a referência para o objeto, ou seja, se um objeto for alterado dentro do método, o objeto externo também será alterado;

Classes em Java

Exemplo 21

Page 108: Curso Java Basico

Curso Java Básico

Métodos

No Java 5 foi introduzido o conceito de varargs, que permite a passagem de um número variável de argumentos a um método;

Dentro do método os argumentos variáveis são tratados como arrays do tipo que foi definido;

No caso dos exemplos abaixo, um array de int (int[ ]) ou de String.

Exemplo:...void metodo( int... args ) {

for( int i : args ) { System.out.println( i );

}} ...

metodo( 1 ); metodo( 1, 2, 3 );

Classes em Java

Page 109: Curso Java Basico

Título da Apresentação

Curso Java Básico

Métodos

Esta funcionalidade alivia o trabalho de o desenvolvedor ter que criar arrays com valores e passar aos métodos.

Algumas regras aplicadas aos métodos:

métodos retornam, no máximo, um valor, podendo ser uma variável ou um objeto;

se o tipo de retorno do método não for void, o corpo do método tem de ter um comando return;

a passagem de parâmetros com tipo diferente dos parâmetros recebidos (assinatura do método) gera erro de sintaxe;

um método não pode ser definido dentro de outro método;

métodos devem ter sua função bem definida, para promover a reutilização de código.

Classes em Java

Exemplo 22

Page 110: Curso Java Basico

Curso Java Básico

Métodos – Exercício 2

A partir das classes criadas no Exercício 1, declare dois método para impressão dos dados de um objeto empresa, sendo este passado como parâmetro para o método.

Cada um dos métodos realiza a impressão em uma forma distinta de saída: pelo console e por meio de uma caixa de mensagem.

Classes em Java

Page 111: Curso Java Basico

Curso Java Básico

Sobrecarga Métodos

Exemplo:

public class Empregado {...

public void defineCampo(int valor) {idade = valor;

}public void defineCampo(String valor) {

nome = valor;}public void defineCampo(int valor1, String valor2) {

idade = valor1;nome = valo2;

}...

}

Classes em Java

Page 112: Curso Java Basico

Curso Java Básico

Sobrecarga Métodos

Na hora da chamada de um dos métodos, o compilador Java escolhe o método correto baseado nos parâmetros fornecidos.

Exemplo:...Empregado emp = new Empregado();emp.defineCampo(20);emp.defineCampo(“Maria”);...

Classes em Java

Exemplo 23

Page 113: Curso Java Basico

Curso Java Básico

Sobrecarga Métodos – Exercício 3

Crie uma classe que sobrecarregue um método que retorna o triplo de um número, sendo este um inteiro(int) ou um número fracionário (double ou float).

Classes em Java

Page 114: Curso Java Basico

Curso Java Básico

Variáveis

Variáveis são usadas em linguagens em geral para armazenar valores;

Valores são passados para variáveis através de operações de atribuição

atribuição de valores é feita através de literais

Ex: int intQuantidadeAlunos = 14;

atribuição de referências (endereços para valores) é feita através de operações de construção de objetos e, em dois casos, pode ser feita através de literais

Ex: Conta contaClientePreferencial = new Conta();

String s = "abcde";

int[] v = {1, 2, 3};

Classes em Java

Não são tipos primitivos, s e v são referências.Não são tipos primitivos, s e v são referências.

Page 115: Curso Java Basico

Curso Java Básico

Escopo de Variáveis

Atributos de dados (declarados no bloco da classe): podem ser usados em qualquer lugar (qualquer bloco) da classe

uso em outras classes depende de modificadores de acesso (public, private, etc);

existem enquanto o objeto existir( ou enquanto a classe existir, se declarados static).

Variáveis locais (declaradas dentro de blocos de procedimentos)

existem enquanto o procedimento (método, bloco de controle de execução) estiver sendo executado;

não pode ser usado fora do bloco;

não pode ter modificadores de acesso (private, public, etc).

Classes em Java

Page 116: Curso Java Basico

Curso Java Básico

Classes em Java

Page 117: Curso Java Basico

Curso Java Básico

Classes em Java

private static String numero;

modificadores tipo nome

private static final double LIMMITE_MAXIMO;

double saldo;

Private int numEstoque = 8;

private static String numero;

modificadores tipo nome

private static final double LIMMITE_MAXIMO;

double saldo;

Private int numEstoque = 8;

Atributos

Page 118: Curso Java Basico

Título da Apresentação

Curso Java Básico

Classes em Java

Atributos – Modificadores de Acesso

Atributos public podem ser acessados (lidos, alterados) por objetos de qualquer classe.

Atributos private só podem ser acessados (lidos, alterados) dentro da própria classe onde foi declarado.

Atributos protected podem ser acessados (lidos ou alterados) de qualquer classe dentro do mesmo pacote ou qualquer sub-classe.

Se um atributo não tem modificador de acesso associado então ele é considerado “friendly”. Só é visível para objetos de classes dentro do mesmo pacote.

Atributos final, torna o atributo constante;

Atributo não pode ser alterado depois de inicializado;

Atributo static: variáveis de classe vs variáveis de objeto

Page 119: Curso Java Basico

Curso Java Básico

Classes em Java

Atributos de Objeto

class Conta {

String strNome;

String strCpf;

double dblSaldo;

double dblSaldoMinimo;

public Conta(double dblValorSaldoMinimo){

dblSaldoMinimo = dblValorSaldoMinimo; }

public static void main(){

Conta a = new Conta(100.00);

Conta b = new Conta(200.00); }

}

Não utiliza o modificador static

Page 120: Curso Java Basico

Curso Java Básico

Classes em Java

Atributos de Classe

class Conta{

String strNome;

String strCpf;

double dblSaldo;

static double dblSaldoMinimo; }

class Banco {

public Banco(){

Conta c = new Conta();

Conta d = new Conta();}

}

… new Banco(); …

Uso do modificador static

Page 121: Curso Java Basico

Título da Apresentação

Curso Java Básico

Métodos construtores

Métodos construtores são métodos especiais definidos com o mesmo nome da classe;

Construtores são chamados automaticamente toda vez que um objeto da classe é criado;

Os métodos construtores servem para inicializar as variáveis de instância de seus objetos e não possuem nenhum valor de retorno.

Classes em Java

Page 122: Curso Java Basico

Título da Apresentação

Curso Java Básico

Métodos construtores

Exemplo:

// Classe com dois construtorespublic class Enmpregado{

// Construtor padrão, sem parâmetrospublic Empregado() {}

// Construtor para classe receber um inteiro e um Stringpublic Empregado(int valor1, String valor2) {

int idade = valor1;String nome = new String;nome = valor2;

}...

}

Classes em Java

Page 123: Curso Java Basico

Título da Apresentação

Curso Java Básico

Métodos construtores

Toda e qualquer classe do Java possui um construtor padrão, que não faz nada nem recebe parâmetros, e que só será chamado se nenhum construtor for definido.

Quando uma classe possui mais de um método com o mesmo, mas com parâmetros diferentes diz-se que houve um sobrecarga de métodos.

Classes em Java

Exemplo 24

Page 124: Curso Java Basico

Curso Java Básico

Métodos construtores – Exercício 4

Altere o Exercício 2, de forma que:

Seja possível criar um objeto do tipo Empresa, já inicializando os atributos de um objeto desse tipo ou sem inicializar qualquer um desses atributos com valores especificados.

Neste último caso, faça as modificações necessárias para que os atributos sejam inicializados de forma que as strings sejam inicializadas com a senteça “Campo não informado".

Classes em Java

Page 125: Curso Java Basico

Título da Apresentação

Curso Java Básico

Referência this

Os métodos de instância de uma classe Java possuem um parâmetro implícito que se refere ao objeto atual sobre o qual o método foi chamado;

Este parâmetro é referenciado pela palavra chave this, e é utilizado quando é necessário enviar a própria referência do objeto para uma rotina.

Classes em Java

Exemplo 25

Page 126: Curso Java Basico

Curso Java Básico

Modificadores de Classe

Modificadores de acesso

publicClasses public podem ser instanciadas por qualquer objeto

livremente.public class NomeClasse

default (pacote)

Classes sem modificador de acesso explícito, denomiado default, só podem ser instanciadas dentro da própria classe ou por classes do mesmo pacote.

class NomeClasse

Classes em Java

Page 127: Curso Java Basico

Título da Apresentação

Curso Java Básico

Modificadores de classe

Outros Modificadores

finalClasses final são classes que não permitem que você crie

subclasses por herança delas. public final class NomeClasse

abstractClasses abstract são classes que não permitem que um

objeto as instancie, ou seja, serve para definir superclasses genéricas.

public abstract class NomeClasse

Classes em Java

Page 128: Curso Java Basico

Título da Apresentação

Curso Java Básico

Herança e Polimorfismo

Conceitos Básicos de Herança

Herança é a possibilidade de criar objetos a partir de outros já existentes.

Herança é uma característica da programação orientada a objetos que permite que classes herdem e estendam as funcionalidades e as características de outras classes.

Uma subclasse é uma especialização da sua superclasse.

Subclasse é também chamada de classe derivada, classe descendente ou classe filha; superclasse é também chamada de classe pai.

Classes em Java

Page 129: Curso Java Basico

Título da Apresentação

Curso Java Básico

Herança e Polimorfismo

Conceitos Básicos de Herança

Em Java, a herança é obtida através da palavra reservada extends seguida do nome da classe que está sendo estendida;

Através da herança cria-se uma hierarquia de classes;

Toda classe, por padrão, estende a classe java.lang.Object;

Todos os métodos e atributos (public e protected) são herdados pela subclasse;

Os construtores não são herdados;

A palavra reservada super identifica métodos e atributos da superclasse;

Em Java não é permitida herança múltipla, isto é, uma classe só pode estender uma e somente uma outra classe.

Classes em Java

Page 130: Curso Java Basico

Título da Apresentação

Curso Java Básico

Herança e Polimorfismo

Conceitos Básicos de Herança

public class Primata {

public Primata() { // método construtor

}String nomeCientifico;

public void setNomeCientifico(String nomeCientifico) {

...}

}

Classes em Java

Page 131: Curso Java Basico

Título da Apresentação

Curso Java Básico

Herança e Polimorfismo

Conceitos Básicos de Herança

public class Humano extends Primata{

public Humano() { // método construtor

}String nome;

int idade;

int numeroIdentidade;

public void setNome(String nome) {

...}public void setIdade(int idade) {

...}

Classes em Java

Page 132: Curso Java Basico

Título da Apresentação

Curso Java Básico

Herança e Polimorfismo

Conceitos Básicos de Herança

public void setNumeroIdentidade(int numeroIdentidade) {

...}...

}

public class Homem extends Humano {

public Homem() { // método construtor

}String certMilitar;

public void setCertMilitar(String certMilitar) {...}...

}

Classes em Java

Page 133: Curso Java Basico

Título da Apresentação

Curso Java Básico

Herança e Polimorfismo

Conceitos Básicos de Herança

public class Mulher extends Humano {

public Mulher() {// método construtor

}...

}

No exemplo acima, a classe Homem (subclasse de Humano) possui todos os atributos e métodos da classe Humano (sua superclasse) e os atributos da classe Primata, superclasse da classe Homem.

Classes em Java

Exemplo 26

Page 134: Curso Java Basico

Título da Apresentação

Curso Java Básico

Sobrescrita de Métodos

Uma classe derivada (subclasse) recebe, através do mecanismo de herança, todos os métodos definidos na classe pai;

Sobrescrever um método consiste em definir, na classe derivada, um método com a mesma assinatura (mesmos argumentos e tipo de retorno) de uma classe ascendente (classe pai em qualquer nível de herança);

Esta funcionalidade permite que uma classe derivada altere um comportamento de um método herdado, sobrescrevendo-o;

Com o sobrescrita, o método da superclasse fica escondido da subclasse podendo ser executado com a referência super;

Classes em Java

Page 135: Curso Java Basico

Título da Apresentação

Curso Java Básico

Sobrescrita de Métodos

Atenção para não confundir os conceitos de sobrescrita de métodos e sobrecarga de métodos;

na sobrecarga tem-se métodos dentro da mesma classe que possuem o mesmo nome, mas com parâmetros diferentes;

na sobrescrita tem-se métodos de classes da mesma hierarquia de derivação com o mesmo nome, mesmos parâmetros e mesmo tipo de retorno.

Classes em Java

Exemplo 27

Page 136: Curso Java Basico

Título da Apresentação

Curso Java Básico

Sobrescrita de Métodos – Exercício 5

Implemente a seguinte hierarquia:

As Classes Forma, FormaBidimensional e as classes que herdam desta, têm um método sobrescrito para obter a área da forma correspondente. Inclua na definição de cada método a impressão da senteça “Calculando a área da forma X”, onde X é o nome da classe;

De forma similar, cada FormaTridimensional deve ter métodos sobrescritos obterArea e obterVolume para calcular a área da base e a superfície, respectivamente, da forma tridimensional. Inclua na definição de cada método a impressão da senteça “Calculando a área/volume da forma X”, onde X é o nome da classe;

Classes em Java

Page 137: Curso Java Basico

Título da Apresentação

Curso Java Básico

Polimorfismo

Um objeto polimórfico é um objeto que pode ter formas diferentes, funcionalidades diferentes mas continua a pertencer a uma única classe;

Java, permite que um objeto seja referido com uma variável que é do tipo de uma classe ascendeste (superclasses) , e a deteminação do comportamento do objeto (métodos a serem executados) será determinada em tempo de execução, dependendo do tipo de objeto instanciado;

Isto é possível porque quando criamos uma referência a um tipo abstrato de dados, uma classe, o compilador Java considera que o objeto atribuído a essa referência será do tipo declarado e não do tipo usado para criar o objeto.

Classes em Java

Page 138: Curso Java Basico

Título da Apresentação

Curso Java Básico

Polimorfismo

Exemplo:

class Forma {

public void desenhar() {

System.out.println("Forma");

} }

class Circulo extends Forma {

public void desenhar() {

System.out.println("Círculo");

} }

Classes em Java

Page 139: Curso Java Basico

Título da Apresentação

Curso Java Básico

Polimorfismo

public class ExemploPolimorfismo {

private static void desenha(Forma[] fs) {

for (int i = 0; i < fs.length; i++)

fs[i].desenhar();

} public static void main(String[] args) {

Forma[] formas = new Forma[] {

new Circulo(), new Forma(),

new Quadrado(), new Triangulo()

};

desenha(formas); } }

Classes em Java

Page 140: Curso Java Basico

Título da Apresentação

Curso Java Básico

O operador instanceof

O operador instanceof é um mecanismo para determinar, em tempo de execução, se a classe de um objeto referenciado por uma variável é compatível com um determinado tipo de referência conhecido.

a sintaxe do operador instanceof é a seguinte:

variávelDoTipoReferencia instanceof NomeDaClasseConhecida;

Classes em Java

Exemplo 28

Page 141: Curso Java Basico

Título da Apresentação

Curso Java Básico

O operador instanceof

Ao executar o código do Exemplo 28, a saída será:

objForma é compatível com o tipo Forma

objCirculo é compatível com o tipo Forma

objCirculo é compatível com o tipo Circulo

objQuadrado é compatível com o tipo Forma

objQuadrado é compatível com o tipo Quadrado

Observe que o operador instanceof identifica a compatibilidade de tipos no que se refere ao mesmo tipo do objeto referenciado (compatibilidade identificada quando comparado o objCirculo com a classe Circulo, por exemplo) e na herança de classes e interfaces (compatibilidade identificada quando comparado o objCirculo com a classe Forma, supertipo de Circulo, por exemplo).

Classes em Java

Page 142: Curso Java Basico

Curso Java Básico

Interfaces

Interfaces foram concebidas para criar um modelo de implementação de baixo acoplamento entre determinadas partes de um software;

Uma interface é semelhante a uma classe, e descreve um aspecto de comportamento que várias classes podem possuir;

Uma interface não possui atributos de instância nem métodos com implementação, mas pode possuir atributos de estáticos (finais de classe) e cabeçalhos de métodos (métodos abstratos) que deverão ser desenvolvidos nas classes que implementarão a interface;

Para criar uma interface utilizamos a palavra reservada interface. Seus métodos não precisam ser declarados public abstratct, já que assim serão considerados por estar em uma interface.

Classes em Java

Page 143: Curso Java Basico

Título da Apresentação

Curso Java Básico

Interfaces

public class Pessoa {String nome;String end;char sexo;int idade;

public Pessoa ( String nm, String ed, char sx, int id ){nome = nm;end = ed;sexo = sx;idade = id;

}

Classes em Java

Page 144: Curso Java Basico

Título da Apresentação

Curso Java Básico

Interfaces

public String AlterarCadastro ( ) {....

}

public interface Aluno {boolean CadastrarAluno( int num_matricula, int cod_curso );void InserirNotas( int num_matricula );

}

class Universitario extends Pessoa implements Aluno {

public boolean CadastrarAluno( int num_matricula, int cod_curso ) { ...

}

Classes em Java

Page 145: Curso Java Basico

Curso Java Básico

Interfaces

public void InserirNotas( int num_matricula ){...}

}

Para implementar uma interface, usa-se a palavra-chave implements seguida do nome da interface, ou interfaces, visto que não há limite para quantidade de classes em implementação.

Classes em Java

Exemplo 29

Page 146: Curso Java Basico

Curso Java Básico

Interfaces – Exercício 6

Crie uma interface Conta e declare nesta os métodos necessários para realizar as seguintes operações comuns a um tipo qualquer de conta:

Obter o saldo atual da conta;

Atualizar o saldo atual da conta;

Obter a data da última alteração (não se preocupe com formatação dessa informação);

Definir a data da atualização realizada;

Obter nome do proprietário da conta;

Definir o nome do proprietario da conta;

Obter CPF do proprietário da conta;

Definir CPF do proprietário da conta;

Verificar validação do número de algarismos do CPF do proprietário da conta (se tem 11 algarismos);

Classes em Java

Page 147: Curso Java Basico

Curso Java Básico

Interfaces – Exercício 6 (continuação)

Crie ainda duas classes (concretas) para representa uma Conta Corrente e uma Conta Poupança, de forma que ambas as classes implementem a interface Conta, criada anteriormente;

Acrescente na classe conta corrente um atributo e dois métodos para obtenção e atualização da informação sobre o número de cheques emitidos;

Na classe que representa a conta poupança acrescente um atributo e dois métodos para obtenção e atualização da taxa de reajuste (valor fracionário);

Crie uma classe Banco de forma que sejam possam ser armazenados e recuperados os seguintes dados: Nome do Banco, CNPJ e dois arranjos, com 100 posições cada, para incluir dados de contas correntes e contas poupança dos clientes com conta no banco;

Acrescente um método para listagem de todos os dados do banco.

Classes em Java

Page 148: Curso Java Basico

Curso Java Básico

Utilize os conceitos de herança, modificadores de acesso e as demais classes da API apresentadas para representar o seguinte diagrama de classes:

Exercício Completo 1

Page 149: Curso Java Basico

Curso Java Básico

Adicione à sua solução uma classe de Validação e declare nesta os seguintes métodos:

a chave de acesso deve conter 14 caracteres;

UF deve corresponder a um dos seguintes valores: BA, SP, MG, GO ou RJ;

o campo Situação deve conter um dos seguintes valores: Autorizada, Cancelada, Denegada ou Inutilizada;

o código do medicamento deve atender a seguinte expressão regular {001, 002, 003}01.

Imprima na tela um objeto do tipo NFeMedicamento e outro NFeArmamento em formato XML .Veja o exemplo 2 com o uso da biblioteca Xstream. Em caso de dúvida, consulte a API.

Exercício Completo 1 - continuação

Page 150: Curso Java Basico

Título da Apresentação

Conversão e Cast

Curso Java Básico

Conversões entre Tipos Primitivos de Dados

A linguagem Java não suporta atribuições arbitrárias entre variáveis de tipos diferentes.

Existem duas maneiras de fazer conversões de tipos:

conversão implícita: quando o tamanho de uma variável é maior que o tamanho da variável ou o valor que está sendo atribuído.

Exemplo: int y = 10; long x = y;

Page 151: Curso Java Basico

Título da Apresentação

Curso Java Básico

Conversões entre Tipos Primitivos de Dados

conversão explícita: é necessária quando o tamanho de uma variável é menor que o tamanho da variável ou o valor que está sendo atribuído.

Exemplo: long y = 10L; int x = (int) y;

o tamanho de long é maior que o de int, portanto necessita indicar uma conversão. esta indicativa é feita pelo tipo da variável, que irá receber o valor, entre parênteses: (int). Se esta informação não for colocada, ocorreria um erro de compilação indicando tipos incompatíveis. Outra forma é usar as constantes de identificação de tipos para fazer uma conversão explícita, como em: long y = 10L; Para um processo de conversão explícito, utilizamos um mecanismo chamado de casting. Para sinalizar um casting coloca-se o nome do tipo para o qual se quer converter entre parênteses.

Conversão e Cast

Page 152: Curso Java Basico

Título da Apresentação

Curso Java Básico

Conversão e Cast

Conversões entre Tipos Primitivos de Dados

A – Conversão automática

C – Utilizar cast explícito

P – Perda de magnitude ou precisão

X – Java não permite conversão

TipoOriginal

Tipo Destinobyte short int long float double char boolean

byte A A A A A C Xshort C, P A A A A C Xint C, P C, P A A A C, P Xlong C, P C, P C, P C, P C C, P Xfloat C, P C, P C, P C, P A C, P Xdouble C, P C, P C, P C, P C, P C, P Xchar C, P C C C C C Xboolean X X X X X X X

Page 153: Curso Java Basico

Curso Java Básico

Conversão e Cast

Conversões entre Objetos

O cast ou a conversão de objetos em java é realizada de duas maneiras, de acordo com a conversão de tipos primitivos: implícito e explícito.

Primeiramente, toda classe filha pode ser associada a uma declaração de classe ou interface pai. Esta é a forma implícita, pois não necessita de nenhum recurso para ser efetuado, como no exemplo abaixo:

Exemplo:...Pai objeto = new Filho();...

No exemplo, o objeto da classe Filho é declarado como uma instância da classe Pai.

Page 154: Curso Java Basico

Título da Apresentação

Curso Java Básico

Conversão e Cast

Conversões entre Objetos

O inverso deste caso ocorre quando tem-se um objeto pai e sabe-se que ele é uma instância de determinada classe Filho.

Esta forma é a explícita, pois é necessário informar ao compilador, qual a classe que deseja-se fazer o cast.

Exemplo:...Pai objeto = new Filho();Filho objFilho = (Filho)objeto;...

No exemplo, o objeto é declarado como sendo instância da classe Pai, mas é criado uma instância da classe Filho.

Na linha seguinte, é associado a uma variável declarada como Filho o valor do objeto, que foi declarado como Pai mas é possível saber que ele é um Filho.

Page 155: Curso Java Basico

Curso Java Básico

Conversão e Cast

Classes Wrappers

Também conhecidas como “classes de embrulhamento”;

Utilizadas, em especial, para conversão de tipo ou empacotamento em si de um valor em um objeto;

Pertencentes ao pacote java.lang;

Principais classes wrappers:

Integer;

Double;

Float;

Boolean.

Conversão de String para Inteiro, Double etc e vice-versa;

Exemplo 30

Page 156: Curso Java Basico

Título da Apresentação

Curso Java Básico

Pacotes java.util e java.lang Pacote java.lang

O pacote java.lang contém as classes que constituem recursos básicos da linguagem, necessários à execução de qualquer programa Java.

Entre as classes desse pacote destacam-se:

Object

é a classe base do Java, que serve de superclasse para todas as classes existentes em Java. toda classe é subclasse de Object, e com isso herda alguns métodos automaticamente. ela possui métodos como wait( ), notify( ) e notifyAll( ), que suportam controle de threads, além dos métodos equals(), toString() e getClass().

Class e ClassLoader

representa classes Java e o mecanismo para carregá-las dinamicamente (veremos um exemplo de uso quando virmos conexão com banco de dados);

Page 157: Curso Java Basico

Título da Apresentação

Curso Java Básico

Pacotes java.util e java.lang

Pacote java.lang

Math

Classe que possui um conjunto de métodos e 2 constantes para suportar computação matemática;

A classe é final e não pode ser estendida;

O construtor é private, portanto não pode ser instanciado;

Constantes: Math.PI e Math.E

Possui método para cálculo de: valor absoluto, arredondamento para cima e para baixo, comparação do maior e menor valor, número aleatório, arredondamento, seno, coseno, tangente e raiz quadrada.

Boolean, Character, Byte, Short, Integer, Long, Float, Double

São classes wrappers, e todos tipo primitivo em Java possui uma classe wrapper, encapsulando o tipo primitivo e permitindo a manipulação de seus valores como se fossem objetos;

Page 158: Curso Java Basico

Título da Apresentação

Curso Java Básico

Pacotes java.util e java.lang

Pacote java.lang

System, Runtime e Process

São classes que permitem interação da aplicação com o ambiente de execução;

Thread, Runnable, ThreadGroup

São classes que dão suporte à execução de threads, múltiplas linhas de execução;

Throwable, Error e Exception

São classes que permitem a definição e manipulação de situações de erros e condições inesperadas de execução, tais como OutOfMemoryError, ArithmeticException (por exemplo, divisão inteira por zero) e ArrayIndexOutOfBoundsException (acesso a elemento do array além da última posição ou antes da primeira posição).

Page 159: Curso Java Basico

Título da Apresentação

Curso Java Básico

Pacotes java.util e java.lang

Pacote java.lang

String

Classe que guarda uma String imutável e possui diversos métodos para manipular a String.

StringBuffer

Classe que representa uma String que pode ser modificado dinamicamente. É ideal para manipular grande quantidades de textos.

Page 160: Curso Java Basico

Curso Java Básico

Pacotes java.util e java.lang

Pacote java.util

O pacote java.util contém classes do framework de collections, modelo de eventos, data, hora, internacionalização e classes de outras utilidades.

Entre as classes desse pacote destacam-se:

Collections

Collection é a interface base de todas as classes que implementam uma coleção.

Ela define métodos para adicionar itens, limpar a coleção, remover itens, transformar para array, iterar pelos itens, ver o tamanho e etc.

Page 161: Curso Java Basico

Curso Java Básico

Pacotes java.util e java.lang

Pacote java.util

Vector

Classe que representa um array dimensionável;

Pode ser acessado por um índice;

O Vector é sincronizado, ou seja, ele sincroniza o acesso de processos concorrentes;

O Vector pode armazenar diferentes tipos de objetos ao mesmo tempo, pois ele recebe um Object como argumento.

A qualquer momento dado, Vector contém um certo número de elementos que é menor que ou igual à sua capacidade;

a capacidade é o espaço que foi reservado para o array;se você não especificar um incremento de capacidade, o sistema dobrará automaticamente o tamanho do Vector toda vez que capacidade adicional for necessária.

Exemplo 31

Page 162: Curso Java Basico

Curso Java Básico

Pacotes java.util e java.lang

Pacote java.util

ArrayList

Classe similar à classe Vector, porém não sincronizada, portanto, mais rápida.

List

Interface implementada pelas classes Vector, ArrayList, LinkedList e outras.

Com isto, estas coleções poderão ser acessadas pelo métodos comuns da interface List.

Hashtable

Classe que guarda valores com chave e valor, não permitindo valores null;

Para recuperar um valor, busca-se pelo seu nome (chave);

Pode-se obter um Enumeration com todas as chaves da coleção.

Page 163: Curso Java Basico

Curso Java Básico

Pacotes java.util e java.lang

Pacote java.util

Properties

Classe que implementa uma coleção de propriedades, do tipo chave e valor;

Os dados pode ser escritos ou lidos de uma Stream;

Cada chave da propriedade te seu valor, único;

Esta classe estende a classe Hashtable.

StringTokenizer

Classe que permite quebrar uma String em tokens (palavras), pelo caracter separador.

Page 164: Curso Java Basico

Curso Java Básico

Pacotes java.util e java.lang

Pacote java.util

Date

Classe que representa um instante de tempo específico, medido em milisegundos, a partir do dia 01/Jan/1970.

GregorianCalendar

Classe que implementa a classe java.util.Calendar, e oferece métodos e funcionalidades para manipular datas no formato do calendário gregoriano.

Exemplo 32

Page 165: Curso Java Basico

Curso Java Básico

Coleções

Java possui o Java Collection Framework que possui várias interfaces e implementações para o tratamento de Coleções e Mapas .

Uma Coleção é um conjunto de objetos agrupados e pode ser implementada de duas formas:

como um conjunto (Set): que não permite duplicatas;

ou como uma lista (List): que permite duplicatas.

Um Mapa (Map) é um conjunto de estruturas de pares de objetos, sendo um deles usado como chave de acesso.

Page 166: Curso Java Basico

Curso Java Básico

Coleções

Coleções: Set

Set é uma interface de Collection, que pode ser implementado como instância das classes HashSet (tabela Hash) ou TreeSet (árvore)

Não é necessário especificar a posição para adicionar um elemento.

A classe HashSet não possui nenhuma ordem específica enquanto a classe TreeSet cria uma ordem, no caso de números do menor para o maior e no caso de String a ordem é lexicográfica.

Page 167: Curso Java Basico

Curso Java Básico

Coleções

Coleções: Set

Exemplo:public class ExemploHashSet {

public static void main(String[] args) { Collection c = new HashSet();

c.add("Maria");c.add("Joao");c.add("Ana");c.add("Joao");c.add("Jose");System.out.println(c);

}

}

O exemplo acima resulta em [Joao, Jose, Maria, Ana], já que Hashset não permite repetição e não é ordenado.

Page 168: Curso Java Basico

Curso Java Básico

Coleções

Coleções: Set

Principais métodos de Set:

add() - adiciona um elemento ou um conjunto de elementos.

remove() - remove um elemento ou um conjunto de elementos.

contains() - Retorna true se o conjunto possuir algum elemento.

isEmpty() - Retorna true se o conjunto estiver vazio.

Exemplo 33

Page 169: Curso Java Basico

Curso Java Básico

Coleções

Coleções: List

A interface List é uma extensão de Collection que acrescenta ao agrupamento o conceito de indexação, ou seja, informação sobre a posição do elemento em relação aos demais membros do grupo.

A API de Java oferece algumas implementações básicas para esta interface, tais como ArrayList (array) e LinkedList (lista encadeada).

Page 170: Curso Java Basico

Curso Java Básico

Coleções

Coleções: List

Exemplo:

public class ExemploArrayList {

public static void main(String[] args) {List c = new ArrayList();c.add("Maria");c.add("Joao");c.add("Ana");c.add("Joao");c.add("Jose");Iterator i = c.iterator();System.out.println(c.get(2));System.out.println(c);

}}

O exemplo acima resulta em Ana e [Maria, Joao, Ana, Joao, Jose].

Page 171: Curso Java Basico

Curso Java Básico

Coleções

Coleções: List

Os principais métodos de List são:

add() - adiciona um elemento ou um conjunto de elementos da lista;

remove() - remove um elemento ou um conjunto de elementos da lista;

get() – obtem o elemento armazenado na posição especificada;

indexOf() - para obter a posição da primeira ocorrência do elemento especificado;

subList() - obtem uma sublista contendo os elementos compreendidos entre dois elementos especificados.

Exemplo 34

Page 172: Curso Java Basico

Curso Java Básico

Coleções

Coleções: Map

Exemplo:

public class ExemploTreeMap {public static void main(String[] args) {Map c = new HashMap();c.put(new Integer(1),"Maria");c.put(new Integer(3),"Joao");c.put(new Integer(2),"Ana");c.put(new Integer(5),"Joao");c.put(new Integer(4),"Jose");System.out.println(c);}

}

O exemplo acima resulta em {1=Maria, 2=Ana, 3=Joao, 4=Jose, 5=Joao}.

Page 173: Curso Java Basico

Curso Java Básico

Coleções

Coleções: Map

Entre outros, os seguintes métodos são oferecidos:

put(), que associa um novo objeto valor ao objeto chave especificado;

get(), que retorna o objeto valor associado ao objeto chave especificado;

containsKey(), que indica se a chave especificada está presente na coleção;

size(), que retorna a quantidade de elementos (pares chave-valor) na coleção.

Se deseja-se que esse grupo de pares de objetos seja mantido por ordem dos valores das chaves, a interface mais especializada SortedMap pode ser utilizada, desde que os objetos usados como chave sejam comparáveis.

Page 174: Curso Java Basico

Curso Java Básico

Coleções

Coleções: Map

Além das funcionalidades acima, esta interface acrescenta a especificação de métodos tais como:

firstKey() para retornar o elemento da coleção com a chave de menor valor.

lastKey() para retornar o elemento da coleção com a chave de maior valor.

subMap() para obter o subconjunto dos elementos compreendidos entre as chaves especificadas.

Exemplo 35

Page 175: Curso Java Basico

Curso Java Básico

Coleções

Coleções: Exercício 7

A partir das classes criadas no Exercício 6, altere o tipo que define o conjunto de contas (dois arranjos distintos de 100 posições para armazenar cada um contas correntes e contas poupança), para ser uma única coleção de contas.

Utilize o operador instanceof para fazer um teste prévio da natureza do objeto constante em cada posição da coleção, para obter informações adicionais de acordo com o tipo de conta:

Se a conta for uma conta corrente, obter o número de cheques emitidos; Se for uma conta poupança, qual o fator de reajuste.

Page 176: Curso Java Basico

Curso Java Básico

Coleções

Coleções: Generics

Generics foi introduzido no Java 5, para ajudar o desenvolvedor a escrever código mais claro, conciso e diminuir a ocorrência de erros de tempo de execução, principalmente durante a manipulação de coleções de objetos (ClassCastException);

Com Generics podemos definir qual o tipo de dados vamos trabalhar com uma determinada coleção ou lista.

Page 177: Curso Java Basico

Curso Java Básico

Coleções

Coleções: Generics

Na manipulação de lista sem o uso de Generics, adicionamos qualquer tipo de objetos na lista e quando os recuperamos, esperando um tipo particular de objeto, podendo ocorrer um ClassCastException, se o objeto recuperado não for do tipo esperado.

Com Generics este problema é eliminado, e a verificação de tipos é feita em tempo de compilação, não mais em tempo de execução, evitando problemas futuros.

Todas as declarações de métodos genéricos têm uma seção de parâmetro de tipo (variável de tipo) delimitada por colchetes angulares (<e>) que precedem o tipo de retorno do método.

Page 178: Curso Java Basico

Curso Java Básico

Coleções

Coleções: Generics

Exemplo:

...List<Integer> l = new ArrayList<Integer>();

l.add( new Integer(1) ); l.add( new Double(2.0) ); // erro Integer i = l.get(1);

...

Exemplo 36

Page 179: Curso Java Basico

Curso Java Básico

Coleções

Coleções: Exercício 8

Utilizando o conceito de Generics, crie classe que declare um método genérico para comparação de objetos.

Teste o método genérico criado, passando como parâmetro objetos distintos, como classes wrappers e strings.

Page 180: Curso Java Basico

Curso Java Básico

Tratamento de Exceções

Conceitos Básicos

Uma exceção é um evento ou valor ilegal, porém previsto na modelagem de um sistema;

Por exemplo, quando criamos um programa que pede ao usuário a digitação de um valor inteiro e esse usuário digita um valor fracionário, dizemos que o valor digitado pelo usuário irá gerar uma exceção;

Entretanto, essa exceção pode, e deve, ser previsto na implementação desse programa.

Page 181: Curso Java Basico

Curso Java Básico

Diferença entre exceções e erros

A diferença entre exceção e erro é que uma exceção é prevista pelo programador durante a implementação de um sistema, enquanto o erro é algo inesperado, não tratado e que, na maioria das vezes, aborta o sistema.

Os erros são sinalizados pelo sistema operacional no qual a máquina virtual Java está rodando.

Ou seja, geralmente, a máquina virtual não permite o acesso de um código Java à origem de um erro, tornando a tentativa de tratamento dos erros impossível.

Tratamento de Exceções

Page 182: Curso Java Basico

Curso Java Básico

Quando uma falha ocorre na execução de um programa, o trecho de código onde essa falha ocorreu pode gerar uma exceção;

Gerar uma exceção é a sinalização ao processo ativo na máquina virtual de que alguma falha ocorreu;

Esse processo então pode "capturar" a execução do programa e, quando possível, tornar a execução do código novamente válido dentro do comportamento previsto para esse programa.

O tratamento de exceções em Java visa um código mais tolerante a falhas;

Existem três comandos básicos que permitem esse tratamento de exceções: try, catch e finally;

Esses comandos são usados em conjunto, suprindo o programador de recursos que garantam o desenvolvimento de códigos robustos;

Tratamento de Exceções

Page 183: Curso Java Basico

Curso Java Básico

Try

É o bloco de comandos que são passíveis de gerarem uma exceção;

Quando o programador sabe que um determinado conjunto de instruções pode gerar algum tipo de exceção, ele agrega esses comandos dentro de um bloco try;

O código contido dentro de um bloco try é chamado de código protegido.

Tratamento de Exceções

Page 184: Curso Java Basico

Curso Java Básico

Catch

É o bloco de comandos alternativos ao try, ou seja, se os comandos do bloco try gerarem uma exceção então os comandos do bloco catch serão executados no lugar deles;

O bloco catch é opcional, mas normalmente é implementado junto a um bloco try.

Tratamento de Exceções

Page 185: Curso Java Basico

Curso Java Básico

Finally

É um comando utilizado para delimitar um grupo de instruções que será sempre executada ao final de um bloco try-catch, independente de qual dos blocos anteriores foi processado pela máquina virtual.

Tratamento de Exceções

Page 186: Curso Java Basico

Curso Java Básico

A lógica dos blocos descritos é simples:

1. Tenta executar os comandos do bloco try

2. Se os comandos do try geraram uma exceção, então executa os comandos do bloco catch. Um bloco de comandos catch sempre deve seguir um bloco de comandos try, e o programador deve ter o cuidado de garantir que o bloco catch não irá gerar uma exceção.

3. Independente das exceções geradas na execução dos blocos try ou catch, os comandos do bloco finally serão executados.

Tratamento de Exceções

Page 187: Curso Java Basico

Curso Java Básico

Exemplo:

public void relatorio(int indice) {

// Tratamento de exceções try { // Tenta executar esse comando System.out.println(alunos[indice]); } catch(ArrayIndexOutOfBoundsException erro) { // Se houver algum erro no bloco anterior, // esse comando será executado System.out.println("aluno inexistente"); }

Tratamento de Exceções

Page 188: Curso Java Basico

Curso Java Básico

Exemplo (continuação):

catch(Exception erro) { // Pode-se usar um catch para cada tipo de erro // possível no bloco try System.out.println("exceção inesperada"); } finally { // Esse comando será executado sempre System.out.println("executou finally"); }

}

Tratamento de Exceções

Page 189: Curso Java Basico

Curso Java Básico

Tratamento pendente de exceções

Caso um método possa gerar uma exceção, esse método deve deixar claro o tipo de ação que deve ser tomada para contornar essa exceção.

Existem duas formas de fazer isso:

um bloco try-catch;ou o lançamento de exceções, deixando o seu tratamento para fora do trecho de código que gerou a exceção.

Para não misturar o tratamento de exceções com a lógica de um programa, uma técnica muito utilizada é a declaração de métodos com exceções pendentes, ou seja, exceções cujo tratamento será feito pelo programa que chamar esse método.

Tratamento de Exceções

Page 190: Curso Java Basico

Curso Java Básico

Tratamento pendente de exceções

Em Java, essa pendência do tratamento de uma exceção é definida pela palavra reservada throws:

A palavra throws é seguida pela lista de exceções que podem ocorrer na execução do código do método.

Esse método só poderá ser chamado de dentro de um bloco try-catch, pois a pendência deverá ser tratada no código que está chamando esse método.

Exemplo: public void relatorio(int indice) throws ArrayIndexOutOfBoundsException{ .. }

A vantagem do tratamento de exceções pendentes é que o código dos métodos fica restrito à lógica do programa.

Tratamento de Exceções

Page 191: Curso Java Basico

Curso Java Básico

Exceções implementadas pelo programador

Como as exceções em Java são instâncias de alguma subclasse de Throwable, é possível implementar outras classes estendidas de Throwable ou de uma de suas subclasses;

Essas subclasses implementadas pelo programador serão igualmente exceções.

Tratamento de Exceções

Page 192: Curso Java Basico

Curso Java Básico

Usamos a palavra reservada extends para implementarmos novas exceções:

public class AlunoInexistente extends Exception { // Esse método sobrecarrega o método homônimo da classe

// Exception public String getMessage() {

return "indice do aluno não existe"; }

}

Após compilarmos o código acima, poderemos usar a nova exceção normalmente em outros programas.

Exemplos 37 e 38

Tratamento de Exceções

Page 193: Curso Java Basico

Curso Java Básico

Adicione à sua solução para o Exercício Completo 1, o tratamento de exceção para os seguintes casos:

O campo chave de acesso não contém 14 caracteres;

O campo UF não corresponder a um dos seguintes valores: BA, SP, MG, GO ou RJ;

O campo Situação não contém um dos seguintes valores: Autorizada, Cancelada, Denegada ou Inutilizada;

O campo do código do medicamento não atende a seguinte expressão regular {001, 002, 003}01.

Em todos estes casos, ao evidenciar falha, deverá ser levantada uma exceção de Conteúdo Inválido, sendo gravada em uma string o problema ocorrido e este será utilizado para confecção da mensagem de exibição ao usuário.

Exercício Completo 2