Beruflich Dokumente
Kultur Dokumente
Parceira da sua
Empresa
Autor: Marcelo
Costa Curta
[PROGRAMAO
EM JAVA]
Uma introduo ao mundo da programao em Java.
SOBRE O AUTOR
Marcelo Costa Curta formado em Engenharia
da Computao pela Universidade de Ribeiro Preto e
MBA em Gesto de Projetos pela FGV, certificado em
ITIL V3, atua a 6 anos como desenvolvedor Java e a 4
anos trabalha como consultor na empresa CurtaTI
(www.curtati.com.br).
SUMRIO
1.
Introduo __________________________ 6
Tecnologias Java _________________________ 7
Estrutura da linguagem Java ________________ 8
Chegou a hora do Hello World _____________ 11
Variveis e Controle de Fluxo ______________ 16
Instrues ou Comandos __________________ 22
2.
4.
Excees __________________________ 66
Capturando e manipulando uma exceo _____ 67
Lanando sua prpria exceo _____________ 70
Try-with-resources no Java 7 _______________ 74
5.
Colees __________________________ 77
Interfaces ______________________________ 77
Implementaes _________________________ 79
6.
Serializao ________________________ 99
Transient e static _______________________ 104
Regras de Serializao __________________ 105
Externalizable __________________________ 106
Controle de Verso _____________________ 107
8.
9.
10.
Programao em Java
1. Introduo
A linguagem de programao Java uma
linguagem de alto nvel, robusta e segura que tem como
principais caractersticas, a orientao a objetos e a
capacidade de ser multiplataforma, lanada em 2005
pela Sun Microsystems, e atualmente mantida pela
Oracle.
Hoje uma linguagem que conta com mais de 9
milhes de desenvolvedores em todo o mundo1.
O grande diferencial do Java hoje a
caracterstica de ser multiplataforma, ou seja, pode ser
executado em vrios hardwares e Sistemas
Operacionais, atravs do conceito de Maquina Virtual
Java que veremos mais detalhes ainda nesse capitulo.
Por sua capacidade modularizao e estrutura
bem definida, permite que seja implantado um ambiente
http://www.oracle.com/br/technologies/java/overview/index.html
6|
www.borgesrinolfi.com.br
Programao em Java
para
arquiteturas
Tecnologias Java
A tecnologia Java oferece meios para se
desenvolver aplicaes robustas para com arquiteturas
avanadas, programas desktop, sistemas embarcados
(Embeddable), para dispositivos mveis e interfaces
grficas avanadas para seus aplicativos.
Para fazer isso da melhor forma possvel foi
desenvolvida uma tecnologia para cada tipo de
aplicao conforme segue abaixo:
www.borgesrinolfi.com.br
Programao em Java
JavaFX
JavaFX uma plataforma criada para
desenvolvimento de interfaces visuais avanadas para
aplicaes,
reduzindo
a
complexidade
do
desenvolvimento.
8|
www.borgesrinolfi.com.br
Programao em Java
Para
iniciar
o
desenvolvimento
Java,
primeiramente todo cdigo fonte escrito em arquivos
texto simples, com o seu editor de texto preferido, e
salvo com a extenso .java.
Figura 1: MeuPrograma.java
9|
www.borgesrinolfi.com.br
Programao em Java
MeuPrograma.java
Compilador
Converto o arquivo
'.java' em bytecode
MeuPrograma.class
traduz o arquivo
'.class' em
binario e executa
o programa
10 |
www.borgesrinolfi.com.br
Programao em Java
www.borgesrinolfi.com.br
Programao em Java
12 |
www.borgesrinolfi.com.br
Programao em Java
13 |
www.borgesrinolfi.com.br
Programao em Java
Executando o programa
Agora que j temos o bytecode (.class) gerado e
no tivemos nenhuma erro, podemos executar o nosso
primeiro programa feito em java. Para isso basta utilizar
o comando java.exe que tambm instalado junto com
a JDK.
14 |
www.borgesrinolfi.com.br
Programao em Java
15 |
www.borgesrinolfi.com.br
Programao em Java
Dados
Tipos primitivos de dados
Tipos primitivos de dados um conjunto de tipos
bsicos de dados definido na linguagem java.
Tipo
Tamanho
(bits)
Byte
Short
1
6
Int
3
2
16 |
Descrio
www.borgesrinolfi.com.br
Valor
Padro
(Default
)
0
Programao em Java
Long
6
4
Float
3
2
(754
pontos
flutuantes
)
Double
6
4
(754
pontos
flutuantes
)
Boolea
n
17 |
www.borgesrinolfi.com.br
0L
0.0f
0.0d
False
Programao em Java
Char
1
6
\u0000
18 |
www.borgesrinolfi.com.br
Programao em Java
www.borgesrinolfi.com.br
Programao em Java
float valor;
int numero;
Cdigo 5: Exemplo de declarao de varivel
Constantes
Constantes so similares a varivel, com uma
diferena, no possvel alterar o seu valor durante a
execuo do cdigo, o seu valor imutvel.
As constantes so muito utilizadas para lembrarse de algum nmero muito grande ou um valor que
pode ser identificado pelo nome da constante.
Para declarar uma constante em java, deve-se
adicionar a palavra static antes do tipo de dado,
conforme exemplo abaixo:
final float PI = 3.14159265f;
Cdigo 6: Declarao de constantes
Atribuio de valores
Para poder utilizar a varivel aps a sua
declarao voc pode atribuir valores a essas variveis.
Isso pode ser feito de varias formas, segue algumas
delas:
Atribuio de valor na mesma linha da
declarao da varivel, nesse caso a varivel j
criada com um valor inicial.
int numero = 10;
Cdigo 7: Atribuindo valores
20 |
www.borgesrinolfi.com.br
Programao em Java
Casting
Alguns tipos de dados quando declarados no
podem assumir posies de valores com menor
capacidade, como por exemplo:
long valor = 1000;
int numero = valor;
Cdigo 9: Erro por tipos de dados incompativeis
www.borgesrinolfi.com.br
Programao em Java
Byte
short
char
int
long
float
double
Implcito
char
Implcito
Implcito
Implcito
Implcito
short
byte
char
Implcito
Implcito
Implcito
Implcito
char
byte
short
Implcito
Implcito
Implcito
Implcito
int
byte
short
char
Implcito
Implcito
Implcito
long
byte
short
char
int
Implcito
Implcito
float
byte
short
char
int
long
double
byte
short
char
int
long
Implcito
float
Instrues ou Comandos
Operadores Aritmticos
Os operadores aritmticos so utilizados para
fazer operaes matemticas, manipulando os dados
(variveis) criados no cdigo. Segue abaixo alguns
exemplos de operadores aritmticos:
int soma = 1 + 1; //resultado igual a 2
int subtracao = 2 - 1; //resultado igual a 1
22 |
www.borgesrinolfi.com.br
Programao em Java
Operadores de Atribuio
Os operadores de atribuio so utilizados para
atribuir um determinado valor a varivel, sem perceber
j vimos o operador =, que atribui valor a varivel, alm
dele temos outros operadores como segue abaixo:
Operador
+=
-=
23 |
Descrio
Operador
incremental - soma
valor da varivel e
atribui valor.
Operador
Decremental
subtrai
valor
da
Exemplo
int numero = 1;
numero += 2; //o valor
3 atribudo a
varivel numero
int numero = 2;
numero -= 2; //o valor
0 atribudo a
varivel numero
www.borgesrinolfi.com.br
Programao em Java
*=
/=
%=
varivel e atribui
valor.
Operador
Multiplicador
multiplica valor da
varivel e atribui
valor.
Operador Divisor
divide
valor
da
varivel e atribui
valor.
Operador Mdulo
divide
valor
a
varivel e atribui
valor.do resto da
diviso a varivel
int numero = 2;
numero *= 3; //o valor
6 atribudo a
varivel numero
int numero = 6;
numero /= 2; //o valor
3 atribudo a
varivel numero
int numero = 4;
numero %= 3; //o
valor 1 atribudo a
varivel numero
24 |
www.borgesrinolfi.com.br
Programao em Java
varivel
valor
Operadores Relacionais
Todo programa feito de tomada de
decises com respostas podendo ser, verdadeira ou
falsa e mais nada, no permitindo redundncia ou
25 |
www.borgesrinolfi.com.br
Programao em Java
==
26 |
Descrio
Exemplo
Igualdade verifica int numero = 1;
se o primeiro valor boolean resultado;
resultado = (numero
IGUAL ao segundo
!=
Diferena verifica
se o primeiro valor
DIFERENTE
ao
segundo
<
Menor verifica se o
primeiro
valor
MENOR ao segundo
<=
Menor ou igual
verifica se o primeiro
valor MENOR OU
IGUAL ao segundo
>
Maior verifica se o
primeiro
valor
MAIOR ao segundo
www.borgesrinolfi.com.br
Programao em Java
>=
Maior ou igual
verifica se o primeiro
valor MAIOR OU
IGUAL ao segundo
atribudo a varivel
resultado
int numero = 1;
boolean resultado;
resultado = (numero
== 2); //o valor false
atribudo a varivel
resultado
Operadores Lgicos
As decises aprendidas no tpico anterior
podem ser feitas em conjunto com duas ou mais
decises, trazendo para o programa apenas um
resultado true ou false, para isso utilizado os
operadores lgicos E ou OU, segue abaixo:
Operador
Descrio
Exemplo
Condio E faz a int numero = 1;
&&
verificao e as boolean resultado;
duas
condies resultado = (numero >
0 && numero < 3 ); //o
devem
ser valor true atribudo
verdadeiras
para a varivel resultado
que seja retornado
true
Condio OU faz int numero = 1;
||
a verificao e uma boolean resultado;
das duas condies resultado = (numero
deve ser verdadeira == 2 || numero > 10 );
//o valor false
para
que
seja
atribudo a varivel
retornado true
resultado
www.borgesrinolfi.com.br
Programao em Java
Estruturas de Controle
O fluxo de um sistema desenvolvido pode ter
seu rumo alterado conforme o valor inserido (Deciso),
ou tem-se a necessidade de repetir algum trecho de
cdigo por algum perodo seja ele fixo, ou por alguma
condio de parada (Repetio). Para isso temos
alguns recursos para controle do fluxo do programa,
vamos ver quais so e como funciona cada um deles.
Deciso
IF-Else
28 |
("O
valor
no
www.borgesrinolfi.com.br
pode
ser
Programao em Java
System.out.println
");
}
("O
valor
esta
correto.
Switch
29 |
www.borgesrinolfi.com.br
Programao em Java
String colocacao;
switch (numero) {
case 1: colocacao =
break;
case 2: colocacao =
break;
case 3: colocacao =
break;
case 4: colocacao =
break;
case 5: colocacao =
break;
case 6: colocacao =
break;
case 7: colocacao =
break;
case 8: colocacao =
break;
case 9: colocacao =
break;
case 10: colocacao =
break;
default: colocacao
"Primeiro";
"Segundo";
"Terceiro";
"Quarto";
"Quinto";
"Sexto";
"Stimo";
"Oitavo";
"Nono";
"Dcimo";
=
"Acima
do
dcimo";
break;
}
System.out.println(colocacao);
Cdigo 18: Estrutura do comando switch
30 |
www.borgesrinolfi.com.br
Programao em Java
"
www.borgesrinolfi.com.br
Programao em Java
"
For
www.borgesrinolfi.com.br
Programao em Java
cont);
}
Cdigo 22: Estrutura do For-each
33 |
www.borgesrinolfi.com.br
Programao em Java
2. Orientao a Objetos
A programao Orientada a Objetos foi
desenvolvida para resolver alguns problemas da
programao procedural como, por exemplo:
Muita linha de cdigo
Difcil manuteno
Difcil avaliar impacto de mudanas
No modularizado
Basicamente a orientao objetos consiste em
trazer a programao o mais prximo possvel do
mundo real. Ou seja, no mundo real o que temos so
objetos interagindo um com outro, atravs de troca de
mensagens.
34 |
www.borgesrinolfi.com.br
Programao em Java
Mensagem:
Oi tudo bem?
Objeto: Paulo
Ao: Falar
Objeto: Rafaela
Ao: Ouvir
35 |
www.borgesrinolfi.com.br
Programao em Java
EscolherFilme
(nomeDoFilme)
Objeto: Cliente1
Ao: EscolherFilme
serAlugado()
Objeto: Atendente
Ao: ReservarFilme
Objeto: Filme
Ao: serAlugado
Classes
Uma classe uma estrutura criada para criao
de objetos.
36 |
www.borgesrinolfi.com.br
Programao em Java
Objeto: Pessoa1
Atributos:
Nome: Joo
Idade: 18
Sexo: Masculino
Ao:
Classe: Pessoa
falar()
Atributos:
Nome
Idade
Sexo
Ao:
falar()
Objeto: Pessoa2
Atributos:
Nome: Maria
Idade: 25
Sexo: Feminino
Ao:
falar()
37 |
www.borgesrinolfi.com.br
Programao em Java
Atributos
As variveis (atributos) da classe pessoa so nome,
idade e sexo, todas elas so declaradas da seguinte forma:
<modificador
de acesso>
<nome da varivel>
<tipo
de
dados>
www.borgesrinolfi.com.br
Programao em Java
Mtodos
Mtodos so procedimentos ou funes, que
tem a capacidade de manipular os atributos para
executar alguma ao atribuda a classe, por exemplo a
nossa classe Pessoa, tem a responsabilidade de falar, e
por isso foi especificado um mtodo chamado falar
com um cdigo para exibir uma frase na tela.
Todos os mtodos so compostos de:
<modificador de acesso> <tipo
<nome do mtodo> (<parmetros>)
de
retorno>
39 |
Onde:
Modificadores de acesso - so os mesmos que
vimos para as variveis.
Tipo de Retorno trata-se do valor que ser
retornado aps a execuo do mtodo, pode ser
utilizado todos os tipos de dados j conhecidos.
Nome do Mtodo deve ser um nome coerente
com a ao que ele faz, inicia-se com letra
minscula por conveno.
www.borgesrinolfi.com.br
Programao em Java
Sobrecarga de mtodos
Em java podemos ter dois mtodos com o
mesmo nome, desde que tenham parmetros
diferentes, chamamos isso de sobrecarga de mtodos.
Por exemplo:
//Mtodos (aes)
public void falar(){
System.out.println("Oi,
Tudo
bem?");//comando para exibir Oi, Tudo bem?
na tela
}
public void falar(String frase){
System.out.println(frase);//comando
para exibir o contedo da varivel 'frase' na
tela
}
Cdigo 26: Dois mtodos podem ter o mesmo nome
desde que tenham parmetros diferentes
Objetos
40 |
www.borgesrinolfi.com.br
Programao em Java
41 |
www.borgesrinolfi.com.br
Programao em Java
Varivel: pessoa1
Tipo: Pessoa.java
Atributos:
String nome = null;
int idade = 0;
String sexo = null;
42 |
www.borgesrinolfi.com.br
Programao em Java
Agora
vamos
modificar
classe
www.borgesrinolfi.com.br
Programao em Java
Construtores
Como pudemos ver no cdigo da classe
ExemploObjetos.java primeiro instanciamos o objeto
(new) e depois nas linhas 8 a 10 e 19 a 21, atribumos
valores aos atributos do objeto.
O construtor um mtodo que chamado no
momento da inicializao do objeto. Ele deve ter o
nome idntico ao da classe, e no tem um tipo de
retorno.
44 |
www.borgesrinolfi.com.br
Programao em Java
classe
//Construtor
para
inicializar
as
varivveis
public Pessoa(String nome, int idade,
String sexo) {
this.nome = nome;
this.idade = idade;
this.sexo = sexo;
}
Cdigo 30: Construtor da classe Pessoa.java
25,
www.borgesrinolfi.com.br
Programao em Java
Pacotes e importaes
Com a orientao a objetos, cada classe um
arquivo, alm do arquivo principal, e de muitos outros
que so criados nesse tipo de projeto. Para isso
precisamos organizar muito bem os cdigos, para o
java se aproveita de uma estrutura j conhecida que
so as pastas e dentro dessas pastas colocamos
nossos arquivos.
A diferena que no Java chamamos essas
pastas de pacotes (packages).
Aps incluir o arquivo .java no diretrio
desejado, feita uma declarao desse pacote na
primeira linha do arquivo, conforme cdigo abaixo:
46 |
www.borgesrinolfi.com.br
Programao em Java
package primeiroexemplo;
public class Pessoa {
//cdigo da classe
}
Cdigo 32: Declarao de pacote (package)
47 |
www.borgesrinolfi.com.br
Programao em Java
Modificadores de acesso
As classes, mtodos e atributos so declarados
podendo ser especificado um modificador de acesso, ou
seja, quem so as classes que podero ter acesso a
essa informao.
48 |
www.borgesrinolfi.com.br
Programao em Java
Herana
Imagine o seguinte cenrio em nossos sistemas
temos duas classes uma representando os Clientes e
outra representando os Funcionrios, conforme o
desenho abaixo:
49 |
www.borgesrinolfi.com.br
Programao em Java
50 |
www.borgesrinolfi.com.br
Programao em Java
www.borgesrinolfi.com.br
Programao em Java
}
Cdigo 36: Superclasse, ou classe pai, Pessoa.java
Casting
Para criar um objeto da classe Funcionario,
podemos utilizar o cdigo abaixo:
Funcionario func1 = new Funcionario();
Cdigo 39: Criao do objeto Funcionario
www.borgesrinolfi.com.br
Programao em Java
Pessoa pessoa
= new Funcionario();
42:
Fazendo
casting
de
Pessoa
para
www.borgesrinolfi.com.br
Programao em Java
Polimorfismo
a capacidade de trabalhar com objetos
referenciados de vrias formas, agrupando os objetos.
Por exemplo, no exemplo utilizado acima
tnhamos polimorfismo sendo utilizado na seguinte
linha:
Pessoa pessoa
= new Funcionario();
54 |
www.borgesrinolfi.com.br
Programao em Java
www.borgesrinolfi.com.br
Programao em Java
}
public void imprimirEtiquetas(Cliente
cliente){
System.out.println("Nome: " +
this.nome);
}
}
Cdigo 45: Desta forma teremos um mtodo para cada
objeto, se tivermos mais um objeto, teremos que escrever mais
um mtodo
www.borgesrinolfi.com.br
Programao em Java
57 |
www.borgesrinolfi.com.br
Programao em Java
}
}
Cdigo 47: Classe Pessoa.java com a implementao
bsica do mtodo imprimir()
Classe Funcionario.java
public class Funcionario extends Pessoa {
//atributos
public Integer CTPS;
public double salario;
//Mtodo
para
imprimir
etiquetas.
Sobrescrito da classe Pai, Pessoa, pois tem
caractersticas prprias.
@Override
public String imprimir() {
return
"Nome:
"
+
this.nome
+
"Carteira de trabalho: " + this.CTPS;
}
}
Cdigo 49: Classe Funcionario.java, sobrescreve o
mtodo imprimir() e tem a sua prpria implementao
www.borgesrinolfi.com.br
Programao em Java
new
www.borgesrinolfi.com.br
Programao em Java
60 |
www.borgesrinolfi.com.br
Programao em Java
Interface
Interface como um contrato estabelecido voc
cria uma classe apenas com a assinatura dos mtodos
que deseja que sejam implementados e as classes que
implementar essa interface devem escrever todo o
cdigo dos mtodos. Veja o mesmo exemplo acima
utilizando Interface, para gerao de etiquetas.
61 |
www.borgesrinolfi.com.br
Programao em Java
www.borgesrinolfi.com.br
Programao em Java
public
class
Funcionario
implements GeraEtiquetas{
public Integer CTPS;
public double salario;
extends
Pessoa
@Override
public String imprimir() {
return "Nome: " + this.nome
"Carteira de trabalho: " + this.CTPS;
}
63 |
www.borgesrinolfi.com.br
Programao em Java
}
Cdigo 55: Classe Funcionario.java estendendo as
capacidades de Pessoa e implementando a interface
GeraEtiquetas
public
class
Cliente
extends
implements GeraEtiquetas{
public String classificacao;
Pessoa
64 |
www.borgesrinolfi.com.br
Programao em Java
65 |
www.borgesrinolfi.com.br
Programao em Java
4. Excees
Excees so eventos acontecem fora do fluxo
no normal do programa, previstos ou no, e que
devemos tratar de alguma forma, seja para sugerir ao
usurio como corrigir, ou para informar que algo
aconteceu de errado, enviando uma mensagem
amigvel para o usurio do sistema.
Existem trs tipos de excees:
66 |
Programao em Java
RuntimeExceptions
condies
internas da aplicao, porm to graves
que no possvel prever nem recuperar
o programa. Normalmente trata-se de um
bug na aplicao ou de mal uso de
alguma implementao.
www.borgesrinolfi.com.br
Programao em Java
vetor[i] = 0;
System.out.println("Inserido
posio: " + i);
}
}
na
www.borgesrinolfi.com.br
Programao em Java
System.err.println("Voc
o limite de posies do vetor!");
}
}
excedeu
69 |
www.borgesrinolfi.com.br
Programao em Java
=
=
System.out.println(objeto.getClass());
}
catch
(ClassNotFoundException
|IllegalAccessException
|
InstantiationException ex) {
System.err.println("Erro ao criar
o objeto: " + ex.getMessage());
}
}
Cdigo 59: JAVA 7 - podemos tratar varias excees
com o mesmo algoritmo
www.borgesrinolfi.com.br
Programao em Java
www.borgesrinolfi.com.br
Programao em Java
72 |
www.borgesrinolfi.com.br
Programao em Java
System.out.println("Voc
excedeu
o limite de posies do vetor");
}catch
(ValidaTamanhoVetorException
e){
System.out.println(e.getMessage());
}
}
private
static
void
validaTamanho(int
tamanho) throws ValidaTamanhoVetorException{
if(tamanho > 10){
throw
new
ValidaTamanhoVetorException();
}
}
Cdigo 62: Cdigo lanando nossa prpria exception.
Instruo Finally
Ainda dentro do bloco de instruo de captura
de excees, podemos utilizar o bloco finally para
executar alguma ao aps o bloco try ou aps algum
catch, independente de ter dado certo ou no ele
tentara executar o trecho de cdigo do finally. Esta
instruo muito utilizada para fechar arquivos ou
conexes, que devem ser fechadas independe de ter
dado certo o comando ou no. Deve ser utilizado
conforme exemplo:
try {
// bloco try
} catch (IOException ex) {
// bloco catch
} finally {
73 |
www.borgesrinolfi.com.br
Programao em Java
//
bloco
que
ser
executado, independente
// de ter dado erro ou no
}
sempre
Try-with-resources no Java 7
Na verso 7 do Java foi lanado um recurso,
para reduzir e tornar mais legvel o cdigo do try-catch,
trata-se de um recurso chamado de try-withresources.
O problema
Ao tentar, por exemplo, ler um arquivo o primeiro
passo abrir o arquivo, caso der algum erro ser
lanado uma exceo, porm, se der algum erro na
leitura de um arquivo j aberto, voc deve tratar o erro e
fechar o arquivo sempre (normalmente includo no bloco
finally), o que pode causar outro erro (outra exceo), e
com isso o cdigo fica mais complicado e de difcil
entendimento, veja o exemplo abaixo:
public
String
lerPrimeiraLinha(String
path) {
BufferedReader br = null;
try {
br
=
new
BufferedReader(new
FileReader(path));
return br.readLine();
} catch (IOException ex) {
74 |
www.borgesrinolfi.com.br
Programao em Java
System.out.println("Falha ao ler
arquivo: " + ex.getMessage());
} finally {
if (br != null) {
try {
br.close();
} catch (IOException ex) {
System.out.println("Falha
ao fechar buffer: " + ex.getMessage());
}
}
}
return null;
}
Cdigo 64: Cdigo necessrio para ler arquivo antes do
Java 7
A soluo
No Java 7 podemos incluir o recurso como um
parmetro na instruo try, e ele ser fechado
automaticamente aps a execuo do bloco try. Veja o
cdigo abaixo, utilizando try-with-resources:
public
String
lerPrimeiraLinha(String
path) {
try(BufferedReader
br
=
new
BufferedReader(new FileReader(path))) {
return br.readLine();
} catch (IOException ex) {
System.out.println("Falha ao ler
arquivo: " + ex.getMessage());
}
return null;
}
Cdigo 65: Cdigo mais limpo, utilizando novos
recurso do Java 7
75 |
www.borgesrinolfi.com.br
Programao em Java
76 |
www.borgesrinolfi.com.br
Programao em Java
5. Colees
Tambm conhecidos como Collections, so
classes responsveis por auxiliar a manipulao de
grandes quantidades de dados.
Os arrays so utilizados para armazenar vrios
objetos, porm existe uma srie de dificuldades em
trabalhar com array, por exemplo, eles tm tamanho
fixo, e caso seja necessrio aumentar o tamanho,
preciso criar um novo vetor e transferir os dados de um
para o outro, ou se precisarmos inserir um elemento
nomeio do vetor, ou remover algum.
Para resolver essas complexidades e no
precisarmos reescrever cdigos para resolver
problemas comuns, o Java criou o Collections
Framework, composto de interfaces, implementaes, e
algoritmos, todos preparados para as funcionalidades
bsicas de grandes volumes de dados.
Interfaces
77 |
www.borgesrinolfi.com.br
Programao em Java
Collection
Set
List
Queue
SortedSet
Figura 18: Classes que compe o Collection
Framework do Java
Map
SortedMap
Figura 19: Embora o Map, faa parte do Collection
Framework, ele no herda as capacidades da classe Collection,
uma estrutura independente.
78 |
www.borgesrinolfi.com.br
Programao em Java
Implementaes
79 |
www.borgesrinolfi.com.br
Programao em Java
List
Com as implementaes de lista possvel
recuperar um objeto pela posio em que ele foi
inserido (get(int)), buscar o objeto e recuperar a posio
em que ele esta, listar todos os objetos na sequencia
em que foi inserido.
Segue abaixo as diferenas entre duas das
principais implementaes da interface List:
LinkedList uma implementao mais rpida
para inserir e remover itens, porm mais
demorada para percorrer os objetos da lista.
ArrayList mais rpido para percorrer os
objetos da lista, e para acessar aleatoriamente
um objeto, a busca pode ser feita diretamente
pelo ndice. mais lento para inserir e remover
objetos.
Para instanciar uma a implementao ArrayList
fazemos da seguinte forma:
List<Funcionario>
listaFuncionarios
ArrayList<Funcionario>();
new
www.borgesrinolfi.com.br
Programao em Java
new
Funcionario
func2
Funcionario();
func2.nome = "Adolfo";
new
81 |
www.borgesrinolfi.com.br
Programao em Java
=
do
:
do
82 |
excluir
www.borgesrinolfi.com.br
Programao em Java
listaFuncionarios.remove(excluir);
Cdigo 72: Removendo objetos da lista por indice ou
diretamente
da
lista:
"
que
Funcionario
func2
Funcionario();
func2.nome = "Adolfo";
vo
=
new
new
83 |
www.borgesrinolfi.com.br
ser
Programao em Java
SET
Set um tipo de Collections que no permite
itens duplicados, as principais implementaes so:
HashSet um tipo de implementao que
armazena os dados em uma tabela hash, tratase de uma das implementaes mais rpidas,
porm no tem garantia da ordem de insero
84 |
www.borgesrinolfi.com.br
Programao em Java
que
Funcionario
func2
Funcionario();
func2.nome = "Adolfo";
vo
=
new
new
www.borgesrinolfi.com.br
ser
Programao em Java
setFuncionarios.add(func1);
setFuncionarios.add(func2);
//percorre todos os itens do Set
for
(Funcionario
funcionario
:
setFuncionarios) {
//imprime
o
nome
de
cada
funcionario da lista
System.out.println("Nome
do
Funcionario: " + funcionario.nome);
}
//Remove o item na posio 1 do Set
setFuncionarios.remove(func1);
//remove o objeto recuperado do Set
setFuncionarios.remove(func2);
//imprime o tamanho atual do Set
System.out.println("Tamanho do Set: "
+ setFuncionarios.size());
}
Cdigo 75: Principais operaes utilizando Set
Map
Mapas so colees onde podem ser definidos
chave e valor, onde a chave no pode ser duplicada.
As principais implementaes para Mapas so
HashMap, o TreeMap e o Hashtable, que tem as
mesmas diferenas das
and LinkedHashSet que
implementaes SET.
86 |
www.borgesrinolfi.com.br
Programao em Java
os
dias
da
semana
"Domingo");
"Segunda-Feira");
"Tera-Feira");
"Quarta-Feira");
"Quinta-Feira");
"Sexta-Feira");
"Sbado");
um
item
do
mapa
pela
chave
String sabado = semana.get(7);
System.out.println("O
7
dia
semana : "+ sabado);
//removendo
do
mapa
um
item
da
pela
chave
semana.remove(1);
//percorrendo o mapa por valor, desta
forma no possvel recuperar a chave do
contedo
//recuperado
for (String string : semana.values())
{
System.out.println("Dia
da
semana: " + string);
}
87 |
www.borgesrinolfi.com.br
Programao em Java
"+indice+"
Ordenao
Alm de toda implementao de coleo, a
Collections
Framework,
ainda
traz
alguns
implementaes prontas para busca, ordenao, entre
outras operaes que podem ser realizadas com
colees.
Porm para ordenarmos objetos do tipo
Funcionario por ordem alfabtica, precisamos primeiro
definir o critrio de busca, pois o compilado no
conhece esse tipo de objeto.
Precisamos que a classe Funcionario
implemente a classe Comparable, e sobrescreva o
mtodo compareTo esse mtodo retorna um inteiro
que funciona da seguinte maneira:
Negativo se o objeto comparado for MENOR
Zero se o objeto for IDNTICO
Positivo se o objeto comparado for MAIOR
88 |
www.borgesrinolfi.com.br
Programao em Java
extends
Pessoa
GeraEtiquetas,
@Override
public String imprimir() {
return "Nome: " + this.nome
"Carteira de trabalho: " + this.CTPS;
}
@Override
public int compareTo(Funcionario o) {
return nome.compareTo(o.nome);
}
}
Cdigo 77: Fazendo a classe Funcionario.java "assinar
o contrato" de uma classe Comparable
89 |
www.borgesrinolfi.com.br
Programao em Java
que
Funcionario
func2
Funcionario();
func2.nome = "Adolfo";
vo
ser
new
new
todos
os
itens
www.borgesrinolfi.com.br
da
lista
Programao em Java
for
(Funcionario
funcionario
:
listaFuncionarios) {
//imprime
o
nome
de
cada
funcionario da lista
System.out.println("Nome
do
Funcionrio Ordenado: " + funcionario.nome);
}
}
Cdigo 78: Cdigo da Ordenao
91 |
www.borgesrinolfi.com.br
Programao em Java
Classe
abstrata
representa a entrada de dados, utilizada para
leitura de bytes.
java.io.OutPutstream Classe Abstrata que
representa a sada de dados, em bytes, para
envio ou escrita de arquivos
92 |
www.borgesrinolfi.com.br
Programao em Java
binrio
www.borgesrinolfi.com.br
Programao em Java
new
"
BufferedReader
br
=
new
BufferedReader(isr);
String s = br.readLine();
System.out.println("Valor digitado em
texto: " + s);
}
Cdigo 80: Convertendo os bytes gerados em Texto
novamente, com BufferedReader
Escrevendo um arquivo
A classe java.io.OutputStream utilizada para
podermos escrever informaes em arquivos, uma
94 |
www.borgesrinolfi.com.br
Programao em Java
FileOutputStream,
buffer
para
Java");
(como se
quebra de
Input
liberar
arquivo
bwriter.close();
}
Cdigo 81: Escrevendo mensagem em arquivo texto
95 |
www.borgesrinolfi.com.br
Programao em Java
implementada
pelas
classes
ObjectInputStream,
AudioInputStream,
ByteArrayInputStream, ou FileInputStream.
Como vamos tratar com arquivos vamos utilizar
a classe FileInputStream.
public static void main(String[] args)
throws IOException {
//cria um canal input para ler o
arquivo c:\java\arquivo.txt
InputStream
in
=
new
FileInputStream("c:\\java\\arquivo.txt");
//utilizamos o Reader e o Buffer para
facilitar o processo de leitura
InputStreamReader
reader
=
new
InputStreamReader(in);
BufferedReader
breader
=
new
BufferedReader(reader);
String texto = breader.readLine();
while (texto != null) {
System.out.println(texto);
texto = breader.readLine();
}
96 |
www.borgesrinolfi.com.br
Programao em Java
//fecha
buffer
para
liberar
arquivo
breader.close();
}
Cdigo 82: Fazendo a leitura do arquivo gerado
Scanner e PrintStream
Com a classe java.util.Scanner, criada a partir
do Java 5, podemos ler (Input) com mais facilidade e
em conjunto com a classe java.io.PrintStream,
podemos agora escrever facilmente um programa
capaz de ler o que foi digitado e escrever em um
arquivo texto, veja como ficaria este cdigo:
public static void main(String[] args)
throws IOException {
//Utilizamos a classe Scanner para
receber os dados digitados (Input)
Scanner s = new Scanner(System.in);
//A Classe PrintStream para abrir um
Writer com o arquivo c:\java\arquivo.txt
PrintStream
ps
=
new
PrintStream("c:\\java\\arquivo.txt");
String texto; //variavel utilizada
para guardar linha a linha
do{
texto = s.nextLine(); //recupera
a primeira linha do input (que foi digitada)
97 |
www.borgesrinolfi.com.br
Programao em Java
ps.println(texto);
//grava
a
linha digitada no arquivo atraves da classe
PrintStream
}while(!"sair".equals(texto));
//ira
fazer isso ate que voc digite 'sair'
ps.close();
//fecha
para liberar o arquivo
}
PrintStream
98 |
www.borgesrinolfi.com.br
Programao em Java
7. Serializao
Um objeto a criao de uma estrutura no
modelo de determinada classe, onde todos os seus
atributos (variveis) so alocados na memria, para uso
posterior no programa, porm assim que o programa
fechado todos os objetos so removidos da memria.
A Serializao de objetos o fato de podermos
transformar esses objetos na memria em bytes e com
isso podermos armazen-los em arquivos ou transferir
via rede.
Este conceito muito utilizado quando
precisamos armazenar algum objeto com informaes
que no queremos manter no banco de dados, e sim
junto da aplicao, por exemplo, ultima data de abertura
do sistema.
Para que o objeto seja serializavel, sua classe
deve implementar a interface java.io.Serializable, no
h mtodos nessa interface, ela existe apenas para
classificar os objetos que podem ser serializados ou
no.
Para vermos como serializar e des-serializar um
objeto, vamos criar uma classe simples chamada Carro
implementando Serializable, com alguns atributos e
mtodos, segue o cdigo da classe abaixo:
import java.io.Serializable;
99 |
www.borgesrinolfi.com.br
Programao em Java
(Estes
sero
100 |
www.borgesrinolfi.com.br
so
so
Programao em Java
85:
Classe
Carro.java
implementando
Vamos
utilizar
a
classe
java.io.ObjectOutputStream para serializar os objetos
em um arquivo chamado carros.dat, esses objetos no
podem ser visveis no arquivo, pois o que ser gravado
l uma estrutura de bytes, de forma que o Java
consiga recuperar depois.
A classe java.io.FileOutputStream ira auxiliar
na gravao dos objetos no arquivo.
J a classe java.io.ObjectInputStream ira desserializar o objeto, e a classe java.io.FileInputStream vai
auxiliar na leitura do arquivo gerado.
101 |
www.borgesrinolfi.com.br
Programao em Java
java.io.File;
java.io.FileInputStream;
java.io.FileOutputStream;
java.io.IOException;
java.io.ObjectInputStream;
java.io.ObjectOutputStream;
102 |
www.borgesrinolfi.com.br
Programao em Java
//serializando os objetos
oos.writeObject(carroA);
oos.writeObject(carroB);
//fechando o arquivo
oos.close();
103 |
www.borgesrinolfi.com.br
Programao em Java
carroD.getCor()
carroD.getAno());
"
Ano:
"
//fechando o arquivo
ois.close();
}
}
Cdigo 86: Serializando e Des-Serializando objetos
Modelo:
F458
Cor:
Modelo:
911
Cor:
Transient e static
Podemos definir que algum atributo para que
no seja serializado, e com isso termos apenas parte do
objeto transformado em bytes, basta para isso
incluirmos a palavra reservada transient no atributo que
no deseja armazenar.
Com isso ao des-serializar o objeto, o parmetro
que estiver marcado como transiente ser restaurado
104 |
www.borgesrinolfi.com.br
Programao em Java
Modelo:
F458
Cor:
Modelo:
911
Cor:
Regras de Serializao
105 |
www.borgesrinolfi.com.br
Programao em Java
Externalizable
Assim como a interface java.io.Serializable,
todas
as
classes
que
implementem
106 |
www.borgesrinolfi.com.br
Programao em Java
Controle de Verso
Imagine que um objeto serializado, e aps sua
serializao, h uma alterao na classe, includo um
atributo a mais por exemplo.
Para manter a consistncia entre os objetos
persistentes (armazenados) e as classes que lhe deram
origem podemos utilizar o atributo static final long
serialVersionUID.
Trata-se de um nmero 64bits atribudo a classe
com um algoritmo hash (SHA-1) ou manualmente pelo
107 |
www.borgesrinolfi.com.br
Programao em Java
108 |
www.borgesrinolfi.com.br
Programao em Java
8. Reflexo
Reflexo a forma de recuperar informaes de
uma classe em tempo de execuo, informaes como
atributos, mtodos ou o prprio nome da classe.
Alm de permitir recuperar as informaes de
uma classe, ainda podemos executar aes com as
informaes recuperadas, como por exemplo, instanciar
uma classe utilizando o nome dela, ou executar um
mtodo desta classe a partir do nome do mtodo.
Em java podemos fazer isso facilmente
utilizando Java Reflection API, que so classes dos
pacotes java.lang e java.lang.reflection.
Vamos ver como instanciar e executar um
mtodo em tempo de execuo usando reflexo em
java, para isso vamos criar uma classe chamada
Calculadora.java com o mtodo soma e multiplicao,
segue abaixo a classe Calculadora.java:
public class Calculadora {
109 |
www.borgesrinolfi.com.br
Programao em Java
objeto
new
=
110 |
www.borgesrinolfi.com.br
Programao em Java
"
}
Cdigo 91: Criando uma instancia por reflexo e
executando um mtodo passando parmetros.
111 |
www.borgesrinolfi.com.br
da
=
Programao em Java
Field[]
atributos
=
classe.getDeclaredFields();
System.out.println("@@@ Nome dos
atributos atributo: ");
for (Field field : atributos) {
System.out.println(">>>> " +
field.getName());
}
//recuperando os construtores
Constructor[]
contrutores
classe.getConstructors();
for (Constructor constructor
contrutores) {
System.out.println("@@@
Construtor: " + constructor.getName());
//parametros do construtor
Class[]
parametros
constructor.getParameterTypes();
for
(Class
class1
parametros) {
System.out.println(">>>>
Parametro: " + class1.getName());
}
}
=
:
=
:
112 |
www.borgesrinolfi.com.br
Programao em Java
Class<?>[]
parametros
=
method.getParameterTypes();
System.out.println(">>>>
Parametros recebidos: ");
for
(Class<?>
class1
:
parametros) {
System.out.println("----- " + class1.getName());
}
}
//recuperando
as
interfaces
implementadas na classe
System.out.println("@@@@
Interfaces Implementadas: ");
Type[]
intfs
=
classe.getGenericInterfaces();
if (intfs.length != 0) {
for (Type intf : intfs)
System.out.println(">>>>>>
intf.toString());
}
Interface:
} catch (Exception e) {
System.err.println("Erro:
e.getMessage());
e.printStackTrace();
}
"
"
}
Cdigo 92: Recuperando informaes de classes
atraves de reflexo
www.borgesrinolfi.com.br
Programao em Java
programa,
porm
no
podemos
fazer
uso
indiscriminado desta funcionalidade, o desempenho no
o mais rpido, pois existem mais passos que o normal
para instanciar uma classe em tempo de execuo.
114 |
www.borgesrinolfi.com.br
Programao em Java
9. Padres de Projetos
A programao orientada a objetos foi criada
por Alan
Kay,
autor
da
linguagem
de
programao Smalltalk. Porm antes disso algumas das
ideias da Orientao a Objetos j eram aplicadas,
sendo que a primeira linguagem a realmente utilizar
estas ideias foi a linguagem Simula 67, criada por Ole
Johan Dahl e Kristen Nygaard em 1967.
Portanto temos aproximadamente 45 anos de
programao Orientada a Objetos, e milhares de
sistemas desenvolvidos, todos utilizando a mesma
forma de estruturao de classes, passado um tempo
descobriu-se que muitas pessoas tinham os mesmos
problemas no momento de estruturar as classes e
trabalhar com orientao a objetos.
Pensando
nisso,
em
1987
os programadores Kent
Beck e Ward
Cunningham propuseram os primeiros padres de
projeto para a rea da cincia da computao.
115 |
www.borgesrinolfi.com.br
Programao em Java
116 |
www.borgesrinolfi.com.br
Programao em Java
Padres
comportamentais:
tratam
das
interaes e divises de responsabilidades entre
as classes ou objetos;
Segue abaixo a lista dos 23 padres GoF:
Padres de criao
1.
2.
3.
4.
5.
Abstract Factory
Builder
Factory Method
Prototype
Singleton
Padres estruturais
6. Adapter
7. Bridge
8. Composite
9. Decorator
10. Facade
11. Flyweight
12. Proxy
Padres comportamentais
13. Chain of Responsibility
14. Command
15. Interpreter
16. Iterator
17. Mediator
18. Memento
117 |
www.borgesrinolfi.com.br
Programao em Java
19. Observer
20. State
21. Strategy
22. Template Method
23. Visitor
Veremos agora em detalhes os principais
padres de cada tipo.
118 |
www.borgesrinolfi.com.br
Programao em Java
www.borgesrinolfi.com.br
Programao em Java
120 |
www.borgesrinolfi.com.br
Programao em Java
BufferedWriter
BufferedWriter(writer);
bwriter
new
"
}
}
Cdigo 93: Implementao Java do padro Singleton
121 |
www.borgesrinolfi.com.br
Programao em Java
Factory
Criao)
Method
(Padro
de
122 |
www.borgesrinolfi.com.br
Programao em Java
www.borgesrinolfi.com.br
Programao em Java
Creator
ConcreteCreator
Product
ConcreteProduct
FabricaCarro.java
FabricaCarroConcreta.java
Carro.java
CarroConcreto.java
CaminhoneteConcreto.java
carro;
abstract
Carro
criaCarro(String
}
Cdigo 95: Classe abstrata FabricaCarro.java
FabricaCarroConcreta.java Implementao
da classe abstrata FabricaCarro.java, com a
implementao do mtodo criaCarro(String tipo), onde
feita a deciso sobre qual objeto ser instanciado de
acordo com o tipo passado como parmetro.
public
class
FabricaCarro {
FabricaCarroConcreta
@Override
124 |
www.borgesrinolfi.com.br
extends
Programao em Java
CarroConcreto.java implementao da
interface Carro.java, com as caractersticas de um
carro.
125 |
www.borgesrinolfi.com.br
Programao em Java
Carro
atual
Carro
atual
CaminhoneteConcreto.java implementao
da interface Carro.java, com as caractersticas de uma
caminhonete.
public class
Carro {
CaminhoneteConcreto
implements
126 |
www.borgesrinolfi.com.br
Programao em Java
}
public void freia() {
System.out.println("CAMINHONETE]
Caminhonete freiando...");
velocidade += velocidade - 2;
System.out.println("Velocidade
atual
= " + velocidade);
}
}
Cdigo 99: Segunda implementao da interface Carro
para gerar caminhonete
Carro
carro
fabrica.criaCarro("carro");
carro.acelera();
carro.freia();
}
127 |
www.borgesrinolfi.com.br
Programao em Java
Template
Comportamental)
Method
(Padro
128 |
www.borgesrinolfi.com.br
Programao em Java
129 |
www.borgesrinolfi.com.br
Programao em Java
}
Cdigo 101: Implementao da classe abstrata que
implementa o mtodo template
ClasseConcreta1
extends
concreta
}
}
Cdigo 102: Classe concreta 1, implementando os
metodos
public
class
ClasseAbstrata {
130 |
ClasseConcreta2
www.borgesrinolfi.com.br
extends
Programao em Java
concreta
}
}
Cdigo 103: Classe concreta 2
131 |
www.borgesrinolfi.com.br
Programao em Java
UML
do
padro
faade
132 |
www.borgesrinolfi.com.br
Programao em Java
133 |
Classe do exemplo
ArquivoFacade.java
Classe principal, mtodo main
OutputStream,
FileOutputStream,
OutputStreamWriter
e
BufferedWriter para o
mtodo
gravarArquivo(String
msg, String caminho)
InputStream,
FileInputStream,
InputStreamReader
e
BufferedReader para o
mtodo lerArquivo(String
caminho)
www.borgesrinolfi.com.br
Programao em Java
Java");
//criamos uma nova linha (como se
apertamos a tecla enter
//Obs.:
o
Writer
no
aceita
quebra de linha como o '\n'
bwriter.newLine();
//segunda linha do arquivo
bwriter.write("Capitulo de Input
e Output");
//fecha o buffer para liberar o
arquivo
134 |
www.borgesrinolfi.com.br
Programao em Java
bwriter.close();
} catch (Exception e) {
System.err.println("Erro:
e.getMessage());
e.printStackTrace();
}
}
"
texto
www.borgesrinolfi.com.br
"
Programao em Java
}
Cdigo 105: Implementao da classe Facade,
encapsulando a lgica de gravao e leitura de arquivos
136 |
www.borgesrinolfi.com.br
Programao em Java
10.
137 |
Referencias
http://docs.oracle.com/javase/tutorial/java/nutsan
dbolts/datatypes.html - 02/10/2012 - 23:07
http://docs.oracle.com/javase/tutorial/java/nutsan
dbolts/variables.html
http://docs.oracle.com/javase/tutorial/java/nutsan
dbolts/flow.html
www.borgesrinolfi.com.br
Programao em Java
ndice de Figuras
Figura 1: MeuPrograma.java ......................................... 9
Figura 2: MeuPrama.java passa por um compilador ..... 9
Figura 3: Esquema de compilao Java...................... 10
Figura 4: Funcionamento multiplataforma Java ........... 11
Figura 5: Prompt de comando do Windows................. 13
Figura 6: Verifique o diretrio onde se localiza o arquivo
................................................................................... 13
Figura 7: Arquivo compilado .class e cdigo fonte .java
................................................................................... 14
Figura 8: Resultado da execuo do primeiro programa
................................................................................... 15
Figura 9: Troca de mensagem, principio bsico da
Orientao a Objetos .................................................. 35
Figura 10: Representao de objetos do mundo real .. 36
Figura 11: Classe estrutura que se pode gerar vrios
objetos ........................................................................ 37
Figura 12: Classes Funcionario.java e Cliente.java tem
atributo iguais ............................................................. 50
Figura 13: Herana, unificando as caractersticas
comuns na superclasse Pessoa.java .......................... 50
Figura 14: Herana de Pessoa, Funcionario e Cliente 55
Figura 15: Herana com a distribuio do mtodo
imprimir ....................................................................... 56
Figura
16:
Modelagem
UML
da
interface
GeraEtiquetas.java ..................................................... 62
Figura 17: Podemos agora incluir no modelo mais uma
classe para gerar etiquetas, independente da herana
................................................................................... 65
138 |
www.borgesrinolfi.com.br
Programao em Java
139 |
www.borgesrinolfi.com.br
Programao em Java
ndice de Tabelas
Tabela 1: Tipos primitivos existentes em Java ............ 18
Tabela 2: Tipos de Casting possveis .......................... 22
Tabela 3: Operadores de Atribuio............................ 24
Tabela 4: Operadores Relacionais em Java ................ 27
Tabela 5: Operadores Lgicos em Java ...................... 27
Tabela 6: Elementos do padro Factory e do exemplo
prtico ....................................................................... 124
Tabela 7: Compoentes do Padro Faade e exemplo
real............................................................................ 134
140 |
www.borgesrinolfi.com.br
Programao em Java
ndice de Cdigos
Cdigo 1: Fonte da classe OlaMundo.java .................. 12
Cdigo 2: Compilando a classe OlaMundo.java .......... 14
Cdigo 3: Executando um programa java ................... 15
Cdigo 4: Forma de declarao de varivel ................ 19
Cdigo 5: Exemplo de declarao de varivel............. 20
Cdigo 6: Declarao de constantes........................... 20
Cdigo 7: Atribuindo valores ....................................... 20
Cdigo 8: Atribuio de valor em um segundo momento
................................................................................... 21
Cdigo 9: Erro por tipos de dados incompativeis ........ 21
Cdigo 10: Casting de tipo de dados .......................... 21
Cdigo 11: Outros tipos de casting de variaveis.......... 22
Cdigo 12: Operadores aritmticos em Java .............. 23
Cdigo 13: Incrementando um nmero ....................... 25
Cdigo 14: Incrementando um numero de forma mais
limpa no cdigo ........................................................... 25
Cdigo 15: Utilizando ps-incremento em java ........... 25
Cdigo 16: Estrutura if-else ......................................... 29
Cdigo 17: Estrutura if-else aninhada ......................... 29
Cdigo 18: Estrutura do comando switch .................... 30
Cdigo 19: Estrutura do comando while ...................... 31
Cdigo 20: Estrutura do comando DO-WHILE ............ 32
Cdigo 21: Estrutura do comando FOR ...................... 32
Cdigo 22: Estrutura do For-each ............................... 33
Cdigo 23: Cdigo da classe Pessoa.java .................. 38
Cdigo 24: Estrutura de declarao de varivaies ........ 38
Cdigo 25: Estrutura bsica de um mtodo ................ 39
141 |
www.borgesrinolfi.com.br
Programao em Java
142 |
www.borgesrinolfi.com.br
Programao em Java
www.borgesrinolfi.com.br
Programao em Java
144 |
www.borgesrinolfi.com.br
Programao em Java
www.borgesrinolfi.com.br
Programao em Java
146 |
www.borgesrinolfi.com.br