Académique Documents
Professionnel Documents
Culture Documents
ndice
1 - Introduo .................................................................................................................................. 6
1.1 - A Linguagem Java .................................................................................................................. 6
1.2 - Plataforma Java ....................................................................................................................... 7
1.3 - Viso geral do Java Standard Edition ..................................................................................... 8
1.4 - Java Virtual Machine .............................................................................................................. 9
1.5 - Compilando um cdigo em linha de comando ....................................................................... 9
1.6 - Linhas de comentrio em Java .............................................................................................. 11
2 - A linguagem Java ................................................................................................................... 12
2.1 - Palavras Chave...................................................................................................................... 12
2.2 - Variveis ............................................................................................................................... 12
2.3 - Tipos Primitivos.................................................................................................................... 13
2.4 - Tipos Inteiros (byte, short, int ou long) ................................................................................ 14
2.5 - Tipos Ponto Flutuante (float ou double) ............................................................................... 16
2.6 - Tipo Caractere (char) ............................................................................................................ 18
2.7 - Tipo Booleano (boolean) ...................................................................................................... 20
2.8 - Casting .................................................................................................................................. 20
2.9 - Scanner ................................................................................................................................. 22
2.10 - Operadores ............................................................................................................................ 25
2.10.1 - Operadores aritmticos .................................................................................................. 25
2.10.2 - Operadores de atribuio ............................................................................................... 31
2.10.3 - Operadores unrios ........................................................................................................ 41
2.10.4 - Operadores lgicos ........................................................................................................ 44
2.10.5 - Operadores relacionais .................................................................................................. 48
2.10.6 - Operador condicional .................................................................................................... 55
2.10.7 - Operadores bit a bit ....................................................................................................... 56
2.11 - Exerccios ............................................................................................................................. 64
3 - Estruturas de controle e repetio ................................................................................... 67
3.1 - if / else................................................................................................................................... 67
3.2 - switch .................................................................................................................................... 70
3.3 - while ..................................................................................................................................... 73
3.4 - do / while .............................................................................................................................. 75
3.5 - for .......................................................................................................................................... 76
3.6 - Enhanced for ou for-each .................................................................................................. 79
3.7 - A instruo break .................................................................................................................. 80
3.8 - A instruo continue ............................................................................................................. 81
Exerccios ............................................................................................................................................ 82
4 - Classe e Objeto........................................................................................................................ 85
4.1 - Objetos .................................................................................................................................. 87
4.2 - Utilizando os atributos da classe........................................................................................... 89
4.3 - Mtodos com retorno de valor .............................................................................................. 91
4.4 - Mtodos com recebimento de parmetro .............................................................................. 94
4.5 - Mtodos construtores ............................................................................................................ 97
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai -2-
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai -3-
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai -4-
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai -5-
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
1- Introduo
A Linguagem JAVA surgiu a partir de uma pesquisa financiada pela Sun Microsystems
em 1991, iniciada sob o codinome de projeto Green.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai -6-
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai -7-
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
H dois principais produtos dentro da plataforma Java SE: Java Runtime Environment
(JRE) e Java Development Kit (JDK).
- O JRE fornece a Java Virtual Machine, bibliotecas e outros componentes para
executar aplicaes escritas em Java.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai -8-
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
- O JDK contm tudo que tem na JRE, mais ferramentas adicionais para desenvolver
(compilar e debugar) aplicaes feitas em Java.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai -9-
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
javac PrimeiraClasse.java
A aplicao javac responsvel por compilar o arquivo .java gerando o arquivo .class
de bytecode.
Aps a execuo deste comando, um arquivo com bytecode Java ser criado em
disco, com o seguinte nome: PrimeiraClasse.class.
Um ponto importante da linguagem que ele case sensitive, ou seja, a letra a em
minsculo diferente da letra A em maisculo.
Caso escrevemos o cdigo Java, como por exemplo, Public com P maisculo ou
string com o s minsculo teremos um erro de compilao e para os iniciantes na
linguagem este um dos maiores problemas encontrados durante a compilao.
Agora para executarmos nosso novo arquivo compilado Java, basta submet-lo a
mquina virtual Java, atravs do seguinte comando:
java PrimeiraClasse
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 10 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
/**
* Javadoc
* Mais informaes sobre o Javadoc no apndice B.
*/
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 11 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
2- A linguagem Java
Java possui algumas palavras chaves que so da linguagem e no podem ser usados
como nome de variveis, mtodos e classes.
Durante as aulas veremos como utilizar estas palavras chave, note que todas palavras
chaves so escritas em minsculo.
As palavras chave const e goto foram criadas, mas no possuem nenhuma
funcionalidade.
2.2 - Variveis
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 12 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Valores Possveis
Valor
Tipos Primitivo Menor Maior Padro Tamanho Exemplo
byte -128 127 0 8 bits byte ex1 = (byte)1;
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 13 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Inteiro em octal
Qualquer valor escrito utilizando nmeros de 0 a 7 comeando com 0 um valor na
base octal, exemplo:
Inteiro em decimal
Qualquer valor escrito utilizando nmeros de 0 a 9 um valor decimal, este o tipo de
representao mais comum uma vez que utilizada no dia a dia, exemplo:
int i = 9;
long b = 9871342132;
Inteiro em hexadecimal
Qualquer valor escrito utilizando nmeros de 0 a 9 e A a F comeando com 0x ou 0X
um valor hexadecimal, exemplo:
Quando um precisa ser especificado como um long ele pode vir acompanhado por l ou
L depois do seu valor, exemplo:
long a = 0Xcafel;
long b = 0752L;
long c = 987654321L;
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 14 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 15 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Tipos de ponto flutuante serve para representar nmeros com casas decimais, tanto
negativos quanto positivos. Todos nmeros com ponto flutuante so por padro do tipo
double, mas possvel especificar o tipo do valor durante a criao, para float utilize f ou F e
se quiser pode especificar para double usando d ou D, exemplo:
float a = 10.99f;
double b = 10.3D;
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 16 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 17 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O tipo caractere, como o prprio nome j diz, serve para representar um valor deste
tipo. Sua inicializao permite 2 modelos:
char a = a;
char b = 97; //Equivale a letra a
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 18 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 19 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Tipo que representa valores lgicos true (verdadeiro) ou false (falso), exemplo:
boolean a = true;
boolean b = false;
Os palavras true, false e null representam valores bsicos e no podem ser utilizados
na declarao de atributos, mtodos ou classes.
2.8 - Casting
Para fazer um casting, basta sinalizar o tipo para o qual se deseja converter entre
parnteses, da seguinte forma:
float c = 100;
Converso de int para float implcito, no precisa de casting.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 20 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
int d = d;
Converso de char para int implcito, no precisa de casting.
O casting ocorre implicitamente quando adiciona uma varivel de um tipo menor que o
tipo que receber esse valor.
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 21 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
2.9 - Scanner
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 22 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 23 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 24 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
OBS: Quando queremos ler um nmero com casa decimal via console, precisamos
digitar o numero utilizando vrgula ( , ), exemplo: 10,50. Quando criamos uma varivel dentro
do programa e definimos seu valor com casa decimal, precisamos utilizar o ponto ( . ) como
separador, exemplo: 10.50.
2.10 - Operadores
<operando1> + <operando2>
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 25 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 26 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
<operando1> - <operando2>
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 27 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
<operando1> * <operando2>
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 28 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
<operando1> / <operando2>
Exemplo:
Neste caso ser impresso o valor 1.5 que o resultado da diviso de 3.0 / 2, pois o
operando 3.0 do tipo double.
Depois ser impresso o valor 1 que o resultado da diviso da varivel a / varivel b,
note que neste caso ambos so inteiros ento o resultado da diviso um valor inteiro.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 29 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
<operando1> % <operando2>
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 30 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste caso ser impresso o valor 0.5 que o resto da diviso de 4.5 / 2, note que
neste caso um operando possui casa decimal.
Depois ser impresso o valor 2 que o resto da diviso da varivel a / varivel b,
note que neste caso ambos so inteiros ento o resultado da diviso um valor inteiro.
<varivel> = <operando>
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 31 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 32 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 33 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Smbolo += utilizado para atribuir a uma varivel o valor desta varivel somada ao
valor de um operando.
<varivel> += <operando>
Exemplo:
Neste caso a varivel x comea com o valor 4, depois a varivel x recebe o valor dela
somado ao valor 2, portanto a varivel x fica com o valor 6.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 34 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Smbolo -= utilizado para atribuir a uma varivel o valor desta varivel subtraindo o
valor de um operando.
<varivel> - = <operando>
Exemplo:
Neste caso a varivel x comea com o valor 4, depois a varivel x recebe o valor dela
subtrado pelo valor 2, portanto a varivel x fica com o valor 2.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 35 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Smbolo *= utilizado para atribuir a uma varivel o valor desta varivel multiplicado
com o valor de um operando.
<varivel> *= <operando>
Exemplo:
Neste caso a varivel x comea com o valor 3, depois a varivel x recebe o valor dela
multiplicado pelo valor 5, portanto a varivel x fica com o valor 15.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 36 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Smbolo /= utilizado para atribuir a uma varivel o valor desta varivel dividido pelo
valor de um operando.
<varivel> /= <operando>
Exemplo:
Neste caso a varivel x comea com o valor 4, depois a varivel x recebe o valor dela
dividido pelo valor 3, portanto a varivel x fica com o valor 1.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 37 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Caso utilize uma varivel de ponto flutuante, ento a diviso retorna um valor com
casa decimal, exemplo:
Neste caso a varivel x ter o valor 1 impresso e a varivel y ter o valor 1.3333334
impresso.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 38 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Smbolo %= utilizado para atribuir a uma varivel, o valor do resto da diviso desta
varivel por um operando.
<varivel> %= <operando>
Exemplo:
Neste caso a varivel x comea com o valor 4, depois a varivel x recebe o resto da
diviso dela pelo valor 3, portanto a varivel x fica com o valor 1.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 39 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Caso utilize uma varivel de ponto flutuante, ento o resto da diviso retorna um valor
com casa decimal, exemplo:
Neste caso a varivel x ter o valor 1 impresso e a varivel y ter o valor 0.67
impresso.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 40 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
++ <varivel>
Primeiro incrementa a varivel depois devolve seu valor.
<varivel> ++
Primeiro devolve o valor da varivel depois incrementa seu valor.
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 41 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
-- <varivel>
Primeiro decrementa o valor da varivel, depois devolve seu valor.
<varivel> --
Primeiro devolve o valor da varivel, depois ela decrementada.
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 42 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 43 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Tabela verdade:
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 44 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste caso ser impresso false, pois a varivel a true e a varivel b false,
depois ser impresso true, pois ambas variveis a e c so true.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 45 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Smbolo || chamado de OU. Este operado retorna true caso tenha pelo menos um
operando com o valor true.
<operando1> || <operando2>
Tabela verdade:
Exemplo:
Neste caso ser impresso primeiro true, pois a varivel a tem o valor true, depois
ser impresso false, pois as variveis b e c so false.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 46 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
! <operando>
Tabela verdade:
Operando Resultado
false true
true false
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 47 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste caso primeiro ser impresso false, que a negao de true, depois ser
impresso true, que a negao do resultado de b || c que false.
Retorna true se o valor do operando1 for maior que o valor do operando2, caso
contrario retorna false.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 48 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Exemplo:
Neste caso ser impresso true, pois o valor da varivel a maior que o valor da
varivel b.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 49 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Retorna true se o valor do operando1 for menor que o valor do operando2, caso
contrario retorna false.
Exemplo:
Neste caso ser impresso false, pois o valor da varivel a no menor que o valor
da varivel b.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 50 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
<operando1> == <operando2>
Exemplo:
Neste caso ser impresso true, pois o valor da varivel a igual ao valor da varivel
b.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 51 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Retorna true se o valor do operando1 for maior ou igual que o valor do operando2,
caso contrario retorna false.
Exemplo:
Neste caso ser impresso true, pois o valor da varivel a maior que valor da
varivel b e depois ser impresso true novamente, pois o valor da varivel a igual ao valor
da varivel c.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 52 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Retorna true se o valor do operando1 for menor ou igual que o valor do operando2,
caso contrario retorna false.
Exemplo:
Neste caso ser impresso true, pois o valor da varivel a menor ou igual ao valor
da varivel b.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 53 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
<operando1> != <operando2>
Neste caso ser impresso true, pois o valor da varivel a diferente do valor da
varivel b e depois ser impresso false, pois o valor da varivel b igual ao valor da
varivel c.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 54 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 55 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Para este operador no importa se algum dos operando tem o valor false, ele vai
verificar todos os operandos que houver na expresso.
Exemplo:
Neste caso ser impresso o valor false, e o operador & ira comparar o valor de todas
variveis.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 56 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Se usarmos valores inteiros, por exemplo ele ira comparar cada bit, exemplo:
Neste caso ser impresso o valor 6, porque o operador & vai comparar cada bit na base
binria e depois a mesma convertida para a base decimal.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 57 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
Tabela verdade:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 58 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
<operando1> | <operando2>
Para este operador no importa se algum dos operando tem o valor true, ele vai
verificar todos os operando que tiver na expresso.
Exemplo:
Neste caso o valor impresso ser true, e o operador | ira comparar o valor de todas
variveis.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 59 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Se usarmos valores inteiros, por exemplo ele ira comparar cada bit, exemplo:
Neste caso ser impresso o valor 31, porque o operador | vai comparar cada bit na base
binria e depois a mesma convertida para a base decimal.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 60 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
Tabela verdade:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 61 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
<operando1> ^ <operando2>
Se usarmos valores inteiros, por exemplo ele ira comparar cada bit, exemplo:
Neste caso ser impresso o valor 25, porque o operador ^ vai comparar cada bit na base
binria e depois a mesma convertida para a base decimal.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 62 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1
Tabela verdade:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 63 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
2.11 - Exerccios
a)
b)
c)
d)
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 64 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
e)
1 class Teste {
2 public static void main(String args) {
3 System.out.println(args);
4 }
5 }
a) No imprime nada.
b) Erro de compilao na linha 2
c) Imprime o valor de args
d) Exceo na thread "main" java.lang.NoSuchMethodError: main
e) Erro em tempo de execuo.
1 class Soma{
2 int x, y, z;
3 public static void main (String[] args) {
4 System.out.println(x + y + z);
5 }
6 }
a) No imprime nada
b) Imprime: null
c) Imprime: 0
d) Erro de compilao
e) Erro em tempo de execuo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 65 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
1 class Teste {
2 public static void main(String[] args) {
3 char a = 'a'; // 'a' = 97
4 char b = 'b'; // 'b' = 98
5
6 System.out.println(a + b + "" + b + a);
7 }
8 }
a) abba
b) 97989897
c) 195ba
d) ab195
e) 390
f) Erro de Compilao
g) Erro em tempo de execuo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 66 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Estrutura de Controle
3.1 - if / else
Na linguagem Java, esta estrutura pode ser utilizada de diversas maneiras, conforme
listadas abaixo.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 67 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
No exemplo abaixo verificamos se o valor da varivel idade maior ou igual que 18,
caso a condio for verdadeira ento entra no bloco do if, caso contrario entra no bloco do
else.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 68 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 69 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste caso criado uma varivel chamada xpto dentro do bloco do if, ento esta
varivel pode ser utilizada somente dentro do if, no pode ser usada no else e nem fora do
bloco.
OBS: Este conceito de variveis criadas dentro de blocos { } funciona para todos os
blocos.
3.2 - switch
switch( varivel ) {
case <possvel valor da constante> :
< instrues>
break;
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 70 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
default:
< instrues>
break;
}
Cada case um caso onde os comandos dentro dele so executados se o valor dele
for o mesmo que a varivel recebida no switch.
importante lembrar que a utilizao do comando break facultativa, porem
indispensvel caso se queira que apenas aquele bloco seja executado e no todos os
demais abaixo dele.
O bloco de comandos default representa uma condio geral de execuo caso
nenhuma das anteriores tenha sido atendida, sendo a sua utilizao tambm opcional.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 71 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste caso ser impresso a mensagem Aluno reprovado !, pois nenhum dos
cases foi atendido, ento a estrutura default foi executada.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 72 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Estruturas de repetio
3.3 - while
while(condio) {
< instrues >
}
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 73 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Exemplo:
Neste caso sero impressos os valores de 1 a 10, e depois quando a varivel i possuir
o valor 11 a condio do while ser falso (false) e sua estrutura no mais executada.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 74 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
3.4 - do / while
A estrutura do / while tem seu bloco de instrues executados pelo menos uma vez,
ento se a condio ao final das instrues for true, ento o bloco de instrues executado
novamente.
do {
< instrues >
} while(condio);
Exemplo:
Neste caso, ser pedido ao usurio digitar um nmero, e enquanto o nmero digitado
for diferente de 3, ento o bloco executado novamente.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 75 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
3.5 - for
Utilizamos a rea inicializao para criar variveis ou atribuir valores para variveis j
declaradas, mas todas as variveis precisam ser do mesmo tipo, est rea executada
antes de comear a estrutura de repetio do for.
Utilizamos a rea condio de execuo para definir a lgica de parada da estrutura
de repetio for.
Utilizamos a rea ps-instrues para executar alguma ao que deve ocorrer cada
vez que as instrues dentro for forem executados.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 76 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Exemplo:
Neste caso ser impresso o valor da varivel i e informando se este valor par ou
impar.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 77 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 78 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Muitas vezes o for utilizado para percorrer um array ou uma coleo de objetos,
para facilitar seu uso foi adicionado na verso 5 do Java o enhanced for.
Exemplo:
Neste caso o primeiro enhanced for vai percorrer um array de Strings e imprimir os
valores Altrano, Beltrano, Celtrano e Deltrano.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 79 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Depois ira percorrer uma lista de inteiros imprimindo os valores 100, 322 e 57.
O comando break uma instruo de interrupo imediata de qualquer lao, seja ele
qual for e idependente de sua condio de parada ter sido atendida.
Vamos ao exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 80 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Observe que, segundo o condicional da linha 21, caso um nmero invlido seja digitado
o lao FOR iniciado na linha 20 ser abortado imediatamente devido a instruo break
existente na linha 23. Uma vez executado o cdigo acima, a seguinte sada ser projetada
caso o usurio digite o nmero 5:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 81 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Note que o cdigo acima bem semelhante ao anterior, porm observe que desta vez,
ao invez de interroper o lao caso o usurio digite o nmero 5 ele ir contar de 1 at o
nmero digitado pelo usurio. Caso ele passe pelo nmero 5, conforme o condicional da
linha 21, ele ir imprimir em tela a mensagem da linha 22 e saltar o restante do cdigo e
retornar ao incio do lao na linha 20.
Exerccios
Nmero: 13
Dgitos: 2
Nmero: 321
Dgitos: 3
2) Escreva um programa que leia um numero positivo inteiro entre 1 e 99999999999, depois
este nmero deve ser decomposto e seus dgitos devem ser somado, de forma que enquanto
o nmero tiver mais que um digito ele deve continuar sendo decomposto, exemplo:
Nmero: 59765123
Decompondo: 5 + 9 + 7 + 6 + 5 + 1 + 2 + 3
Soma dos nmeros: 38
Decompondo: 3 + 8
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 82 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Decompondo: 1 + 1
Soma dos nmeros: 2
3) Escreva um programa que leia um nmero positivo inteiro na base 10 e imprima seu valor
na base 2, exemplo:
Base10: 123
Base2: 01111011
4) Escreva um programa que leia um nmero positivo inteiro e calcule o valor do Fibonacci
desse numero.
switch(num) {
1:
System.out.println(1);
2:
System.out.println(2);
3:
System.out.println(3);
4:
System.out.println(4);
break;
default:
System.out.println(default);
}
}
}
a) Imprime 2
b) Imprime 234
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 83 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
c) Imprime 234default
d) Erro de compilao
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 84 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
4- Classe e Objeto
Uma classe no Java representa um modelo ou forma do mundo real que se queira
reproduzir no ambiente de desenvolvimento. Pensando desta forma muito fcil entender e
pensar sobre como se projetar um sistema com orientao a objetos.
Quando pensamos em desenvolver um sistema voltado a locao de veculos, por
exemplo, a primeira classe que vem a tona uma que possa representar a figura do carro no
seu sistema, da temos ento nossa primeira classe.
Nome da Classe
o Item responsvel por identificar a classe. Este nome ser utilizado toda a vez
em que se for utilizar um objeto deste tipo. importante ressaltar a utilizao
de letra maiscula na primeira letra do nome da classe e as demais minsculas.
Caso o nome de sua classe seja composto por mais de uma palavra, coloque
sempre a primeira letra de cada palavra em letra maiscula. Isto no uma
obrigatoriedade do JAVA; apenas uma boa prtica de desenvolvimento que
visa melhorar a legibilidade do cdigo.
Atributos
o So valores que possam representar as propriedades e/ou estados possveis
que os objetos desta classe podem assumir. Por conveno, costuma-se
escrever o atributo com letras minsculas, a menos que ele seja composto por
mais de uma palavra, a primeira palavra toda em minscula e as demais
comeam com a primeira letra em maisculo e o restante da palavra em
minscula.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 85 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Mtodos
o So blocos de cdigo que possam representar as funcionalidades que a classe
apresentar. Assim como os atributos, costuma-se escrever o atributo com
letras minsculas, a menos que ele seja composto por mais de uma palavra.
Neste caso, a mesma regra citada nos nomes de Atributo tambm vlida.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 86 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
4.1 - Objetos
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 87 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
OBS: a partir desse mtodo main que nosso programa Java comea a execuo.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 88 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
No exemplo abaixo criamos a classe Atributo e dentro dela declaramos trs atributos
diferentes:
Na linha 10 criamos um atributo para guardar um valor inteiro do tipo int com o nome
atributo1, por enquanto utilize a palavra-chave public na declarao do atributo, nas
prximas aulas veremos o que isto significa.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 89 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 11 criamos um atributo para guardar um valor com ponto flutuante do tipo
float com o nome atributo2.
Na linha 12 criamos um atributo para guardar um valor booleano chamado atributo3.
No exemplo abaixo vamos criar um objeto da classe Atributo e atribuir valores para
as variveis, depois vamos imprimir os valores delas:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 90 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Assim como j deve ter sido visto na linguagem C (em functions), os mtodos das
classes em Java tambm so capazes de retornar alguma informao decorrente de seu
processamento.
Para que seja possvel realizar o retorno do mtodo, primeiramente necessrio
declarar qual o tipo de retorno ser realizado pelo mtodo, no exemplo abaixo criamos dois
mtodos:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 91 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Note que no ponto onde at a pouco utilizvamos a palavra-chave void (que significa
vazio ou sem retorno) no retorno do mtodo, agora utilizamos a palavra-chave int. Essa
mudana na declarao significa que pretendemos que este mtodo retorne para quem o
chamou um valor do inteiro tipo int.
Porm, para que o mtodo realmente retorne algum valor, necessrio identificar qual
valor ser retornado. Para tal, faremos uso da palavra-chave return, da seguinte forma:
Com isso temos agora o metodo1() que retornar o valor do atributo1 que do tipo
int.
importante lembrar que, uma vez declarado um retorno para o mtodo, obrigatrio
que este retorno acontea. O fato de no se enviar um retorno resulta em um erro de
compilao.
No metodo2() verificamos se o atributo1 maior ou igual a 0 (zero), e retornamos a
resposta dessa verificao, ou seja, true (verdadeiro) ou false (falso).
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 92 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 93 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
No exemplo abaixo criamos dois mtodos que recebem parmetros e utilizam esses
parmetros no processamento do mtodo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 94 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
A sintaxe do varargs :
tipo... identificador
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 95 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 96 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 97 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 98 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 99 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 100 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
4.6 - Exerccios
/**
* Classe utilizada para representar um vetor, onde podemos
* localizar o valor do maior elemento, menor elemento e
* media dos elementos do vetor.
*
* @author <<Nome>>
*/
public class Vetor {
int[] valores;
/**
* Testa a classe Vetor.
*
* @author <<Nome>>
*/
public class TesteVetor {
public Vetor(int[] _valores) {
System.out.println("\nCriando um objeto da classe Vetor e inicializando o vetor de inteiros.\n");
valores = _valores;
}
vetor.localizarMaior();
vetor.localizarMenor();
vetor.calcularMedia();
}
}
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 101 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
2. Crie uma classe que representa uma conta bancaria que possua o nmero da
conta e saldo. Est classe tambm deve executar os seguintes mtodos:
extrato (Mostra na tela o nmero e o saldo da conta)
saque (Recebe como parmetro um valor e retira este valor do saldo da conta)
deposito (recebe como parmetro um valor e adiciona este valor ao saldo da
conta)
Ao final das operaes saque e deposito, sua classe deve imprimir o nmero e o
saldo da conta.
3. Crie uma classe que representa uma calculadora, est calculadora deve ter os seguintes
mtodos:
soma (recebe dois nmeros e mostra o valor da soma)
subtrao (recebe dois nmeros e mostra o valor da subtrao entre eles)
diviso (recebe dois nmeros e mostra o valor da diviso entre eles)
multiplicao (recebe dois nmeros e mostra o valor da multiplicao entre eles)
resto (recebe dois nmeros e mostra o valor do resto da diviso entre esses dois
nmeros)
4. Crie uma classe Televisor. Essa classe deve possuir trs atributos:
canal (inicia em 1 e vai at 16)
volume (inicia em 0 e vai at 10)
ligado (inicia em desligado ou false)
Nos mtodos informe se possvel realizar a operao, por exemplo, se o volume estiver
no 10 e chamar o mtodo aumentarVolume() novamente imprima uma mensagem de aviso,
etc.
Quando desligado, nosso televisor deve voltar o canal e o volume a seus valores iniciais e
no deve realizar nenhuma operao.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 102 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
5- A Classe java.lang.String
Para fazer concatenao de Strings podemos usar o sinal + ou usar o mtodo concat
da classe String, por exemplo:
O valor de uma String imutvel, no pode alterar seu valor, quando alteramos o valor
de uma String, estamos criando uma nova String.
Ento quando fazemos:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 103 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Teremos um erro de compilao, pois estamos deixando uma aspas duplas fora do
texto.
Para os caracteres que no podem ser simplesmente adicionados dentro da String,
usamos a barra invertida \ como escape de caracteres. Segue abaixo uma tabela com alguns
escapes de caracteres e o que eles representam dentro da String.
\t Tabulao horizontal
\n Nova linha
\ Aspas duplas
\ Aspas simples
\\ Barra invertida
Este cdigo lanar uma NullPointerException, pois a String abc est vazia (null), e
est tentando invocar o mtodo equals() de um String null (excees sero abordadas).
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 104 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Para transformar qualquer tipo primitivo para String, basta utilizar o mtodo:
Para utiliz-lo, voc deve atribuir a sada do mtodo a uma String, e preencher o
campo interno do mtodo com o valor desejado. Exemplo:
int numero = 4;
String texto = String.valueOf(numero);
Observe, que na segunda linha, a varivel do tipo inteira est sendo utilizada no
mtodo valueOf() para que a converso possa ser executada, e o resultado da converso
est sendo atribuda a String chamada texto.
O mtodo valueOf() pode converter os seguintes tipos para String:
Note que os tipos byte e short no constam nesta lista, logo, para realizar a sua
converso necessrio transformar estes tipos primeiramente em int e s ento convert-los
para String.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 105 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Assim como tratamos da manipulao de tipos de valores primitivos para String, nesta
seo falaremos sobre a converso de tipos primitivos para String.
Em Java possvel transformar qualquer String em um tipo primitivo, para tal
necessrio utilizar um dos conversores especficos de cada tipo... so eles:
Quando executamos uma classe que possui o mtodo public static void
main(String[] args), podemos passar parmetros para este mtodo.
Para passar os parmetros para o mtodo main via console utilizamos a seguinte
sintaxe:
No exemplo abaixo criamos um programa que recebe alguns nomes como parmetro:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 106 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 107 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 108 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
5.4 - Exerccios
Exemplo:
- frase: "Ola meu nome {0} e eu tenho {1} anos"
- qtd parametros: 2
- valores dos parametros separados por virgula: Rafael,25
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 109 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
6- Identidade e Igualdade
Quando declaramos uma varivel a partir de um objeto, estamos criando uma varivel
que serve de meio de acesso ao nosso objeto (em memria), ou como chamamos, uma
referncia.
Exatamente por este motivo, sempre que declaramos um novo objeto, temos de
utilizar o comando new, pois o mesmo ir efetivamente criar o novo objeto em memria e
fornecer o seu endereo a varivel declarada.
O comando new recebe um parmetro que um construtor de classe.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 110 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O correto dizer que manuel uma referncia a um objeto do tipo Pessoa e no que
manuel o objeto propriamente dito.
Com isso, podemos afirmar que em Java uma varivel nunca um objeto, ela apenas
ser a representao de um tipo primitivo ou uma referncia a um objeto.
Com esta idia em mente, seguiremos com o seguinte exemplo:
Agora por que a idade de Paulo foi exibida como 25, sendo que apenas
incrementamos a idade de Pedro?
Na verdade copia o valor da varivel paulo, para a varivel pedro. Por este motivo,
como falamos acima, ele copia a referncia de um objeto de uma varivel para outra. Seria
como imaginarmos a figura abaixo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 111 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Nesta figura podemos notar que, como ambas as variveis apontam para o mesmo
objeto, qualquer operao realizada atravs da referncia pedro, tambm refletir na
referncia paulo.
Esta comparao vai retornar true, pois ambas variveis paulo e pedro esto
apontando para o mesmo objeto da memria.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 112 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste exemplo ser impresso As duas Strings so iguais, pois o contedo das
Strings so iguais.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 113 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Quando criamos uma nova classe, est classe tem um mtodo equals() que vem da
classe java.lang.Object. (A classe Object ser discutida mais a frente no tpico de herana).
O mtodo equals(), que existe na classe que criamos, tem a mesma funo que a
igualdade ( == ). Caso precisemos saber se duas instancias desta mesma classe so
iguais, ento temos de sobrescrever o mtodo equals().
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 114 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
7- Assinatura de Mtodos
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 115 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 116 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Note que na chamada ao mtodo realizado na linha 11, o mtodo alterarCanal() est
sendo invocado com passagem de um parmetro inteiro, logo o mtodo da classe Televisao
a ser executado seria:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 117 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Assim como mencionado acima, o que identifica a assinatura do mtodo a unio das
informaes de nome do mtodo e parmetros, logo os seguintes mtodos listados abaixo
seriam considerados erros de compilao:
Visto que seus nomes e argumentos so idnticos, mudando apenas o tipo de retorno.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 118 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linguagem Java possvel que objetos distintos se relacionem entre si por meio de
seus mtodos. A este tipo de operao damos o nome de Troca de Mensagens. Este tipo
de relacionamento pode ser representado pela troca de informaes, chamada de execuo
de mtodos, etc.
Para que seja possvel aos objetos se conversarem, necessariamente no preciso
que um objeto esteja contido dentro de outro, formando uma cadeia, mas basta
simplesmente que um referencie os mtodos do outro.
A fim de exemplificar melhor o que estamos falando, vamos imaginar uma mesa de
bilhar. Em um ambiente deste tipo, para que a bola possa se mover necessrio que o taco
a atinja diretamente. Abstraindo esta idia, para ns usurios, o que nos compete apenas o
movimento do taco, sendo que a movimentao da bola ao longo da mesa deve ser realizada
pela imposio do taco.
Agora imagine que o Usurio ser representado pela classe TacoTeste, logo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 119 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 120 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 121 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
7.2 - Varargs
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 122 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 123 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 124 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 125 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
7.3 - Exerccios
1. Crie uma classe chamada Calculadora. Esta classe deve possuir os seguintes
mtodos:
2. Crie uma classe chamada Pessoa sem atributo algum. Para trabalharmos os
conceitos de sobrecarga de mtodos, crie os seguintes mtodos:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 126 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 127 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Crie duas contas, uma do tipo Corrente e outra do tipo Poupana com um
saldo inicial qualquer.
Tente depositar R$ 1.500,00 reais na conta corrente.
Tente depositar R$ 1.500,00 reais na conta poupana.
Deposite R$ 98,52 na conta poupana.
Tente sacar R$ 100,00 da poupana.
Transfira R$ 1.800,00 da corrente para a conta poupana.
Transfira R$ 700,00 da poupana para a conta corrente.
Saque R$ 1.000,00 da poupana.
Saque R$ 1.000,00 da corrente.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 128 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Plain Old Java Object ou POJO, so objetos Java que seguem um desenho
extremamente simplificado. Um POJO um JavaBean que segue definies rgidas
de estrutura, sendo elas:
Possui um construtor default, ou seja, sem argumentos que significa o
mesmo que no possuir construtor algum declarado;
Possui todos os seus atributos, sejam eles tipos primitivos ou objetos,
privados;
No possui mtodos especficos, exceto aqueles que seguem o padro
de getter e setter para seus respectivos atributos
Este padro baseado na idia de que quanto mais simples o projeto, melhor.
O termo foi inventado por Martin Fowler, Rebecca Parsons e Josh MacKenzie em
Setembro de 2000. "Ns queramos saber por que as pessoas eram contra o uso de
objetos regulares em seus sistemas e conclumos que era devido falta de um nome
extravagante para eles. Assim ns demos-lhes um, e funcionou muito bem.". O termo
segue o padro de atribuir um nome para tecnologias que no possuem nenhuma
caracterstica nova.
O termo ganhou aceitao por causa da necessidade de um termo comum e
facilmente inteligvel que contrasta com os complicados frameworks de objetos.
mais atrativo do que o termo bean do Java devido confuso gerada pela
semelhana dos termos JavaBeans e dos EJB (Enterprise JavaBeans).
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 129 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 130 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 131 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
9- Pacotes
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 132 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
br
biblioteca
imagens
model
tela
util
Uma boa pratica para nomes de pacotes utilizar apenas uma palavra como nome do
pacote, por exemplo, biblioteca, pessoa, email, e o nome do pacote escrito em minsculo.
O pacote no pode ter o nome de uma palavra-chave do java e no pode comear
com nmero ou caracteres especiais (exceto $ e _).
Criada ento essa hierarquia, o prximo passo declarar no arquivo da classe o nome
do pacote ao qual ela pertence. Esta declarao deve ser feita obrigatoriamente na primeira
linha do arquivo (sem contar comentrios) da seguinte maneira:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 133 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Note na declarao acima que as pastas foram divididas por pontos. Logo a mesma
hierarquia de pastas deve ser seguida nesta declarao.
Desta forma, os arquivos ficam realmente organizados e, de certa forma, isolados de
outros pacotes. Vale lembrar que, quando criamos uma classe na raiz de nosso projeto esta
classe no possui pacote.
O pacote de desenvolvimento Java j traz consigo muitos pacotes de funes
especificas, sendo alguns eles:
PACOTE DESCRIO
java.lang Pacote usual da linguagem. Importado por padro
java.util Utilitrios da linguagem
java.io Pacote de entrada e sada
java.awt Pacote de interface grfica
java.net Pacote de rede
java.sql Pacote de banco de dados
Quando se est desenvolvendo uma classe e deseja-se utilizar uma classe de outro
pacote, somos obrigados a declarar esta utilizao. Para tal, utilizamos o comando import.
De forma semelhante ao comando package, o comando import deve considerar a
hierarquia de pastas e separ-las por pontos, da seguinte forma:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 134 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste exemplo criado um novo objeto a partir da classe Livro, que est dentro do
pacote br.biblioteca.model, como utilizamos o * no import, podemos utilizar qualquer
classe do pacote model.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 135 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
9.1 - Exerccios
package pessoa.interface.tela;
package pessoa.interface.tela;
package pessoa.interface.tela;
a) Imprime Cristiano
b) Imprime Funcionario Cristiano
c) Erro porque a classe Funcionario no pode usar o mtodo super.getNome();
d) Erro de compilao
e) Erro em tempo de execuo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 136 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
10 - Visibilidade
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 137 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste exemplo temos a classe Email, a partir de outras classes podemos chamar
apenas o mtodo enviarEmail(...), os outros mtodos e atributos da classe no podem ser
usados por outras classes pois tem o modificador private.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 138 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste exemplo conseguimos criar um objeto a partir da classe Email e enviar o email
utilizando o mtodo enviarEmail(...), mas no conseguimos acessar o atributo remetente e
o mtodo enviar(), pois so privados e o compilador gera dois erros de compilao:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 139 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste exemplo temos uma classe Pessoa que no declarou o modificador, portanto o
modificador o default.
Agora se tentarmos utilizar a classe Pessoa, a partir de outro pacote, ter erro de
compilao, pois no tem acesso.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 140 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
protected um modificador um pouco menos restritivo que o default. Com este tipo
modificador, podemos declarar que um atributo ou mtodo visvel apenas para as classes
do mesmo pacote ou para as subclasses daquela classe.
Neste exemplo temos a classe Produto, e est classe tem o atributo nomeProduto e
os mtodos getNomeProduto() e setNomeProduto() que possuem o modificador
protected.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 141 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 142 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Se a classe que est em outro pacote for uma subclasse da classe Produto, ento
est classe recebe atravs da herana os atributos e mtodos protected.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 143 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
OBS: Dentro de um arquivo .java, s pode existir uma classe do tipo public, e est
classe precisa obrigatoriamente ter o mesmo nome que o nome do arquivo .java.
Alm dos modificadores de acesso, temos vrios outros modificadores que sero
abordados futuramente. Abaixo temos uma relao de todos os modificadores e os seus
respectivos impactos quando aplicados a Classes, Mtodos e Atributos.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 144 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
10.5 - Exerccios
package p1;
public class Pessoa {
private String texto = "";
protected void dizer(String texto) {
System.out.println(texto);
}
}
package p2;
public class TestePessoa {
public static void main (String[] args) {
Pessoa p = new Pessoa();
p.dizer("Ola");
}
}
a) Imprime "Ola";
b) No imprime nada
c) No compila
d) Erro em tempo de execuo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 145 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
11 - Encapsulamento
Encapsular, nada mais do que proteger membros de outra classe de acesso externo,
permitindo somente sua manipulao de forma indireta. Isso possvel da seguinte maneira:
Consideremos o seguinte exemplo de uma classe Livro:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 146 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Note que os dois atributos da classe (titulo e autor) so do tipo private, que permite
apenas o acesso destas informaes a partir da prpria classe, logo para que seja possvel
ler ou alterar essas informaes criamos mtodos ditos mtodos assessores ou ento
getters e setters.
A princpio parece ser algo sem muita utilidade, mas desta forma podemos criar
atributos os quais podemos apenas ler informaes ou ainda gerar tratamentos especficos
sempre que outra classe solicita a alterao de um atributo de nossa classe.
Encapsule aquilo que pode ser alterado com freqncia na sua aplicao, exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 147 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Note que os atributos das classes Professor e Aluno so private, dessa forma eles
s podem ser acessados pelas suas classes.
Tambm criamos mtodos set (mtodos utilizados para alterar o valor de uma
propriedade) e get (mtodo utilizado para obter o valor de uma propriedade) para cada
atributo.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 148 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Agora digamos que nosso programinha que busca os alunos e professores esta
funcionando corretamente, e precisamos adicionar outra busca que procura coordenadores
pelo seu nome.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 149 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Para consultar o coordenador pelo nome, precisamos usar um mtodo bem parecido
com o que consulta o aluno e professor, mas se notarmos as classes Aluno, Professor e
Coordenador tem o atributo nome em comum e exatamente por este atributo que os
consultamos.
Se criarmos uma classe Pessoa para ser uma classe Pai dessas classes e se a
classe Pai tiver o atributo nome, ento todas as subclasses recebem este atributo por
herana:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 150 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 151 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 152 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 153 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
11.1 - Exerccios
1- Crie uma classe chamada Comparador. Esta classe no deve possuir nenhum
atributo e nenhum mtodo construtor.
Esta classe deve possuir mtodos capazes de receber dois parmetros, compar-los e
por fim retornar true, caso sejam iguais, e false caso sejam diferentes.
Feito isso, crie uma classe de teste e instancie cinco pessoas com os seguintes
atributos:
1- Joo, 24 anos ( ex: Pessoa pessoa1 = new Pessoa(Joo, 24); )
2- Carlos, 24 anos
3- Joo, 32 anos
4- Joo, 32 anos
5 = 3 (ao invs de utilizar o construtor, inicialize-a com a 3 Pessoa
ex: Pessoa pessoa1 = pessoa3; )
if(1==2)
if(3==4)
if(1.idade == 2.idade)
if(1.nome.equals(4.nome))
if(5==3)
3- Crie uma classe que serve como utilitrio para String, est classe tem um mtodo que
recebe uma String texto e um varargs de String parmetros, voc deve ler atravs da
console, qual o texto, quantos parmetros tem no texto e quais so os parmetros,
exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 154 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 155 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Para testarmos nossa classe, crie uma classe de teste que deve pertencer ao pacote
metodista.poo.aula10, depois instancie um objeto do tipo ContaCorrente.
Teste todas as formas de acesso possveis aos membros da classe ContaBancaria e
ContaCorrente.
Note que a partir da classe de teste voc no dever conseguir instanciar um objeto
do tipo ContaBancaria e que a classe ContaCorrente no dever suportar nenhuma
subclasse.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 156 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
12 - Interfaces
ou
Estes so dois modos de se representar uma interface utilizando a UML, criamos uma
interface chamada Banco, em Java est interface fica do seguinte modo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 157 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Para criarmos uma interface em Java, utilizamos a palavra interface antes do seu
nome.
Na interface declaramos os mtodos de forma abstrata, tendo apenas sua assinatura
e terminando com ponto e vrgula ( ; ) e todos os mtodos precisam ser pblicos.
Podemos declarar atributos, porm todos os atributos de uma interface so constantes
publicas.
Uma interface pode extender (sub-interface) outras interfaces.
Quando uma classe implementa uma interface, est classe obrigatoriamente precisa
implementar todos os mtodos declarados na interface, apenas quando usamos classes
abstratas implementando interface que no precisamos obrigatoriamente implementar todos
os mtodos (Classes abstratas sero vistas mais para frente).
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 158 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 159 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 160 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
BancoSakurai
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 161 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 162 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
BancoCristiano
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 163 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Nesta classe BancoCristiano, podemos ver que ele possui apenas os mtodos
obrigatrios da interface Banco.
Est implementao tem um algoritmo diferente do BancoSakurai, aqui o mtodo
manutencaoConta() tem um valor que ser retirado da conta mesmo que a conta no tenha
mais saldo.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 164 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Assim podemos perceber que a interface serve como uma base, informando os
mtodos mnimos que devem ser implementados e cada classe responsvel pela lgica de
negocio utilizado nos mtodos.
Neste exemplo criamos dois bancos e duas contas e fizemos algumas operaes em
cima das contas e no final imprimimos o extrato das contas.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 165 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Quando usamos uma varivel usando o tipo interface, podemos apenas chamar os
mtodos que possuem na interface, a seguinte linha causar um erro de compilao:
Uma interface em Java, aps sua compilao, tambm gera um arquivo .class, assim
como qualquer outra classe em Java.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 166 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
1- Vamos criar um programa Java para ordenar vrios tipos de objeto diferente,
utilizando o algoritmo de Bubble Sort.
Para isto vamos utilizar uma interface chamada Comparavel, esta interface ir
possuir a assinatura de mtodo que todas as classes que desejam ser comparadas
precisa implementar:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 167 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Vamos criar uma classe que ordena um array de objetos que so do tipo
Comparavel:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 168 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 169 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 170 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Agora vamos criar uma classe para testar a ordenao de um array de Livro.
2- Crie uma classe Animal que possui os atributos especie e raca, faa est
classe implementar a interface Comparavel, e implemente o mtodo comparar
de forma que compare por especie e raca.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 171 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
13 - Herana
Em Java, podemos criar classes que herdem atributos e mtodos de outras classes,
evitando reescrita de cdigo. Este tipo de relacionamento chamado de Herana.
Para representarmos este tipo de relacionamento na linguagem, devemos utilizar a
palavra reservada extends, de forma a apontar para qual classe a nossa nova classe deve
herdar seus atributos e mtodos.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 172 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 173 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 174 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 175 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 176 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Porm note que na linha 21 temos um erro de compilao, pois uma Pessoa nem
sempre um Funcionario, afinal de contas, poderamos ter a seguinte situao:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 177 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Uma classe pode herdar apenas de uma classe (superclasse), quando uma classe
no define explicitamente que est herdando outra classe ento est classe filha de
java.lang.Object, ou seja, a classe Object a classe pai de todas as classes.
Por Object ser pai de todas as classes, todas as classes herdam os seguintes
mtodos dela:
Quando lidamos com classes que possuem a relao de herana, podemos fazer uso
de duas palavras-chave que servem para identificar se estamos utilizando um mtodo e ou
atributo da classe atual ou de sua super classe, estes comandos so:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 178 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 179 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
13.1 - Exercicios
Feito isso, crie mais duas outras classes chamadas Desktop e Notebook, classes filhas
de Computador, com os seguintes atributos e mtodos a mais, alguns sobrescritos:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 180 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Para testarmos nosso ambiente, crie uma classe de teste que instancie trs objetos,
sendo um de cada um dos tipos.
Para atestar a questo da herana, nos objetos dos tipos Notebook e Desktop, faa
chamadas aos mtodos da superclasse Computador como, por exemplo, o mtodo
dizerInformacoes().
Feito isso, crie mais trs subclasses filhas de Veiculo, atribuindo a cada uma delas
um novo atributo e 2 novos mtodos.
Crie um roteiro de testes que comprove o funcionamento de suas classes.
3. Dado as classes abaixo informe qual(is) do(s) modificador(es) de acesso no podem ser
utilizados no mtodo getNome() da classe Funcionrio.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 181 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
class Pessoa {
String nome;
String getNome() {
return this.nome;
}
}
a) private
b) padro (default)
c) protected
d) public
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 182 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
14 - Classes Abstratas
Em Java temos um tipo especial de classe chamado classe abstrata. Este tipo de
classe possui uma caracterstica muito especfica em Java que o de no permitir que novos
objetos sejam instanciados a partir desta classe. Por este motivo, as classes abstratas
possuem o nico propsito de servirem como superclasses a outras classes do Java.
Em Java definimos uma classe como abstrata utilizando a palavra reservada abstract
na declarao da classe, exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 183 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste exemplo vamos criar uma classe abstrata chamada Tela, nesta classe vamos
implementar alguns mtodo que devem ser utilizados por todas as telas do computador de
bordo de um veiculo, como por exemplo, setTitulo() para informar o titulo da tela e
imprimir() que imprime as informaes na tela.
Nesta classe vamos tambm definir a assinatura de um mtodo abstrato chamado
obterInformacao() que deve ser implementado pelas classes filhas.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 184 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 185 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Vamos agora criar a classe TelaKilometragem que ser uma subclasse da classe
abstrata Tela, est classe ser utilizada para mostrar a km atual percorrida pelo veiculo.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 186 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Vamos agora criar a uma classe para testar nossa aplicao. Neste teste vamos criar
um objeto da classe TelaKilometragem e chamar o mtodo imprimir() que est classe
herdou da classe Tela.
Toda classe que herdar (estender) a classe Tela deve implementar o mtodo abstrato
obterInformacao().
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 187 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 188 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
14.1 - Exerccios
Feito isso, desenvolva duas subclasses da classe Animal. Cada uma delas com a
seguinte especificao:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 189 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Feito isso, crie uma classe para testar suas 2 subclasses. Tente instanciar diretamente
a classe Animal. Crie o mtodo abaixo na classe principal, apenas para relembrar o conceito
de generalizao:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 190 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
15 - Excees em Java
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 191 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 192 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
No caso acima, o bloco try, o trecho de cdigo onde uma exceo esperada e o
bloco catch, em correspondncia ao bloco try, prepara-se para pegar a exceo ocorrida e
dar a ela o tratamento necessrio. Uma vez declarado um bloco try, a declarao do bloco
catch torna-se obrigatria.
Na linha 15 o bloco catch declara receber um objeto do tipo Exception, lembrando do
conceito da herana, todas as excees do Java so classes filhas de Exception.
Algo importante de ser comentado, que quando uma exceo ocorre, as demais
linhas de cdigo deixam de ser executadas at encontrar o bloco catch que ir tratar a
exceo.
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 193 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Observemos o exemplo acima. Neste cdigo, caso acontea um erro na linha 16, as
linhas de 17 a 20 no seriam executadas, retornando ento o cdigo a ser executado apenas
a partir da linha 22 (trecho correspondente ao bloco catch).
Uma vez que uma exceo foi tratada por um bloco catch, a execuo do programa
segue normalmente.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 194 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Tambm possvel que voc prprio envie uma exceo em alguma situao
especifica, como por exemplo, em uma situao de login onde o usurio digita
incorretamente sua senha. Para realizarmos tal tarefa necessria a utilizao da palavra
chave throw da seguinte maneira:
throw new << Exceo desejada >>();
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 195 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Note que, assim que a palavra throw for utilizada, a implementao do bloco try /
catch ser obrigatria, caso a exceo em questo seja do tipo checked. Observe tambm
que a palavra reservada new foi utilizada, visto que a exceo um novo objeto que deve
ser criado na memria. Isso se faz necessrio para que a exceo possa ser lanada por
toda a pilha de execuo at que seja devidamente tratada ou acarrete no trmino da
aplicao.
Quando executamos este cdigo temos a seguinte sada no console, note que no
primeiro teste entramos com uma senha invalida abc, portanto foi lanado a exceo, no
segundo teste entramos com a senha valida 123456 e executamos a aplicao por
completo.
Exception.printStackTrace();
Imprime em tela a pilha de execuo. Muito comum para auxiliar no diagnstico de
erros.
Exception.getMessage();
Retorna uma String com a mensagem contida na exceo.
Exception.getClass();
Retorna uma String com o nome complete da classe da exceo.
A palavra chave finally representa um trecho de cdigo que ser sempre executado,
independentemente se uma exception ocorrer. Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 196 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Se digitarmos zero no valor do divisor ser lanado uma exceo, note que o bloco
finally ser executado mesmo que ocorra alguma exceo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 197 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O bloco finally muito utilizado quando queremos liberar algum recurso como, por
exemplo, uma conexo com o banco de dados, um arquivo de dados, etc. Veremos mais
adiante alguns cdigos que fazem uso do finally para este proposito.
Caso em algum mtodo precise lanar uma exceo, mas voc no deseja trat-la,
quer retorn-la para o objeto que fez a chamada ao mtodo que lanou a exceo, basta
utilizar a palavra chave throws no final da assinatura do mtodo.
Quando utilizamos o throws precisamos tambm informar qual ou quais excees
podem ser lanadas
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 198 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Note que na linha 32 declaramos na assinatura do mtodo que ele pode ou no lanar
uma exceo do tipo java.lang.Exception.
E o mtodo public static void main(String[] args) ser responsvel por tratar alguma
exceo que o mtodo dividir(double dividendo, double divisor) possa lanar.
Se digitarmos zero no valor do divisor ser lanado uma exceo pelo mtodo
dividir(), esta exceo ser tratada pelo mtodo main():
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 199 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 200 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Observe que no trecho de cdigo acima, temos uma varivel do tipo int recebendo
uma entrada do usurio tambm do tipo int. Porm, vamos supor que nosso usurio no
digite um inteiro, mas sim um caractere.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 201 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Desta forma, a digitao incorreta do usurio ser tratada e uma mensagem de erro
ser exibida caso uma exceo acontea, a varivel validado no receberia o valor true.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 202 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
15.8 - Errors
Errors so um tipo especial de Exception que representam erros da JVM, tais como
estouro de memria, entre outros. Para este tipo de erro normalmente no feito tratamento,
pois sempre quando um java.lang.Error ocorre a execuo do programa interrompida.
possvel se tratar mltiplos tipos de exceo dentro do mesmo bloco try / catch, para
tal, basta declara-los um abaixo do outro, assim como segue:
OBS: As excees tratadas pelos catchs devem seguir a ordem da mais especifica
para a menos especifica.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 203 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
No exemplo abaixo vamos criar uma exceo chamada ErroDivisao que ser lanada
quando ocorrer uma diviso incorreta, para isso precisamos criar esta classe filha de
Exception.
Agora vamos criar a classe TesteErroDivisao que iremos utilizada para testar o
lanamento da nossa exceo ErroDivisao.
Iremos criar o mtodo restoDaDivisao que ir calcular o resto da diviso de dois
nmeros e lanara a exceo ErroDivisao caso tenha o valor do divisor maior que o valor
do dividendo.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 204 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 205 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
15.11 - Exerccios
1. Crie uma classe que aceite a digitao de dois nmeros e faa a diviso entre eles
exibindo seu resultado. Sua classe deve tratar as seguintes excees:
ArithmeticException e InputMismatchException
2. Crie uma classe que crie um vetor de inteiros de 10 posies. Feito isso, permita que o
usurio digite valores inteiros afim de preencher este vetor. No implemente nenhum
tipo controle referente ao tamanho do vetor, deixe que o usurio digite valores at que
a entrada 0 seja digitada.
Uma vez digitado o valor 0, o mesmo deve ser inserido no vetor e a digitao de novos
elementos deve ser interrompida. Feita toda a coleta dos dados, exiba-os em tela.
Sua classe deve tratar as seguintes excees:
ArrayIndexOutOfBoundsException e InputMismatchException
Login
E os mtodos:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 206 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
try{
if(<<usurio incorreto>>)
throw new Exception(Usurio incorreto);
} catch (Exception e) {
System.out.println(Erro);
}
*/
}
Feito isso, crie uma classe para testar a inicializao de um objeto do tipo Login e que
utilize o mtodo fazerLogin, com informaes digitadas pelo usurio.
System.out.println("fim");
}
}
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 207 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
E os mtodos:
Requisitos
A sua classe conta bancria deve permitir apenas saques inferiores a R$ 500,00 ou
que no faam com que a soma entre o saldo e o limite da conta resultem em um
valor menor do que zero. Caso estas condies no se cumpram, deve ser lanada
uma ContaException com uma mensagem que identifique o tipo de erro.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 208 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 209 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
16 - Polimorfismo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 210 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Dizer que uma Pessoa UMA PessoaFisica est errado, porque ela pode tambm
ser uma PessoaJuridica.
Quando trabalhamos com uma varivel do tipo Pessoa que uma superclasse,
podemos fazer est varivel receber um objeto do tipo PessoaFisica ou PessoaJuridica,
exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 211 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 212 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 213 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Sada:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 214 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
para atribuir o CPF atravs do mtodo setCpf() teremos um erro de compilao, pois
somente a classe PessoaFisica possui este mtodo:
Para podermos atribuir o valor para CPF ou CNPJ, preciso ter variveis do tipo
PessoaFisica e PessoaJuridica.
No exemplo abaixo as variveis so do tipo PessoaFisica e PessoaJuridica, essas
variveis sero guardadas dentro de um vetor de Pessoa:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 215 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 216 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 21 foi criado uma varivel pessoa1 do tipo Pessoa que recebe um objeto do
tipo PessoaFisica.
Na linha 22 foi criado uma varivel pessoa2 do tipo Pessoa que recebe um objeto do
tipo PessoaJuridica.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 217 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Dessa vez o valor do cpf e cnpj so impressos, pois foram previamente preenchidos.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 218 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 219 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
16.2 - Exerccios
E os mtodos:
Feito isso, instancie dois objetos de cada um dos tipos das subclasses, mas
armazenando-os em referencias para Funcionario, da seguinte forma:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 220 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
E os seguintes mtodos:
Feito isso, crie mais duas outras classes chamadas Desktop e Notebook, classes filhas
de Computador, com os seguintes atributos e mtodos a mais, alguns sobrescritos:
E os seguintes mtodos:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 221 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
E os seguintes mtodos:
Para testarmos nosso ambiente, crie uma classe Principal que instancie trs objetos,
sendo um de cada um dos tipos.
Para atestar a questo da herana, nos objetos dos tipos Notebook e Desktop, faa
chamadas aos mtodos da superclasse Computador como, por exemplo, o mtodo
dizerInformacoes().
Feito isso, para testarmos o polimorfismo, instancie objetos dos tipos NoteBook e
Desktop e atribua-os a referencias de Computador. Agora teste o polimorfismo, invocando
o mtodo dizerInformacoes().
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 222 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 223 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 224 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 225 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 226 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Para fazer a conexo com o banco de dados precisamos tratar algumas excees que
podem ocorrer:
Na linha 26, tratamos a exceo java.sql.SQLException que lanada caso no
consiga criar uma conexo com o Banco de Dados.
Na linha 28, tratamos a exceo java.lang.ClassNotFoundException que lanada
caso no consiga carregar o driver do banco de dados.
Depois de utilizar a conexo com o banco de dados muito importante que liberemos
esta conexo, ou seja, precisamo encerrar a conexo com o banco de dados.
Na linha 35 temos o mtodo desconectar que recebe uma Connection como
parametro, dentro deste mtodo estamos verificando se a conexo com o banco ainda no
foi encerrada para depois encerra-la. Quando tentamos encerrar uma conexo com o banco
tambm pode ocorrer alguma exceo para isso na linha 41 estamos tratando caso ocorra
alguma java.sql.SQLException.
Uma vez conectado, podemos ento solicitar a execuo de comandos SQL, para que
tenhamos acesso a este tipo de chamada ao banco de dados necessrio criarmos um
java.sql.Statement.
O Statement o objeto que servir de instrumento para a execuo de comandos
SQL, porm importante ressaltar que o intuito de uma consulta a um banco de dados o
de receber uma informao, logo, fundamental que essa resposta seja armazenada em
uma estrutura. Para isso podemos utilizar a classe java.sql.ResultSet que deve receber o
retorno do mtodo executeQuery que responsvel por executar a consulta.
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 227 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 228 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Note pelo exemplo acima que o mtodo responsvel por executar a consulta na base
de dados foi o executeQuery na linha 27. Observe tambm a forma como o ResultSet foi
percorrido na linha 29.
A classe ResultSet oferece o mtodo next() para percorrer a resposta dada pelo
banco de dados. Caso nossa consulta acima lista houvesse retornado 4 linhas, por padro o
ResultSet estaria com seu ponteiro posicionado na posio -1, logo, antes de ler a primeira
linha de resposta de sua consulta necessrio a chamada a este mtodo next() para que o
ponteiro passe para a primeira posio e possa resgatar as informaes desejadas. O
mtodo next() retorna true, caso ainda existam novas linhas na resposta e false quando no
tem mais registros para percorrer.
importante ressaltar que apenas um nico objeto ResultSet pode ser aberto por vez
por Statement ao mesmo tempo.
Para resgatar as informaes desejadas, a classe ResultSet oferece mtodos do tipo
get para todos os tipos de dados primitivos, exceto char. Todos estes mtodos devem
receber como parmetro o nome da coluna de resposta, assim como no exemplo acima, ou o
nmero correspondente a posio da coluna retornada.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 229 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 230 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 26, pedimos para o Statement adicionar um novo registro na tabela PESSOA
do banco de dados.
Na linha 42, pedimos para o Statement atualizar um registro da tabela PESSOA do
banco de dados.
Note que para adicionar ou atualizar as informaes no banco de dados, podemos
utilizar o mtodo execute.
jdbc:oracle:thin:@<<ipDoBanco>>:1521:<<nomeDaBase>> ou
jdbc:oracle:thin:@ (DESCRIPTION=
Oracle oracle.jdbc.driver.OracleDriver (ADDRESS_LIST=(ADDRESS = (PROTOCOL = TCP)(HOST =
<<ipDoBanco>>)(PORT = 1521))) (CONNECT_DATA
=(SERVICE_NAME = <<nomeDaBase>>)))
Neste exemplo vamos, passo a passo, criar uma aplicao completa de acesso a uma
base de dados utilizando JDBC.
Para esta aplicao, iremos criar um sistema de cadastro de veculos. Para tal,
criamos o POJO Carro, como segue abaixo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 231 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Agora que j temos modelado a nossa classe principal, devemos definir como nosso
programa ir interagir com a base de dados.
Para estabelecermos a conexo com a base de dados de uma maneira mais simples,
faremos uso da classe Conexao, conforme segue abaixo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 232 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 233 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 234 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Utilizaremos um padro de projeto chamado DAO (Data Acess Object). O DAO deve
saber buscar os dados do banco e converter em objetos para ser usado pela sua aplicao.
Semelhantemente, deve saber como pegar os objetos, converter em instrues SQL e
mandar para o banco de dados. Desta forma conseguimos distinguir fortemente a
modelagem do sistema da modelagem de dados e das regras de negcio.
Geralmente, temos um DAO para cada objeto do domnio do sistema, ou seja, para
nosso exemplo criaremos uma classe CarroDAO com as quatro operaes bsicas,
definidas por seus mtodos.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 235 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Para que a classe acima no apresente nenhum erro de compilao, necessrio que
voc acrescente a biblioteca (arquivo .jar) correspondente ao seu banco de dados. Para o
nosso exemplo, devemos importar o arquivo correspondente ao banco de dados MySQL.
Observe que nosso mtodo incluir() apenas recebe o objeto Carro a ser inserido na
base de dados e internamente faz toda a operao relacionada ao banco de dados. Desta
forma, conseguimos isolar toda esta interao com a base de dados do restante do cdigo,
tornando-o mais simples de se realizar qualquer tipo de manuteno.
O mtodo consultarPorPlaca recebe apenas a placa de um carro (imagine que esta
informao uma chave da tabela e que no devemos ter mais de um carro com a mesma
placa) e que retorna um objeto do tipo Carro com todos os seus atributos devidamente
alimentados.
O mtodo alterarPorPlaca() recebe um objeto Carro e a partir de sua placa faz a
atualizao nos atributos placa e potencia.
O mtodo excluir() recebe o Carro como parametro e o apaga da base de dados,
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 236 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 237 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
A console fica aguardando at que digitemos alguma opo, primeiro vamos criar um
novo carro para isto vamos entrar com a opo I:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 238 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Agora vamos utilizar a opo C para consultar um carro pela placa abc-1234:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 239 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 240 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 241 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
17.5 - Exerccios
1) Crie uma aplicao CRUD (Salvar, Remover, Atualizar e Apagar) para controlar as
informaes referentes a Produto (nome, preco, tipo e data de validade).
2) Crie uma aplicao para controlar a venda e o estoque dos produtos criados no exercicio
anterior.
O controle de estoque deve conter o Produto e sua Quantidade em estoque, cada vez
que um produto vendido deve ser reduzido do estoque a quantidade de produtos e caso a
quantidade em estoque seje menor ou igual a 10 ento deve informar que necessario
comprar mais produto, se o estoque for 0 (zero) ento no deve permitir a venda do produto.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 242 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O NetBeans uma IDE de desenvolvimento que oferece suporte aos mais variados
segmentos de desenvolvimento JAVA, desde o desenvolvimento de aplicaes robustas at
aplicaes para dispositivos portteis, porm seu grande diferencial est no desenvolvimento
de interfaces grficas, por oferecer um ambiente amigvel, simples e intuitvel.
A seguir, termos um passo a passo, listando os principais pontos de como se criar
uma aplicao grfica no NetBeans.
Para que seja possvel se criar e organizar seus arquivos JAVA, primeiramente
necessria a criao de um novo projeto. Para tal, basta acessarmos a opo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 243 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Feito isso, clique em Next (Prximo) uma nova janela ser exibida, solicitando que
mais informaes sejam fornecidas:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 244 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Nesta janela, devemos preencher o campo Project Name (Nome do Projeto) com
alguma informao. Preferencialmente, coloque um nome que tenha relao com o programa
que voc ir desenvolver.
Mais abaixo existe a opo Project Location (Localizao do projeto). Neste campo,
podemos alterar o local onde os arquivos desenvolvidos sero salvos.
Ateno: caso voc queira resgatar suas classes mais tarde, este ser o caminho que
voc acessar para localizar seus arquivos .java. Dentro do projeto tem uma pasta
chamada src e dentro desta pasta fica os arquivos fontes.
A opo Set as Main Project (Definir como Projeto Principal), apenas identificar a
IDE que este seu projeto principal de trabalho, caso voc possua mais de um projeto
aberto dentro do NetBeans.
Por fim, na opo Create Main Class (Criar Classe Principal), possvel criar uma
classe inicial no projeto. Esta classe ser responsvel por iniciar a chamada a outras classes
do projeto. Coloque um nome que julgar melhor, sendo que no nosso caso colocamos o
nome Principal, devido a sua funo em nosso projeto.
Clique em Finish (Finalizar).
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 245 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Inicialmente, nosso projeto ser dividido em 4 pastas principais, sendo que a pasta na
qual criaremos nossos novos arquivos Java ser a de nome Source Packages (Pacotes de
Cdigo-Fonte).
Clicando com o boto direito do mouse sobre nome Source Package, ou sobre o
nome do pacote metodista.aula.swing, temos acesso a um menu de opes. Dentro deste
menu, mais especialmente na primeira opo: New (Novo), podemos escolher qual o tipo de
novo componente desejamos criar. Para a criao de uma janela, selecione a opo JFrame
Form (Formulrio JFrame), conforme figura abaixo.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 246 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Nesta nova janela coloque apenas o Class Nome (Nome da Classe), conforme a figura
abaixo e clique em Finish (Finalizar).
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 247 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Ao lado direito temos a Palette (Paleta), com a lista de componentes que podem ser
colocados no JFrame, e logo abaixo a janela de Properties (Propriedades).
Ao lado esquerdo, temos a janela do Project (Projeto), logo abaixo o Navigator
(Navegador) e o Inspector (Inspetor). O Inspetor nos mostra todos os componentes que j
foram adicionados ao JFrame.
A seguir, na janela do Inspector (Inspetor), vamos clicar com o boto direito do mouse
no JFrame, e indo at a opo Set Layout (Definir Layout), podemos escolher a opo Null
Layout, a qual nos dar mais liberdade para trabalhar com o JFrame. Caso seja da
preferncia, podemos manter marcada a opo Free Design (Desenho Livre), que habilitar
o novo assistente de criao de janelas chamado Matisse.
O Matisse um assistente bastante interessante que procura automaticamente alinhar
e dimensionar os componentes, de forma padronizada e seguindo as melhores prticas de
desenvolvimento.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 248 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Agora selecione o JFrame clicando sobre ele uma vez com o boto esquerdo do
mouse na janela principal, ou na janela do Inspector e na janela de Propriedades vamos
selecionar a opo Code (Cdigo). Na nova listagem que ser exibida, altere o valor de
Form Size Policy (Poltica de Tamanho de Formulrio) para Generate Resize Code (Gera
Cdigo de Redimensionamento).
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 249 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Para trocar entre o ambiente de Design (Desenho) que mostra um ambiente mais
grfico e fcil de visualizar os componentes e o ambiente de Fonte (Source) que mostra o
cdigo fonte da classe, usamos as seguintes abas:
Para isso, na janela Paleta, selecione o primeiro destes componentes e clique no dentro
do JFrame no local onde deve ficar o componente. Repita este Procedimento para os outros
dois componentes, resultando ento a algo semelhante a janela abaixo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 250 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Clicando com o boto direito do mouse sobre cada um dos componentes, poderemos
listar algumas opes:
Feito isso, mais uma vez, clique com o boto direito do mouse sobre cada um dos trs
componentes e selecione a opo Edit Text (Editar Texto), para alterar o texto exibido em
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 251 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
cada um destes componentes. Por hora, vamos apagar o texto do JTextField e do JLabel e
vamos alterar o texto do JButton para Clique aqui.
O resultado ser algo prximo da janela abaixo:
Note que o JLabel mesmo no parecendo visvel, ele ainda est no JFrame e pode ser
visto e selecionado atravs do Inspector.
Aps estes passos, possvel notar que o novo nome do componente pode ser obtido
tanto na janela do Inspector como, aps selecionar o componente desejado, na janela de
Propriedades, propriedade Variable Name (Varivel Nome).
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 252 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Uma vez no modo de edio Fonte, estar com o cursor dentro do seguinte texto:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 253 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Com isso, sabemos agora que com os cdigos getText() e setText(), podemos
pegar ou colocar um texto em um dos componentes, assim como fizemos no passo 4,
porm durante a execuo do programa.
Por fim, devemos chamar essa nossa nova janela de algum lugar, ento clicaremos 2
vezes sobre a classe Principal no menu Projeto e a editaremos da seguinte maneira:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 254 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Feito isso, basta salvar ambos os arquivos e clicar com o boto direito do mouse sobre
a classe Principal.java na janela do Projeto e selecionar a opo Run File (Executar
Arquivo).
Por fim, nosso programa ser executado, e note que ao se digitar algo na JTextField e
clicar no boto, todo o texto inserido na JTextField ser transferido para a JLabel.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 255 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O JFrame uma classe que representa uma janela ou quadro da aplicao desktop,
dentro dele podemos adicionar diversos componentes como botes, textos, campos de
digitao, listas, imagens.
JFrame.setDefaultCloseOperation(int operation)
Seta a forma como a janela do JFrame deve ser fechada, seus valores podem ser:
- HIDE (Janela continua aberta, mas no mostrada na tela)
- DO_NOTHING (No faz nada)
- EXIT_ON_CLOSE (Encerra todo o programa, usando o System.exit(0))
- DISPOSE (Fecha a janela)
Exemplo:
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
JFrame.setTitle(String title)
Altera o titulo da janela, este mtodo recebe uma String como titulo.
Exemplo:
setTitle("Primeiro Formulrio");
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 256 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
JFrame.setResizable(Boolean resizable)
Dependendo do valor true (verdadeiro) ou false (falso), a janela JFrame permite ter
seu tamanho alterado durante sua execuo.
Exemplo:
setResizable(false);
JFrame.setName(String name)
Altera o nome da janela JFrame.
Exemplo:
setName("principal");
O pacote Swing, conta com uma classe chamada JTextField. Esta classe
responsvel por receber texto quando adicionada a um container (JFrame).
Para adicion-lo a sua aplicao, localize-o no painel ao lado direito na Paleta, clique
sobre ele e clique sobre o JFrame. Aps o JTextField ter sido posicionado, possvel alterar
sua disposio e tamanho no formulrio.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 257 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Este campo capaz de receber qualquer tipo de dado, seja ele numrico ou caractere,
mas todos os caracteres digitados nele so guardados dentro de uma String.
JTextField.getText()
Retorna o valor digitado dentro do campo solicitado.
Exemplo:
String texto = entrada.getText();
JTextField.setText(String texto)
Coloca uma String dentro do campo JTextField solicitado.
Exemplo:
entrada.getText(O texto deve estar entre aspas duplas);
JTextField.setEditable(boolean valor)
Dependendo do valor passado true (verdadeiro) ou false (falso) permite ou no a
edio do campo.
Exemplo:
entrada.setEditable(true);
JTextField.setEnabled(boolean valor)
Dependendo do valor passado true (verdadeiro) ou false (falso) desativa o campo
solicitado.
Exemplo:
entrada.setEditable(false);
JTextField.setFont(Font font)
Altera o tipo de formato da fonte do componente JTextField. Este mtodo recebe um
objeto do tipo Font que defini a fonte, estilo do texto e tamanho.
Exemplo:
entrada.setFont(new java.awt.Font("Arial", 1, 10));
JTextField.setBackground(Color c)
Alterar a cor do fundo do JTextField. Este mtodo recebe um objeto do tipo Color,
que utiliza o padro RGB para definir a cor.
Exemplo:
entrada.setBackground(new java.awt.Color(204, 255, 204));
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 258 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Assim como o JTextField, o componente JButton tambm faz parte do pacote Swing.
Esta classe uma das mais importantes de todas as aplicaes, pois na maioria dos casos,
nela onde adicionamos as aes que desejamos que nosso programa execute. Para
adicion-lo a sua aplicao, localize-o na Paleta e clique dentro do JFrame na posio
desejada. Depois de posicionado, possvel alterar sua disposio e tamanho.
JButton.getText()
Retorna o texto escrito no boto. O mesmo digitado na criao do programa pela
opo Edit Text Editar Texto, do boto direito do mouse.
Exemplo:
String texto = botao.getText();
JButton.setText(String texto)
Coloca uma String dentro do boto JButton solicitado.
Exemplo:
botao.setText(O texto deve estar entre aspas duplas);
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 259 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
JButton.setEnabled(boolean valor)
Dependendo do valor passado true (verdadeiro) ou false (falso) desativa o campo
solicitado.
Exemplo:
botao.setEditable(false);
JButton.setFont(Font font)
Altera o tipo de formato da fonte do componente JButton. Este mtodo recebe um
objeto do tipo Font que defini a fonte, estilo do texto e tamanho.
Exemplo:
botao.setFont(new java.awt.Font("Arial", 1, 10));
JButton.setBackground(Color c)
Alterar a cor do fundo do JButton. Este mtodo recebe um objeto do tipo Color, que
utiliza o padro RGB para definir a cor.
Exemplo:
botao.setBackground(new java.awt.Color(204, 255, 204));
JButton.setIcon(ImageIcon imageIcon)
Adiciona um cone dentro do boto. Este mtodo recebe um objeto o tipo ImageIcon
que representa uma imagem, e esta imagem pode estar dentro do seu projeto ou pode estar
em algum diretrio do micro.
Exemplo:
botao.setIcon(new javax.swing.ImageIcon(getClass().getResource(
"/metodista/aula/imagens/ok.jpg")));
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 260 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 261 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
JLabel.getText()
Retorna o texto escrito no boto. O mesmo digitado na criao do programa pela
opo Edit Text Editar Texto, do boto direito do mouse.
Exemplo:
String texto = saida.getText();
JLabel.setText(String texto)
Coloca uma String dentro do label JLabel solicitado. Uma coisa interessante que a
propriedade text do JLabel pode receber um texto no formato HTML.
Exemplo:
saida.setText(O texto deve estar entre aspas duplas);
JLabel.setFont(Font font)
Altera o tipo de formato da fonte do componente JLabel. Este mtodo recebe um
objeto do tipo Font que defini a fonte, estilo do texto e tamanho.
Exemplo:
saida.setFont(new java.awt.Font("Arial", 1, 10));
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 262 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
JLabel.setBackground(Color c)
Alterar a cor do fundo do JLabel. Este mtodo recebe um objeto do tipo Color, que
utiliza o padro RGB para definir a cor.
Exemplo:
saida.setBackground(new java.awt.Color(204, 255, 204));
JLabel.setIcon(ImageIcon imageIcon)
Adiciona uma imagem dentro do JLabel. Este mtodo recebe um objeto o tipo
ImageIcon que representa uma imagem, e esta imagem pode estar dentro do seu projeto ou
pode estar em algum diretrio do micro.
Exemplo:
saida.setIcon(new javax.swing.ImageIcon(getClass().getResource(
"/metodista/aula/imagens/saida.jpg")));
O JComboBox utilizado para mostrar uma lista de itens onde o usurio deve
escolher um desses itens. Para adicion-lo a sua aplicao, localize-o na Paleta e clique
dentro do JFrame na posio desejada. Depois de posicionado, possvel alterar sua
disposio, tamanho, texto e nome.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 263 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
JComboBox.setModel(ComboBoxModel aModel)
Adiciona os itens que sero listados dentro do JComboBox.
Exemplo:
cmbNomes.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Rafael",
"Cristiano", "Leonardo" }));
JComboBox.getSelectedItem()
Retorna o item que foi selecionado no formato de Objeto.
Exemplo:
String nomeSelecionado = (String) cmbNomes.getSelectedItem();
JComboBox.setMaximumRowCount(int count)
Informa qual a quantidade mxima de itens sero exibidos no JComboBox, se o
tamanho mximo for menor que a quantidade de itens dentro do JComboBox, ento ser
mostrado uma barra de rolagem dentro dele.
Exemplo:
cmbNomes.setMaximumRowCount(2);
JComboBox.setFont(Font font)
Altera o tipo de formato da fonte do componente JComboBox. Este mtodo recebe um
objeto do tipo Font que defini a fonte, estilo do texto e tamanho.
Exemplo:
cmbNomes.setFont(new java.awt.Font("Verdana", 1, 12));
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 264 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Feito isso, existem duas maneiras de se adicionar uma figura a este componente. A
mais simples delas simplesmente acessando o menu de propriedades deste item, e
alterando a sua propriedade de nome Icon.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 265 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Clicando ento nessa propriedade uma janela de configuraes ser exibida e lhe
ser dada a opo de adicionar uma figura dentro do projeto ou dentro de algum diretrio do
computador ou url. Com isso, teremos ento uma janela com a figura desejada:
<<JLabel>>.setIcon( )
Este mtodo, setIcon(), deve receber como parmetro um objeto do tipo Icon, para
isto, utilize a seguinte sintaxe:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 266 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
<<JLabel>>.setIcon(new ImageIcon("foto.jpg"));
Onde o arquivo de foto deve estar na pasta inicial do projeto. Caso deseje utilizar
caminhos relativos, utilize a notao desde a raiz do sistema operacional.
Ex:
<<JLabel>>.setIcon(new ImageIcon("c:/minhasFotos/foto.jpg"));
Para alterar uma imagem em tempo de execuo por outra contida dentro de seu
projeto, basta utilizar o seguinte comando:
<<JLabel>>.setIcon(new ImageIcon(getClass().getResource(/pacote/arquivo)));
Onde /pacote/arquivo o endereo completo da figura dentro de seu projeto. Note que
este mtodo mais interessante, visto que a figura ir compor seu projeto e no necessitar
ser colocada em um caminho fixo no sistema operacional.
Ex:
projetoJava/imagens/Logo.gif
Agora sabendo como manusear fotos em tempo de execuo, sabemos ento como
alterar fotos de acordo com a interao do usurio com nosso programa.
import javax.swing.ImageIcon;
Neste exemplo vamos criar uma tela para cadastrar pessoas e essas pessoas sero
armazenadas dentro de um vetor de pessoas e exibido uma lista com os nomes das pessoas
cadastradas.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 267 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 268 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O JTextField que guarda o texto do nome chama txtNome e o JTextField que guarda
o texto da idade chama txtIdade. O JButton que possui a funo de Cadastrar uma nova
pessoa chama btnCadastrar.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 269 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 11 foi declarado um vetor de Pessoa chamado pessoas que suporta at 100
objetos dentro ele.
Na linha 12 foi declarado um inteiro que serve como contador, para marcar quantas
pessoas foram adicionadas no vetor.
Agora vamos adicionar na tela de cadastro de pessoas uma JLabel para mostrar para
o usurio quais so as pessoas que foram guardadas dentro do vetor.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 270 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 125, est declarando um mtodo que faz a atualizao do JLabel que mostra
as pessoas cadastradas.
Na linha 126, cria uma String que vai guardar o nome e idade de todas as pessoas,
est String ser escrita no formato HTML.
Na linha 127 a 129, temos um for que passa pelo vetor de pessoas e guarda na String
o texto encontrado.
Na linha 130, encerro o texto HTML dentro da String.
Na linha 132, atribui o valor da String listaPessoas no JLabel lblPessoas.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 271 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
18.8 - JFileChooser
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 272 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 273 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 274 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 275 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Vamos criar um programa para cadastrar, consultar, alterar ou excluir Livros, este
programa ser feito utilizando Swing e utiliza um menu para chamar outras telas.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 276 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Vamos criar uma classe chamada Conexao para fazer a conexo e desconexo do
banco de dados.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 277 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Agora vamos cria a classe LivroDAO que ser responsvel por manipular os dados
referentes a livro no banco de dados:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 278 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 279 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 280 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Feito a parte de comunicao com o banco de dados, vamos criar a tela principal do
sistema:
Quando criamos um JMenuBar, o mesmo j vem com dois JMenu (File e Edit), altere
os textos deles para Arquivo e Livro, depois altere o nome das variveis para
menuArquivo e menuLivro respectivamente:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 281 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Agora dentro do menu Arquivo, vamos adicionar um Menu Item (JMenuItem), esse
item ter o nome Sair e o nome da varivel deve ser alterado para arquivoSair. Nossa
JFrame deve ficar da seguinte forma:
Dentro do menu Livro, adicione os seguintes Menu Itens (Novo e Listar) e os nomes
das variveis devem ser livroNome e livroListar respectivamente:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 282 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Agora vamos criar um novo JFrame chamado LivroNovo, que ser utilizado para
cadastrar novos livros:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 283 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O boto Salvar deve salvar os dados do livro na base de dados interessante validar
o campo antes de salvar os dados.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 284 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 285 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Crie tambm um JFrame chamado LivroListar, que ser usado para mostrar todos os
livros cadastrados e tambm ser usado para excluir um livro ou chamar a tela para alterar
os dados do livro:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 286 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Personalize o cdigo de criao da tabela, para quando ela for inicializada j consultar
as informaes do banco.
O boto Excluir deve excluir o registro de livro que estiver selecionado na tabela.
O boto Alterar deve chamar a tela de LivroNovo, passando o objeto livro que foi
selecionado na tabela.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 287 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O item do menu Arquivo Sair ter o seguinte cdigo que serve para fechar a
aplicao.
O item do menu Livro Novo ter o seguinte cdigo que serve para abrir a tela de
Novo Livro.
O item do menu Livro Listar ter o seguinte cdigo que serve para abrir a tela de
Listar Livros.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 288 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
18.10 - Exerccios
1. Vamos criar uma calculadora utilizado o Swing. Nossa calculadora dever ter as seguintes
operaes: adio, subtrao, diviso e multiplicao.
2. Crie uma aplicao CRUD (Salvar, Remover, Atualizar e Apagar) para controlar as
informaes referentes Produto (nome, preco, tipo e data de validade) utilize uma interface
grafica Swing.
OBS: Utilize a estrutura criada no exercicio 1 do capitulo de JDBC.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 289 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 290 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Note que no exemplo acima, uma nova exceo do tipo ErroDaConta est
sendo lanada linha 12, mas no ser tratada por um bloco try, ser remetida a
classe que a chama, no nosso caso a classe representada pela tela acima. Isto pode
ser observado pelo comando throws na linha 10.
Desta forma estamos criando nossa prpria exceo, declarando que nossa
classe filha de Exception, e que por este motivo ser uma checked exception. Na
linha 13 o seguinte construtor da classe Exception est sendo invocado:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 291 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 292 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste exemplo vamos criar uma tela que ser utilizada para visualizar os
caminhes que foram cadastrados, para adicionar novos caminhes e para apagar os
caminhes.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 293 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Vamos agora criar uma classe chamada CaminhaoDAO, que ser utilizada para
acessar os dados referentes ao caminho.
Na linha 10, temos o mtodo que criar as conexes com o banco de dados.
Na linha 25, temos o mtodo que fechar as conexes com o banco de dados.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 294 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 36, declaramos um mtodo que ser utilizado para consultar todos os
caminhes cadastrados.
Na linha 42, criamos uma String com a consulta de todos os caminhes da
tabela CAMINHAO.
Na linha 44, executa a consulta e guarda seu resultado dentro de um
ResultSet.
Na linha 47, temos um while que serve para percorrer todos os registros do
ResultSet para sabermos quantas linhas foram retornadas.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 295 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 50, caso o contador tenha o valor maior que 0 (zero), significa que tem
registros de caminho na tabela do banco de dados.
Na linha 51, criamos um vetor de Objetos Caminhao, de acordo com a
quantidade de registros.
Na linha 52, fazemos o ResultSet apontar para antes do primeiro registro, j
que percorremos ele inteiro na linha 47 e o mesmo est apontando para o final do
ResultSet.
Na linha 55, temos um while que ir percorrer todo o ResultSet, criando objetos
do tipo Caminhao e guardando os valores consultados da base de dados dentro
desses objetos, e depois guardando o objeto caminhao dentro do vetor de
caminhes.
Na linha 67, utilizamos o bloco finally para fechar a conexo com o banco de
dados.
Na linha 71, retornamos o vetor de caminhoes.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 296 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 91, utilizamos o bloco finally para fechar a conexo com o banco de
dados.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 297 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 298 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 299 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 300 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Altere tambm o nome das variveis dos Campos de texto e Botes conforme a
imagem abaixo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 301 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 302 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 303 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 304 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 305 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 306 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 307 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
19 - Leitura de arquivos
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 308 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 19 criamos um objeto f do tipo File a partir de um caminho recebido, este objeto
ser utilizado para representar um arquivo ou diretrio.
Na linha 22 verificamos se o objeto f um arquivo atravs do mtodo isFile() da
classe File, caso retorne true ento ir imprimir a mensagem informando que o caminho
referente a um arquivo.
Na linha 24 verificamos se o objeto f um diretorio atravs do mtodo isDirectory()
da classe File, caso retorne true ento ir imprimir a mensagem informando que o caminho
referente a um diretorio.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 309 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste exemplo vamos ler um arquivo .txt e imprimir seu texto no console.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 310 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 311 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
19.2.1 - java.io.Reader
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 312 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 27 criamos um objeto do tipo FileReader, seu construtor recebe uma String
com um caminho de arquivo, est classe le os caracteres do arquivo.
Na linha 28 vamos declarar uma varivel int c que ser utilizada para guardar os
caracteres lidos do arquivo, lembre-se que todos os caracteres em Java so representador
por um nmero inteiro.
Na linha 29 vamos percorrer todo o arquivo e vamos fazer um casting de inteiro para
caracter, para imprimir o texto do arquivo, note que se o valor lido atravs do mtodo read()
for igual a -1, significa que chegamos ao final do arquivo.
Na linha 32 e 34 vamos tratar as excees que podem ser lanadas durante a leitura
de um arquivo.
Na linha 39 vamos fechar o arquivo utilizando o mtodo close().
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 313 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
19.2.2 - java.io.Writer
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 314 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 315 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Como j mencionado no ttulo deste material, Streams nada mais so do que fluxos de
dados sejam eles de entrada ou de sada. Na linguagem Java, graas aos benefcios trazidos
ao polimorfismo, possvel se utilizar fluxos de entrada (java.io.InputStream) e de sada
(java.io.OutputStream) para toda e qualquer operao deste gnero, seja ela relativa a um
arquivo, a uma conexo remota via sockets ou at mesmo a entrada e sada padro de um
programa (normalmente o teclado e o console).
19.3.1 - java.io.InputStream
19.3.2 - java.io.OutputStream
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 316 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linguagem Java existe uma forma simples de persistir objetos, uma delas
gravando o objeto diretamente no sistema de arquivos.
Seguindo a mesma idia das j discutidas FileInputStream e FileOutputStream,
existem duas classes especficas para a serializao de objetos. So elas:
java.io.ObjectOutputStream e java.io.ObjectInputStream.
Para que seja possvel a escrita de um objeto em um arquivo, ou seu envio via rede
(ou seja, sua converso em um fluxo de bytes) necessrio inicialmente que este objeto
implemente uma interface chamada java.io.Serializable. Por este motivo, a classe do objeto
que desejamos serializar deve implementar esta interface, alem do que afim de evitar uma
warning (aviso) no processo de compilao ser necessria a declarao de um atributo
constante, privado e esttico chamado serialVersionUID. Este atributo apenas ser utilizado
como um controlador (um ID) no processo de serializao.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 317 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Feito isso, vamos nos aprofundar nas classes de leitura e escrita de objetos em
arquivos fsicos:
java.io.ObjectOutputStream
Esta classe possui um construtor que, por padro, deve receber uma OutputStream
qualquer, como por exemplo uma FileOutputStream para serializao do objeto em um
arquivo.
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 318 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
java.io.ObjectInputStream
Esta classe possui um construtor que, por padro, deve receber uma InputStream
qualquer, como por exemplo uma FileInputStream para converter um arquivo em Objeto.
Exemplo:
Sobre este mtodo, importante ressaltar que por ele retornar um objeto (lembrando
que todos os objetos em Java so, direta ou indiretamente, filhos da classe
java.lang.Object) possvel j armazenar este retorno no objeto que j sabemos ser
compatvel atravs de uma operao de casting, da seguinte forma:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 319 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O programa gera o arquivo.txt com o objeto Pessoa no formato que ele entende para
depois converter de novo para objeto Pessoa.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 320 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
19.5 - Exerccios
2. Crie um programa capaz de coletar um texto digitado pelo usurio. Pegue este texto e
grave em um arquivo de texto. Lembre-se que o mtodo de escrita em arquivo texto
comporta apenas caracteres, logo, converta a String digitada pelo usurio para caracteres
por meio do mtodo .toCharArray().
Carro
E os mtodos:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 321 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
4. Crie uma aplicao Swing que permita cadastrar Pessoas (nome, cpf, dataNascimento), os
dados das pessoas devem ser salvos em um arquivo .txt no formato:
nome,cpf,dataNascimento
Sua aplicao tambm deve permitir ler todas as pessoas que esto no arquivo e mostrar em
uma tabela.
OBS: Utilize uma classe Pessoa para trabalhar com as informaes da pessoa que ser
cadastrada ou consultada do arquivo.
5. Crie uma agenda de contatos utilizando Swing, esta aplicao deve salvar os contatos em
um arquivo .txt.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 322 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 323 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Assim como uma varivel comum, tambm possvel inicializar um vetor que j
foi declarado anteriormente, conforme exemplo abaixo:
Assim como um objeto, um vetor deve ser inicializado antes de ser utilizado.
Uma chamada a um ndice de um vetor no inicializado gera uma exceo.
Note que esta forma de inicializao bastante prtica, porm no deixa clara
a quantidade de elementos que h no vetor obrigando o assim que voc conte a
quantidade de elementos para saber o tamanho do vetor.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 324 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
ndice= 0 1 2 3 4
vetor = 2 5 4 8 5
Logo, para acessar os valores de cada uma das posies deste vetor voc
deve utilizar o seu ndice correspondente dentro de colchetes, assim como segue:
Lembre-se que o primeiro ndice do vetor sempre zero, logo, seu ltimo
elemento sempre igual ao tamanho do vetor menos um.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 325 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
binarySearch
o Este mtodo recebe sempre 2 parmetros sendo um deles o vetor
e outro o elemento que se deseja buscar dentro dele. Para isto ele
utiliza o mtodo da busca binria que ser discutido mais a frente.
Sort
o Realizar a ordenao de um vetor utilizando um algoritmo do tipo
Quick Sort. Este tipo de algoritmo tambm ser discutido mais a
diante. Por este mtodo receber o vetor por parmetro (que
lembrando, vetores so objetos) ele o ordena e no retorna valor
algum, pois sua ordenao j foi realizada.
asList
o Coverte o vetor em uma coleo do tipo lista. Colees sero
discutidas mais a frente
copyOf
o Cria uma cpia de um vetor. Pode-se copiar o vetor completamente
ou apenas parte dele.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 326 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Tendo em vista que tais variveis foram declaradas como constantes, seu valor
no pode ser alterado aps a sua declarao. Observe que a tentativa de atribuir um
valor a qualquer uma destas variveis ir gerar um erro de compilao.
20.3 - Enums
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 327 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 328 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Note que ao invs de apenas criamos este novo valor, fomo forados a alterar
os valores das variveis BOM e OTIMO. Imagine isso em um contexto com duzentas
ou trezentas variveis, por exemplo.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 329 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Observe que no exemplo acima quatro valores foram criados nas linhas 14 a 17,
mas, diferentemente das constantes, eles no possuem um tipo especfico sendo que
todos eles so vistos como elementos da enumerao Conceitos. Isto j torna
desnecessria a denominao de um prefixo de domnio para os nomes dos
conceitos, visto que a prpria enum j cumpre este papel.
Ainda sobre o exemplo acima, tambm vale ressaltar que uma enum pode ter
mtodos. O mtodo calcularAprovacao na linha 19 recebe como parmetro agora no
mais um nmero inteiro qualquer, mas sim uma enum do tipo ConceitosEnum. Desta
forma garante-se que ele sempre receber um valor conhecido e que no teremos os
mesmos problemas que poderiam ocorrer com uma varivel de um tipo especfico, tal
como ocorria com as constantes.
Por fim, obeserve que como os elementos da enum no possuem mais um valor
atrelado a si, a criao de um novo conceito, tal como um EXCELENTE ou PSSIMO
em nada influenciaria no cdigo j existente dentro da enum.
Uma enum, diferentemente de uma classe, j inicializada quando voc inicia
sua aplicao Java, no necessitando ser instanciada. Vamos agora a um exemplo
de uma enum com mtodo construtor e com atributos:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 330 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 331 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 332 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
21 - Recursividade
Chamada de mtodo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 333 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 10 foi criado o mtodo main() por onde vai comear a execuo do mtodo.
Na linha 11 vamos imprimir a frase Inicio do programa..
Na linha 12 criado um objeto da classe ImprimirPares para podermos chamar o
mtodo imprimir() dessa classe.
Na linha 13 chama o mtodo imprimir() passando o valor 5 como parmetro para a
varivel x. Quando a execuo do programa chega nesta linha o mtodo imprimir()
chamado e a execuo do mtodo vai para a linha 17.
Da linha 18 a 23 temos o algoritmo que soma os nmeros pares.
Na linha 25 imprime a soma dos nmeros pares entre 1 e 5, ou seja, vai imprimir
Soma dos pares: 6.
Na linha 26 acaba o mtodo imprimir(), agora a execuo do programa volta para o
mtodo main(), pois foi ele que chamou o mtodo imprimir(), repare tambm que a
execuo do mtodo volta para a linha posterior a chamada do mtodo, ou seja, vai para a
linha 13.
Na linha 14 vamos imprimir a frase Fim do programa..
Na linha 15 acaba o mtodo main() e encerra o programa.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 334 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Inicio do programa.
Soma dos pares: 6
Fim do programa.
Lembre-se: toda vez que um mtodo termina sua execuo, o fluxo de execuo do
programa volta para a linha posterior a qual ele foi chamado.
Recurso
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 335 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 336 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O mtodo main() vai chamar o mtodo imprimirRecursivo(5), que por sua vez vai
chamar o mtodo imprimirRecursivo(4) at chegar no imprimirRecursivo(0), que ir parar
as chamadas recursivas e volta para quem chamou ele passando o resultado da soma
recursiva.
Mtodo recursivo que recebe um nmero x por parmetro e imprime seu valor em
ordem decrescente at 1.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 337 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Agora precisamos definir o que nosso mtodo deve fazer, neste caso deve imprimir o
valor de x, e em seguida chama a si mesma diminuindo em 1 o valor de x.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 338 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Exemplo de fatorial:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 339 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 340 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Exemplo fibonacci
Seqncia de fibonacci.
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 341 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 342 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Ou seja, para calcular o fibonacci de 2, eu preciso primeiro calcular seu valor para 1 e
para 0 (zero) e somar os dois resultados
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 343 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Mtodo recursivo que deve calcular o valores entre um nmero qualquer recebido e 0
(zero), ou seja, se receber 5, deve calcular 5 + 4 + 3 + 2 + 1 + 0.
Neste exemplo queremos parar de somar os valores, quando x for igual a 0 (zero),
ento na linha 29 se o x recebido for igual a 0 (zero), ser retornado o valor 0 (zero).
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 344 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 35, ser somado o valor do x atual com a soma de todos os seus
antecessores at 0.
Na linha 11, temos o mtodo main() e na linha 13 chamamos o mtodo somar(10),
queremos a soma dos nmeros 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0.
A figura abaixo mostra as chamadas de mtodo recursivo e qual o valor retornado por
elas.
Na linha 13, ser armazenado na varivel resultado o valor 55, que o resultado de
somar(10), e na linha 14 ser impresso este valor.
Neste exemplo temos uma classe Animal e cada animal tem uma especie e um
nome.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 345 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 346 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 347 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 348 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 349 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
21.1 - Exerccios
1-) Crie um mtodo recursivo que recebe como parmetro um nmero x, e imprima os
nmeros de 1 at x.
Exemplo:
X = 10
Imprime: 1 2 3 4 5 6 7 8 9 10
Exemplo:
Vetor {3, 7, 5, 9, 1, 0}
Tamanho 6
Otimize o algoritmo do fibonacci para que somente chame os mtodos que no conhecemos
seu resultado.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 350 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
22 - Bubble Sort
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 351 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 352 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 353 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 23 foi criada uma varivel boolean para controlar se o vetor est ordenado.
Na linha 32 se houve alguma troca de valor, ento o vetor ainda no est totalmente
ordenado, e a varivel de controle alterada para falso.
Na linha 36 se o vetor estiver ordenado ento para a execuo do for que controla a
quantidade de vezes que o vetor ser ordenado.
Neste exemplo temos uma classe Animal e cada animal tem uma especie e um
nome.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 354 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 355 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 356 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
pela quantidade de iteraes que ser realizada no caso a varivel i, porque sabemos que
quando uma iterao termina o ultimo elemento j est ordenado.
Na linha 37 verificamos se nome do animal da posio atual do vetor maior que o
nome do prximo animal do vetor, se for maior trocamos os animais de lugar.
Na linha 41 se houve alguma troca de animal, ento o vetor ainda no est totalmente
ordenado, e a varivel de controle alterada para falso.
Na linha 45 se o vetor estiver ordenado ento para a execuo do for que controla a
quantidade de vezes que o vetor ser ordenado.
Tambm podemos ordenar os animais pela especie e depois pelo nome do animal:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 357 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
22.5 - Exerccios
Exemplo:
vetor {1, 2, 4, 3} tem apenas os elementos 3 e 4 invertidos, mas mesmo assim nosso
algoritmo vai percorrer 3 vezes esse vetor.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 358 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
23 - Merge Sort
Divide o vetor at ter um par de elementos, ordena esses elementos e altera a ordem
deles no vetor original se necessrio:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 359 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Ordena outro par de elementos e altera a ordem deles no vetor original se necessrio:
Depois que tem 2 pares ordenados, ordena este 2 pares e altera a ordem deles no
vetor original se necessrio:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 360 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 361 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Ordena outro par de elementos e altera a ordem deles no vetor original se necessrio.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 362 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Depois que tem 2 pares ordenados, ordena este 2 pares e altera a ordem deles no
vetor original se necessrio:
Depois que as duas metades do vetor est ordenado, ordena novamente as duas
metades e altera a ordem dos elementos no vetor original se necessrio:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 363 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 364 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 365 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 366 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 367 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 25 tem a assinatura do mtodo recursivo de merge sort, que agora recebe a
posio inicial e final do vetor que ser ordenado.
Na linha 27 verifica se o inicio menor que o fim 1, para saber se o vetor no est
vazio.
Na linha 29 calcula a posio que seria o meio do vetor que ser ordenado, est
posio utilizada para dividir o vetor e depois intercalar seus valores.
Na linha 31 chama o mtodo recursivamente, s que agora a posio final do vetor vai
ser a posio do meio do vetor, que foi calculado anteriormente, assim faremos as chamadas
recursivas caminhando para a esquerda do vetor.
Na linha 35 chama o mtodo recursivamente, s que agora a posio inicial vai ser a
posio do meio do vetor, que foi calculado anteriormente, assim faremos as chamadas
recursivas caminhando para a direita do vetor.
Na linha 38 chama o mtodo que vai intercalar (ordenar) os valores do vetor.
A imagem abaixo mostra a arvore de chamadas recursivas, caso este mtodo receba
um vetor de 5 elementos.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 368 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 369 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste exemplo temos uma classe Animal e cada animal tem uma especie e um
nome.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 370 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O mtodo do merge sort muito parecido com o anterior, nica diferena que na
assinatura do mtodo ele recebe um vetor de objetos Animal.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 371 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 372 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O mtodo intercala muito parecido com o anterior, na assinatura do mtodo linha 53,
alterou o tipo do vetor que ele recebe, para receber um vetor de objetos Animal.
Na linha 55 cria um vetor de objetos Animal, para guardar temporariamente os
Animais ordenados pelo nome.
Na linha 70 foi alterado, para ordenar os nomes dos Animais em ordem crescente.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 373 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
23.5 - Exerccios
Crie classe que tenha um mtodo que implemente o Merge-Sort, para ordenar um
vetor de Alunos de acordo com seu nome, caso exista mais de um aluno com o mesmo
nome, ento deve orden-los pela matricula.
OBS: No h matriculas duplicada
Cristiano 101010 3
Rafael 100000 13
Rafael 100011 10
Sakurai 100023 20
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 374 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
24 - Quick Sort
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 375 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
0 1 2 3 4
x = 15 S 15 4 20 7 10
0 1 2 0 0
x=7 Me 7 4 10 Ig 15 Ma 20
0 0 0
Me 4 Ig 7 Ma 10
Ex:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 376 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
0 1 2 3 4 5 6 7 8 9 10
12 4 15 7 10 2 1 13 6 20 28
S
i j
x = S[p] = 12
0 1 2 3 4 5 6 7 8 9 10
12 4 15 7 10 2 1 13 6 20 28
S
i j
4 < 12? Sim -> incrementar ponteiro...
0 1 2 3 4 5 6 7 8 9 10
12 4 15 7 10 2 1 13 6 20 28
S
i j
15 < 12? No! -> parar ponteiro...
0 1 2 3 4 5 6 7 8 9 10
12 4 15 7 10 2 1 13 6 20 28
S
i j
28 > 12? Sim -> decrementar ponteiro...
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 377 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
0 1 2 3 4 5 6 7 8 9 10
12 4 15 7 10 2 1 13 6 20 28
S
i j
20 > 12? Sim -> decrementar ponteiro...
0 1 2 3 4 5 6 7 8 9 10
12 4 15 7 10 2 1 13 6 20 28
S
i j
6 > 12? No! -> parar ponteiro...
0 1 2 3 4 5 6 7 8 9 10
12 4 6 7 10 2 1 13 15 20 28
S
i j
Continuando...
0 1 2 3 4 5 6 7 8 9 10
12 4 6 7 10 2 1 13 15 20 28
S
i j
7 < 12? Sim -> incrementar ponteiro...
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 378 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
0 1 2 3 4 5 6 7 8 9 10
12 4 6 7 10 2 1 13 15 20 28
S
i j
10 < 12? Sim -> incrementar ponteiro...
0 1 2 3 4 5 6 7 8 9 10
12 4 6 7 10 2 1 13 15 20 28
S
i j
2 < 12? Sim -> incrementar ponteiro...
0 1 2 3 4 5 6 7 8 9 10
12 4 6 7 10 2 1 13 15 20 28
S
i j
1 < 12? Sim -> incrementar ponteiro...
0 1 2 3 4 5 6 7 8 9 10
12 4 6 7 10 2 1 13 15 20 28
S
i j
13 < 12? No! -> parar ponteiro...
0 1 2 3 4 5 6 7 8 9 10
12 4 6 7 10 2 1 13 15 20 28
S
i j
13 > 12? Sim -> decrementar ponteiro...
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 379 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
0 1 2 3 4 5 6 7 8 9 10
12 4 6 7 10 2 1 13 15 20 28
S
j i
1 > 12? No! -> parar ponteiro...
0 1 2 3 4 5 6 7 8 9 10
1 4 6 7 10 2 12 13 15 20 28
S
j i
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 380 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Observe que nesta etapa, o algoritmo visa divider o vetor de entrada utilizando o
mtodo dividir, conforme a linha 32. Nesta etapa de diviso veremos como o algoritmo se
comporta para realizar a ordenao a cada etapa desta diviso.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 381 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 382 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Agora, j finalizada a classe QuickSort, vamos elaborar uma classe de teste para
vermos o comportamento do algoritmo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 383 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
24.4 - Exerccios
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 384 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
25 - Pesquisa sequencial
[5, 4, 0, 8, 7, 9]
O contador est com valor 0 (zero) e verifica se o nmero dentro do vetor na posio
do contador igual ao nmero procurado 0 (zero).
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 385 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Como o nmero que est dentro do vetor no o nmero que est sendo procurado,
ento incrementa em 1 o valor do contador e verifica novamente se o valor que est dentro
do vetor na posio do contador igual ao valor procurado.
Como o nmero que est dentro do vetor ainda no o nmero que est sendo
procurado, ento incrementa em 1 o valor do contador e verifica novamente se o valor que
est dentro do vetor na posio do contador igual ao valor procurado.
Encontrou o valor procurado dentro do vetor, ento imprime uma mensagem avisando
que encontrou o valor procurado.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 386 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 20, temos a assinatura do mtodo que vai procurar um elemento dentro do
vetor, utilizando o algoritmo de Pesquisa Seqencial.
Na linha 23, utilizamos um for para percorrer todos os elementos do vetor.
Na linha 25, verifica se o numero dentro do vetor, tem o mesmo valor que o nmero
que est sendo procurado, e se encontrou o nmero ento imprime ele na tela e para de
pesquisar.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 387 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 33, verificamos se o tamanho do contador utilizado no for tem um valor maior
que o tamanho do vetor, para verificar se j percorreu todo o vetor, mas no encontrou o
valor procurado.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 388 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 27, temos a assinatura do mtodo que vai procurar uma Pessoa dentro do
vetor de pessoas, utilizando o algoritmo de Pesquisa Seqencial.
Na linha 30, utilizamos um for para percorrer todas as pessoas do vetor.
Na linha 32, verifica se o nome da pessoa dentro do vetor, tem o mesmo nome da
pessoa que est sendo procurada, e se encontrou ento imprime o nome da pessoa na tela e
para de pesquisar.
Na linha 40, verificamos se o tamanho do contador utilizado no for tem um valor maior
que o tamanho do vetor, para verificar se j percorreu todo o vetor, mas no encontrou
alguma pessoa com o mesmo nome.
Este mesmo algoritmo de busca seqencial pode ser programando de uma outra
forma, sem afetar a estrutura do algoritmo, exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 389 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
26 - Pesquisa Binria
Este mtodo de pesquisa muito mais rpido que a pesquisa seqencial, e usa como
base que o vetor j est ordenado:
Dado um vetor:
[0, 1, 2, 4, 5, 6, 7, 8, 9]
Verifica se o valor do vetor que est na posio do meio igual ao valor procurado,
neste caso o valor do meio do vetor 5 e estamos procurando o valor 4.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 390 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Como o valor que estamos procurando menor que o valor que est no meio do vetor,
ento mudamos o valor da posio final para 3.
O valor da posio inicial continua sendo 0 (zero).
Agora o valor da posio meio muda 1.
Como o valor que estamos procurando maior que o valor que est no meio do vetor,
ento mudamos o valor da posio inicial para 2.
O valor da posio final continua sendo 3.
Agora o valor da posio meio muda 2.
Como o valor que estamos procurando maior que o valor que est no meio do vetor,
ento mudamos o valor da posio inicial para 3.
O valor da posio final continua sendo 3.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 391 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 392 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 20, declaramos a assinatura do mtodo que vai procurar por um nmero
dentro de um vetor de nmeros.
Na linha 27, criamos um lao que ser executado at encontrarmos o nmero
procurado ou at a posio inicial ficar maior que a posio final (no encontrar o nmero
dentro do vetor).
Na linha 28, calculamos a posio meio do vetor.
Na linha 32, verifica se o valor que tem no vetor na posio meio igual ao valor do
nmero procurado, se for igual, ento imprimimos seu valor e paramos a pesquisa.
Na linha 40, se no encontramos o valor, vamos diminuir o tamanho do vetor, para
restringir o local onde pode estar o valor procurado.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 393 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Se o valor do meio do vetor for menor que o valor procurado, significa que o valor que
estamos procurando est entre a posio do meio + 1 e o fim do vetor.
Se o valor do meio do vetor for maior que o valor procurado, significa que o valor que
estamos procurando est entre a posio inicial e o meio 1 do vetor.
A linha 52 executada apenas se no encontrou o nmero procurado dentro do vetor.
Dado um vetor de pessoas, queremos pesquisar as pessoas que tem a inicial do nome
entre A e F.
OBS: Neste exemplo no vamos tratar mais de um nome com a mesma inicial e
tambm no vamos tratar intervalos de letras que no tem nome, exemplo: 'G' a 'H'.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 394 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na linha 37, declaramos a assinatura do mtodo que recebe uma letra e um vetor de
pessoas.
Na linha 50 verificamos se a primeira letra do nome da pessoa que est no meio do
vetor igual a letra procurada. Se encontrou o nome, ento retorna a posio do vetor.
Na linha 58, se no encontramos o nome com a letra inicial igual a letra procurada,
vamos diminuir o tamanho do vetor, para restringir o local onde possa estar.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 395 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Se a letra do nome do meio do vetor for menor que a letra procurada, significa que o
nome com a letra que estamos procurando est entre a posio do meio + 1 e o fim do
vetor.
Se a letra do nome do meio do vetor for maior que a letra procurada, significa que o
nome com a letra que estamos procurando est entre a posio inicial e o meio 1 do
vetor.
A linha 57 executada apenas se no encontrou o nmero procurado dentro do vetor,
ento retorna a posio que possui um caractere mais prximo do procurado.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 396 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
26.3 - Exerccios
11. Crie um programa para ordenar (Bubble Sort) um vetor de nmeros inteiros e
pesquisar (Pesquisa Seqencial) um nmero x dentro deste vetor.
OBS: Aproveite que o vetor est ordenado e otimize a pesquisa, para no ter que
percorrer elementos desnecessrios.
12. Crie um programa para pesquisar livros, a pesquisa pode ser feita por autor ou ttulo
do livro.
OBS: Crie uma classe para representar o livro com os atributos que voc achar
necessrio, utilize o algoritmo de busca seqencial ou binria.
13. Crie um programa para pesquisar um nmero dentro de um vetor de inteiros, utilize
um mtodo recursivo que usa o algoritmo de pesquisa seqencial para encontrar o
nmero.
OBS: No h necessidade de nenhuma varivel externa para utilizar o mtodo de
busca seqencial recursiva, se quiser utilize a seguinte assinatura de mtodo: public
void pesquisaRecursiva(int posicao, int valor, int[] numeros)
[1, 3, 6, 7, 8, 10, 11, 12, 15, 16, 17, 18, 19, 20, 23, 24, 25, 27, 29, 30]
Crie um programa que contenha, um mtodo que utiliza pesquisa seqencial e outro
que utiliza pesquisa binria, depois pesquise os seguintes nmeros:
3, 6, 10, 12, 18, 25, 30
e informe qual o mtodo de pesquisa encontrou o valor procurado mais rpido, ou
caso os dois algoritmos encontrem o valor em uma quantidade de passos iguais,
ento imprima que os dois mtodos foram equivalentes para encontrar o valor.
15. Crie um novo programa para melhorar o exerccio 2, agora adicione a ordenao
utilizando (Merge Sort), e permita pesquisar (Pesquisa Binria) livros por ttulo, autor
ou faixa de preo, por exemplo: pesquisar livros que tem seu preo entre R$50 e
R$100.
OBS: A ordenao pode ser feita antes de pesquisar o livro, dessa forma pode
ordenar os livros por autor, ttulo ou preo antes de comear a pesquisar.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 397 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
27 - Collection
Uma coleo (collection) um objeto que serve para agrupar muitos elementos em
uma nica unidade, estes elementos preciso ser Objetos, pode ter colees homogneas e
heterogneas, normalmente utilizamos colees heterogneas de um tipo especifico.
O ncleo principal das colees formado pelas interfaces da figura a abaixo, essas
interfaces permitem manipular a coleo independente do nvel de detalhe que elas
representam.
Temos quatro grandes tipos de colees: Set (conjunto), List (lista), Queue (fila) e
Map (mapa), a partir dessas interfaces temos muitas subclasses concretas que implementam
varias formas diferentes de se trabalhar com cada coleo.
Todas as interfaces e classes so encontradas dentro do pacote (package) java.util,
embora a interface Map no ser filha direta da interface Collection ela tambm
considerada uma coleo devido a sua funo.
java.util.Collection
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 398 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Alguns dos mtodos que devem ser implementados por todas as subclasses de
Collection:
java.util.Set
java.util.Queue
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 399 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
A interface Queue uma coleo do tipo fila. As principais caractersticas deste tipo
de coleo so: a ordem que os elementos entram na fila a mesma ordem que os
elementos saem da fila (FIFO), podemos tambm criar filas com prioridades.
java.util.Map
A interface Map uma coleo do tipo mapa. As principais caractersticas deste tipo
de coleo so: os objetos so armazenados na forma de chave / valor, no pode haver
chaves duplicadas dentro do mapa.
Para localizar um objeto dentro do mapa necessrio ter sua chave ou percorra o
mapa por completo.
java.util.List
A interface List uma coleo do tipo lista, onde a ordem dos elementos dado
atravs de sua insero dentro da lista.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 400 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Repare no uso de um parmetro < ... > ao lado do List e ArrayList. Este parmetro
indica que nossa lista foi criada para trabalhar exclusivamente com objetos de um tipo
especfico, como em nosso caso a classe Pessoa. A utilizao deste recurso nos traz uma
segurana maior em tempo de compilao de cdigo, pois temos certeza que apenas ter
objetos do tipo Pessoa dentro da lista.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 401 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
27.2 - Exerccios
2-) Dado uma classe Livro, com as propriedades nome, autor, isbn, paginas e preo, crie um
programa que permita ao usurio entrar com os dados de alguns livros, esses livros devem
ser guardados dentro de uma coleo filha da interface java.util.List.
Depois crie um mtodo que utiliza o algoritmo de Bubble Sort, para ordenar est lista
de acordo com o nome do livro e no final imprima a lista de livros ordenado.
3-) Continuando o exerccio 2, crie um algoritmo de Pesquisa Binaria, que possa consultar
um livro pelo seu nome, autor ou isbn. Lembre-se de ordenar a lista de livros antes de fazer a
pesquisa.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 402 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Usamos os pacotes para separa os fontes da nossa aplicao, de forma que fique
mais fcil encontrar classes de um determinado assunto ou objetivo.
Nome de classe
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 403 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
OBS: Dentro de cada arquivo .java s pode existir uma classe public, as demais
classes devem ter acesso default. E o nome do arquivo .java deve ser o idntico ao nome da
classe public.
Nome de mtodo
a) se o nome do mtodo tem apenas uma palavra, ento o nome todo em minsculo;
b) se o nome do mtodo tem mais de uma palavra, ento o primeiro caractere de cada
palavra a partir da segunda palavra deve se maisculo e o restante da palavra em minsculo.
Exemplo:
Nome de varivel
Exemplo:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 404 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Identao
Uma outra boa pratica do desenvolvimento em qualquer linguagem de programao
a identao (alinhamento) do cdigo fonte, facilitando a visualizao.
Um bom padro de identao pode ser da seguinte forma, a cada bloco de abre chave { e
fecha chave } ou a cada condio que pode executar um cdigo, deve ter seu cdigo
interno com um espaamento maior, exemplo:
Comentrios
/**
* Javadoc
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 405 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 406 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Apndice B Javadoc
Comentrios gerais
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 407 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Comentrios de mtodos
@throws - indica as excees que um dado mtodo dispara com uma descrio associada
Comentrios de serializao
Exemplo:
/**
* Mtodo construtor.
* Voc deve utiliza-lo para conectar a base de dados.
* @param usuario usurio do banco de dados
* @param senha senha do usurio de acesso
* @param ipDoBanco endereo IP do banco de dados
* @param nomeDaBase nome da base de dados
* @throws SQLException
* @throws Exception
* @author Cristiano Camilo
* @since 1.0
* @version 1.0
*/
public ConexaoBD(String usuario, String senha, String ipDoBanco, String nomeDaBase)
throws SQLException{
DriverManager.registerDriver(new OracleDriver());
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@(description=(address=(host="+ipDoBanco+")(protocol=tcp)(port=15
21))(connect_data=(service_name="+nomeDaBase+")))",usuario,senha); stm =
conn.createStatement();
System.out.println("Conectado ao banco de dados.");
}
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 408 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Parameters:
usuario usurio do banco de dados
senha senha do usurio de acesso
ipDoBanco endereo IP do banco de dados
nomeDaBase nome da base de dados
Throws:
SQLException
Exception
@author
Cristiano Camilo
@since
1.0
@version
1.0
Depois comentar seu programa usando as tags acima, basta somente deixar o
javadoc fazer o seu trabalho, pois o mesmo vai se encarregar de gerar nosso HTML!
No diretrio que contm os arquivos-fonte execute o comando:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 409 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 410 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Na janela de opes que ser exibida, selecione a opo Javadoc e clique em Next...
A prxima janela a ser exibida pede que mais informaes sejam fornecidas.
A primeira delas corresponde ao caminho do arquivo executvel do Javadoc, mais
abaixo voc deve marcar a partir de qual pacote do seu projeto o Javadoc ser gerado.
possvel deixar a pasta do projeto marcada para que o Java gere documentao de todo o
seu projeto.
Mais abaixo existe a opo de visibilidade dos membros os quais voc deseja criar
seu Javadoc. Deixe marcada a opo public, para que a documentao seja gerada para
todos os membros de suas classes que estaro disponveis para as demais classes. O
importante aqui notar que ser gerada a documentao sempre do nvel selecionado at os
outros nveis menos restritos, ou seja, selecionando private, a documentao gerada ser de
todos os termos private, default ou package, protected e public.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 411 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Por fim temos a opo de Doclet, que corresponde ao padro de fonte que ser
utilizado, deixe marcada a opo Standard Doclet, e aponte o destino de gerao de sua
documentao na opo Destination.
Feito isso, basta clicar em finish e sua documentao estar disponvel na pasta
solicitada.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 412 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O Java Development Kit o nome dado ao pacote de aplicativos fornecidos pela SUN
para o desenvolvimento de aplicaes Java. Este manual dedica-se a lhe fornecer os passos
bsicos para efetuar a instalao deste pacote de aplicativos e como configur-lo
adequadamente.
Fazendo o download
Para que voc possa desenvolver aplicaes desktop e web de mdio porte, o pacote do
JavaSE j lhe suficiente. Para baix-lo acesse a seguinte URL:
http://java.sun.com/javase/downloads/index.jsp
E busque pela verso mais atualizada para download. Atualmente temos a verso 6.0
Update 7. Neste ponto, evite verses beta, pois estas ainda esto sendo testadas afim de
atingir seu ponto de maturidade e estabilidade.
A tela seguinte ir solicitar que voc escolha a sua plataforma. Faa-o e no se esquea
de marcar a caixa de seleo de aceite da licena, logo acima do boto Continue.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 413 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
A primeira tela que aparece sobre a Licensa de uso do Java, clique em Aceitar
(Accept) para continuar.
Na prxima tela podemos definir onde o Java deve ser instalado, clique em Prximo
(Next) para continuar.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 414 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 415 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Escolha onde o JRE deve ser instalado e clique em Prximo (Next) para continuar.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 416 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 417 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 418 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Adicione a varivel do sistema JAVA_HOME com o valor igual ao caminho onde foi
instalado o Java.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 419 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
No command digite java version, deve ser impresso no console a verso do Java
que est instalado.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 420 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Instalao do Netbeans
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 421 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Neste tela precisamos informar onde o NetBeans ser instalado e qual verso do Java
vamos utilizar.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 422 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Nesta tela podemos definir onde ser instalado o servidor web Glassfish.
Nesta tela podemos definir onde ser instalado o servidor web Tomcat.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 423 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 424 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 425 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Tipos de campos:
char
varchar(tamanho)
int
float(tamanho, casas)
date
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 426 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Exemplo de insert:
Exemplos de consultas:
select * from pessoa;
select nome, altura from pessoa;
Restringindo a consulta:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 427 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 428 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
O NetBeans uma IDE de desenvolvimento que fornece suporte aos mais variados
segmentos de desenvolvimento Java, bem como algumas outras linguagens de programao
como Ruby e C/C++, tambm possui suporte a modelagem UML. Permite o desenvolvimento
de aplicaes Java simples console, aplicaes desktop client/server, aplicaes web
distribudas e aplicaes de dispositivos portteis.
O NetBeans tambm conta com um ambiente de desenvolvimento amigvel, simples e
intuitivo.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 429 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
A seguir vamos mostrar um passo a passo de como criar uma aplicao console
utilizando o NetBeans:
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 430 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 431 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Ateno, caso voc queira resgatar suas classes mais tarde, este ser o caminho que voc
acessar para localizar seus arquivos .java. Dentro do projeto tem uma pasta chamada src e
dentro desta pasta fica os arquivos fontes.
- Set as Main Project (Definir como Projeto Principal), apenas identificar a IDE que
este seu projeto principal de trabalho, caso voc possua mais de um projeto aberto dentro
do NetBeans.
- Create Main Class (Criar Classe Principal), possvel criar uma classe inicial no
projeto. Esta classe ser responsvel por iniciar a chamada a outras classes do projeto.
Coloque um nome que julgar melhor, sendo que no nosso caso colocamos o nome
HelloWorld, devido a sua funo em nosso projeto.
Feito isso clicamos em Finish (Finalizar) para terminar a criao do projeto Java.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 432 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 433 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Para executarmos a aplicao podemos clicar no cone Run Main Project (Executar
projeto principal) ou podemos executar apenas a classe que criamos clicando com o boto
direito em cima de HelloWorld.java e clicando no menu Run File (Executar arquivo).
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 434 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Depois que executamos a aplicao Java temos a seguinte sada na aba Output.
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 435 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Bibliografia
[PROJECT GREEN] A brief History of the Project Green - https://duke.dev.java.net/green/
Java Wikipdia -
http://pt.wikipedia.org/wiki/Java_(linguagem_de_programa%C3%A7%C3%A3o)
Varargs - http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
NetBeans - http://www.netbeans.org/
Eclipse http://www.eclipse.org
Recursividade - http://pt.wikipedia.org/wiki/Recurs%C3%A3o
Fibonacci - http://pt.wikipedia.org/wiki/N%C3%BAmero_de_Fibonacci
Fatorial - http://pt.wikipedia.org/wiki/Fatorial
Merge Sort -
http://www.cse.iitk.ac.in/users/dsrkg/cs210/applets/sortingII/mergeSort/mergeSort.html
Big Java Cay Horstmann
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 436 -
Programao Orientada a Objetos e Algoritmos em Java Universidade Metodista de So Paulo
Criado por Cristiano Camilo dos Santos de Almeida e Rafael Guimares Sakurai - 437 -