Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Apostila de Java

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 59

Escola Tcnica de Braslia

Java e POO

JAVA e a Programao Orientada a Objetos

Escola Tcnica de Braslia

Java e POO

SUMRIO

PARTE 1 Fundamentos Bsicos da Linguagem Java ........................................................................................... 3


PARTE 2 Principais Estruturas da Linguagem Java ........................................................................................... 15
PARTE 3 Funes Matemticas, Funes de String, Formatao de nmeros e de data/hora ............................... 23
PARTE 4 Indroduo excees em Java ........................................................................................................ 31
PARTE 5 Array e Matrizes ............................................................................................................................... 35
PARTE 6 Orientao a Objetos ........................................................................................................................ 40

Escola Tcnica de Braslia

Java e POO

PARTE 1 Fundamentos Bsicos da Linguagem Java

Escola Tcnica de Braslia

Java e POO

Introduo
James Gosling e outros desenvolvedores da Sun estavam trabalhando em um projeto de TV interativa em
meados da dcada de 1990, quando Gosling descontente com a linguagem C++, trancou-se em seu escritrio e criou
uma nova linguagem adequada ao projeto e que focalizava alguns de seus motivos de frustrao na C++. O esforo de
TV interativa da Sun falhou, mas seu trabalho na linguagem Java que facilitava a reescrita de software rendeu frutos.
Java foi lanada pela Sun no segundo semestre de 1995, em um kit de desenvolvimento gratuito, do qual era
possvel fazer o download pelo Web site da empresa. O fato de programas Java chamados applets poderem ser
executados como parte das pginas Web contribui para atrair centenas de milhares de desenvolvedores.
Java uma linguagem orientada a objetos, independente de plataforma e segura, projetada para ser mais fcil
de aprender do que C++ e mais difcil de abusar do que C e C++.
A Programao Orientada a Objetos (P.O.O) um tcnica de desenvolvimento de software em que um
programa percebido como um grupo de objetos que trabalham juntos. Os objetos so criados como modelos,
chamados classes, e contem os dados e as instrues necessrias para usar esses dados. Java completamente
orientada a objetos.
Independente de plataforma, um programa Java executado sem modificaes em diferentes sistemas
operacionais. Os programas Java so compilados para um formato chamado bytecode, que executado por qualquer
sistema operacional, software ou dispositivo com um interpretador Java.
Caractersticas:
Java cuida automaticamente da alocao e desalocao de memria;
Java no inclui ponteiros;
Java s inclui herana nica;
Segurana.
A falta de ponteiros e a presena de gerenciamento automtico de memria so dois dos elementos-chave
para a segurana de Java. Outro a forma como os programas Java executados em pginas Web so limitados a um
subconjunto da linguagem, para evitar que um cdigo malicioso prejudique o computador de um usurio.
Os recursos da linguagem que poderiam facilmente ser empregados para fins prejudiciais como a
capacidade de gravar dados em um disco e excluir arquivos no podem ser executados por um programa quando ele
executado pelo interpretador Java de um browser na Internet.
SDK
Software Development Kit um conjunto de programas da linha de comando, usados para criar, compilar e
executar programas Java. Cada nova verso da Java acompanhada por uma nova verso do kit de desenvolvimento.
Ele no oferece uma interface grfica com o usurio, editor de textos ou outros recursos. Para usar o kit, necessrio
digitar os comandos em um prompt de texto, ou seja, um prompt de linha de comando.
No entanto, existem diversas IDEs (Integrated Development Environment), um ambiente integrado para
desenvolvimento de software, tais como: JCreator, Eclipse, NetBeans, dentre outros.
Exemplo:
javac Soma.java compila a classe Soma e gera o arquivo bytecode.
Java Soma interpreta o bytecode da classe Soma.
O download do Software Development Kit pode ser baixaido no site da Sun (http://java.sun.com) e est
disponvel para diversos sistemas operacionais.
Depois da instalao do JDK, teremos que editar as variveis de ambiente do computador para incluir as
referncias ao kit.
1. Edit a varivel PATH do computador e acrecente uma referncia pasta Bin do Software Development
Kit (C:\Program Files\Java\jdk1.6.0_10\bin) se voc instalou nesta pasta.
2. Edite ou crie uma varivel CLASSPATH para que contenha uma referncia pasta ativa, seguida por
uma
referncia
ao
arquivo
tools.jar
na
pasta
lib
do
kit
(.;C:\Program
Files\Java\jdk1.6.0_10\lib\tools.jar). No esquea o ponto-e-vrgula.

Escola Tcnica de Braslia

Java e POO

O Java Software Development Kit exige o uso de uma linha de comando para compilar os programas Java,
execut-los e tratar de outras tarefas. Uma linha de comando um modo de operar um computador digitando
comandos no seu teclado.

Dicas:

Para abrir uma pasta, digite cd seguido pelo nome da pasta e pressione Enter;
o Exemplo: cd c:\temp.
Digite cd \ para abrir a pasta raiz na unidade de disco;
Digite cd.. para retornar ao nvel anterior;
Para criar uma pasta, digite: md e o nome da pasta;
o Exemplo: md c:\Teste
Para deletar a pasta, digite: rd e o nome da pasta;
o Exemplo: rd c:\Teste
Ao contrrio das ferramentas de desenvolvimento Java mais sofisticadas, o Software Development Kit no
inclui um editor de textos para criar cdigos- fonte.
Para que um editor ou processador de textos funcione com o kit, ele precisa ser capaz de salvar arquivos de
texto sem formatao. No Windows temos, por exemplo, o Bloco de Notas que s trabalha com arquivos de texto
limpo. A desvantagem do uso de editores de texto simples, que eles no exibem nmeros de linha enquanto o
cdigo-fonte criado.
Ver os nmeros de linha ajuda na programao Java, pois muitos compiladores indicam o nmero de linhas
em que ocorreu o erro.
Exemplo:
Menus.java:2: Class Font nor found in type declaration

Escola Tcnica de Braslia

Java e POO

O nmero 2 depois do nome do arquivo fonte Java indica a linha que disparou o
erro do compilador. Com um editor de textos que aceita numerao, podemos ir diretamente para essa linha e
comear a procurar o erro.
Execute seu editor preferido e digite o programa Java abaixo:
Obs.: Certifique-se de que todos os parnteses, chaves e aspas na listagem sejam digitados corretamente e
use maisculas e minsculas no programa exatamente como aparecem.
Exemplo 1: Classe Oi !

Depois de digitar o programa, salve o arquivo em algum lugar do disco rgido com o nome Oi.java. Os cdigosfonte Java precisam ser salvos com nomes terminando em .java.
Se voc estiver usando o Windows, um editor de textos como o Bloco de Notas poder acrescentar uma
extenso txt extra ao nome de arquivo de qualquer fonte Java salvo. Por exemplo, Oi.java ser salvo como Oi.java.txt.
Como uma alternativa para evitar este problema, coloque aspas em torno do nome de arquivo ao salvar um arquivo
fonte.

Compilando e executando o programa


Abra uma janela da linha de comando, depois abra a pasta na qual o arquivo foi salvo. Quando estiver na
pasta correta, poderemos compilar Oi.java digitando:
Exemplo: javac Oi.java
Neste momento gerado o arquivo bytecode Oi.class.
Obs 1.: O compilador no apresenta qualquer mensagem se o programa for compilado com sucesso.
Obs 2.: Se houver problemas, o compilador lhe dir exibindo cada erro junto com a linha que disparou o erro.
Obs 3.: Se nenhum pacote tiver sido criado o arquivo Oi.class estar na mesma pasta do arquivo Oi.java
Para executar o programa digite:
java Oi
Se o aquivo for interpretado corretamente pela mquina virtual Java, aparecer a palavra Oi,<Nome do
Usurio> no prompt de comando.

Escola Tcnica de Braslia

Java e POO

Introduo programao Java


Java uma linguagem sensvel ao caixa, ou seja, distingue maisculas de minsculas: nome diferente de
Nome, por exemplo.
Comentrios
So os textos usados para anotar explicaes no prprio programa e desconsiderados pelo compilador.
Smbolo
Descrio
//
Comentrio de uma linha
/* */
Comentrio de bloco (pode conter vrias linhas)
/** /
Comentrio de documentao
Obs 1.: Os comentrios de documentao, colocados antes da declarao dos elementos do programa, podem
ser extrados pela ferramenta javadoc e produzir pginas de documentao em HTML.
Operadores
Operadores Aritmticos
Operador
+
*
/
%

Descrio
Adio
Subtrao
Multiplicao
Diviso
Resto da diviso

Operadores de Incremento e decremento


Operador
++
--

Descrio
Incremento unitrio (adiciona uma unidade)
Decremento unitrio (subtrai uma unidade)

Obs1.: Se usado como prefixo (antes da varivel), a operao realizada antes do uso do valor da varivel.
Exemplo:
int a=1,b;
b=++a;// b recebe 2, a passa a valer 2.
Obs 2.: Se usado como sufixo (depois da varivel), a operao realizada depois do uso do valor da varivel.
Exemplo:
int a=1,b;
b=a++;//b recebe 1, a passa a valer 2;

Escola Tcnica de Braslia

Java e POO

Operadores Relacionais
Operador
==
!=
>
>=
<
<=

Descrio
Igual
Diferente
Maior que
Maior ou igual a
Menor que
Menor ou igual a

Obs 1.: O operador de igualdade == no deve ser confundido com o operador de atribuio =.
Obs 2.: No podem ser usados para comparar strings (literal).
Operadores Lgicos
Operador
&&
||
!

Descrio
E lgico (and)
Ou lgico (or)
Negao (not)
Operador Ternrio

um valor simples que permite usar o valor de duas expresses diferentes conforme o resultado da condio.
Sua sintaxe :
<cond>?<expresso_se_verdadeiro>:<expresso_se_falso>
Se a expresso cond verdadeira, retornado o resultado de expresso_se_verdadeiro, seno retornado o
resultado de expresso_se_falso.
Operadores de atribuio compostos
Expresses assim:
varivel = varivel operador expresso
a=a+1;
Podem ser escritas assim:
varivel operador = expresso
a+=1;
Operador
Descrio
+=
Soma e atribui
-=
Subtrai e atribui
+=
Multiplica e atribui
/=
Divide e atribui
%=
Calcula o resto e atribui

Escola Tcnica de Braslia

Java e POO

Precedncia dos operadores


So as regras que determinam a ordem com que os diferentes operadores sero processados nas expresses:
Nvel
Operadores
1
()
2
++ - 3
*/%
4
+5
== ! =
6
&&
7
||
8
?:
9
= += - + *= /= %=
Obs .: Parnteses so usados para alterar a ordem natural das expresses.
Variveis
A declarao de variveis em Java requer um tipo de dados, um nome (identificador) e, opcionalmente, um
valor inicial.
Exemplo:
int a;
Uma constante, ou varivel constante, uma varivel com um valor que nunca muda. Para declarar uma
constante, use a palavra-chave final antes da declarao da varivel e inclua um valor inicial para essa varivel, como
a seguir:
final Double PI=3.141592;
final boolean DEBUG = false;
final int voltas=25;
Tipos de dados primitivos:
Definem o conjunto de valores que podem ser armazenados em uma varivel e tambm as operaes sobre
seus valores. A linguagem Java possui oito tipos primitivos de dados:
Tipo

Descrio
Byte
Inteiros positivos e negatibos
Short
Inteiros positivos e negativos
Int
Inteiros positivos e negativos
Long
Inteiros positivos e negativos
Float
Valores em ponto flutuante
Double
Valores em ponto flutuante
Char
Caracteres individuais
Boolean
Tipo lgico, s assume false ou true
Obs.: String uma classe em Java.

Tamanho
1
2
4
8
4
8
-

Intervalo
-128 a + 127
-32.768 a +32.767
-2.147.483.648 a 2.147.483.647
-2^64 a +2^64-1
1.40239846E-45 a 3.40282347E+38
4.9406564E-324 a 1.79769313E+308
-

Escola Tcnica de Braslia

Java e POO

Explicando um cdigo-fonte passo-a-passo


Exemplo 2: Classe Oi! comentada
public class Oi{
public static void main(String args[]){
System.out.println(Oi!);
}
}
a) public um especificador do mtodo que indica que este acessvel externamente a esta classe (para
outras classes que eventualmente seriam criadas).
b) class a palavra reservada que marca o incio da declarao de uma classe.
c) static qualificador ou specifier, que indica que o mtodo deve ser compartilhado por todos os objetos
que so criados a partir desta classe. Os mtodos static podem ser invocados, mesmo quando no foi
criado nenhum objeto para a classe.
d) void o valor de retorno da funo, quando a funo no retorna nenhum valor ela retorna void, uma
espcie de valor vazio que tem ser especificado.
e) main este um nome particular de mtodo que indica para o compilador o incio do programa. dentro
deste mtodo e atravs das iteraes entre os atributos, variveis e argumento visveis nele que o
programa se desenvolve.
f) (String args[]) argumento do mtodo main, ele um vetor de strings que formado quando so
passados ou no argumentos atravs da invocao do nome do programa na linha de comando do
sistema.
g) System.out.pritln chamada do mtodo println para o atributo out da classe System, o argumento uma
constante do tipo String, para imprimir a cadeia Oi! e posicionar o cursor na linha abaixo.
Exemplo 3: Operadores
import javax.swing.JOptionPane;
public class Operadores {
public static void main(String[] args) {
/* declarando e inicializando 3 variveis inteiras */
int i1 = 7;
int i2 = 3;
int i3;
i3 = i1 + i2; // adio
i3 = i1 - i2; // subtrao
i3 = i1 * i2; // multiplicao
i3 = i1 / i2; // diviso inteira, pois n1 e n2 so do tipo int
i3 = i1 % i2; // resto da diviso inteira
/* declarando e inicializando 3 variveis float */
float f1 = 12.8f; // converso explcita para float
float f2 = 6.4f;
float f3;
f3 = i1 * f2; // converso implcita para float
f3 = f2 / i2; // diviso float, pois o numerador float
f3++; // incremento
f3--; // decremento
f1 = ++f2 + f3; //a varivel i2 ser incrementada antes da atribuio
f1 = f2++ + f3; //a varivel i2 ser incrementada aps a atribuio
/* Operador relacional */
System.out.println( f1 > f2 ? f1 : f2 );
System.out.println( "f1 = " + f1 );

10

Escola Tcnica de Braslia

Java e POO

System.out.println( "f2 = " + f2 );


/* Calculo do preo de venda um produto baseado no preo
de compra e
e no percentual de lucro */
float preoCompra;
float percentualLucro;
System.out.print( "Preo de Compra : " );
preoCompra
=
Float.parseFloat(JOptionPane.showInputDialog("Digite
o
valor
de
compra"));
System.out.print("Percentual de Lucro : ");
percentualLucro
=
Float.parseFloat(JOptionPane.showInputDialog("Digite o percentual de
lucro"));
float lucro = preoCompra * (percentualLucro/100);
float preoVenda = preoCompra + lucro;
System.out.println("Preo de Compra : " + preoCompra +
"\nPercentual de Lucro : " +
percentualLucro +
"\nLucro : " + lucro +
"\nPreo
de
Venda
:
"
+
preoVenda);
int i = 10;
System.out.println(
i = i << 1;
System.out.println(
i = i >> 2;
System.out.println(
int a = 5;
int b = 10;
int c = a | b;
int d = a & b;
System.out.println(
}
}

11

" i " + i );
" i " + i );
" i " + i );

"a = " + a + "\nb = " + b +


"\nc = " + c + "\nd = " + d);

Escola Tcnica de Braslia

Java e POO

JOptionPane
A classe JOptionPane oferece vrios mtodos que podem ser usados para criar caixas de dilogos padro.
As quatro caixas de dilogo padro so os seguintes:
ConfirmDialog Faz uma pergunta, com botes para respostas Yes/No/Cancel.
InputDialog Pedidos de entrada de texto.
MessageDialog Apresenta uma mensagem.
OptionDialog Compreende todos os trs outros tipos de caixa de dilogo.
Se configurarmos um estilo para usar com qualquer uma dessas caixas, deveremos estabelecer antes que a
mesma seja aberta.
Inicialmente, estudaremos apenas as caixas de entrada e sada.
CAIXAS DE DILOGO DE ENTRADA
Uma caixa de dilogo de entrada faz uma pergunta e usa um campo de texto para armazenar a
resposta.
O modo mais fcil de criar uma caixa de dilogo de entrada com uma chamada ao mtodo
showInputDialog(Componente, Objeto). Os argumentos so o componente pai e a string, o componente ou
o cone a exibir a caixa.
A chamada de mtodo da caixa de dilogo de entrada retorna uma string que representa a resposta do
usurio.
Exemplo:
String resposta = JOptionPane.showInputDialog(null, Entre com o seu nome:);
Podemos criar uma caixa de dilogo de entrada com o mtodo showInputDialog (Componente,
Objeto, String, int). Os dois ltimos argumentos so:
O ttulo a exibir na barra de ttulo da caixa de dilogo.
Uma das cinco constantes de classe descrevendo o tipo de caixa de dilogo: ERROR_MESSAGE,
INFORMATION_MESSAGE,
PLAIN_MESSAGE,
QUESTION_MESSAGE,
ou
WARNING_MESSAGE.
Exemplo:
String resposta = JOptionPane.showInputDialog(null, Qual o seu CEP?, Entre com o CEP,
JOptionPane.QUESTION_MESSAGE);
CAIXAS DE DILOGO DE MENSAGEM
uma janela simples, que mostra informaes para tanto invocamos o mtodo showMessageDialog
(Componente, Objeto).
Exemplo:
JOptionPane.showMessageDialog(null, O programa foi desinstalado);
Podemos utilizar tambm o mtodo showMessageDialog (Componente, Objeto, String, int).
Exemplo:
JOptionPane.showMessageDialog(null, Um asteride ir destruir a Terra., Alerta de destruio,
JOptionPane.WARNING_MESSAGE);

12

Escola Tcnica de Braslia

Java e POO

Exemplo 4: JOptionPane- showMessageDialog e showInputDialog


import javax.swing.JOptionPane;
public class EntradaString{
public static void main(String args[]){
String s= JOptionPane.showInputDialog(Digite um texto);
JOptionPane.showMessageDialog(null,s);
}
}
a) import javax.swing.JOptionPane Importao da classe grfica(swing) JOptionPane do pacote extendido
de Java(javax). Necessrio para utilizao da classe que no est no pacote nativo de Java.
Obs. 1: Tudo aquilo que se digita em uma janela da classe JOptionPane.showInputDialog tratado como uma
String em Java.
Obs 2.: Geralmente para utilizarmos um mtodo em Java podemos:
a) Classe.mtodo;
Exemplo: JOptionPane.showInputDialog.
b) Classe.atributo.mtodo;
Exemplo: System.out.println
c) Objeto.mtodo.
Exemplo: janela.setVisible(true);
WRAPPER CLASS
Existem classes especiais para cada um dos tipos primitivos, sua funo dotar cada tipo com mtodos para
que possamos resolver problemas do tipo: Como converter um objeto String para o tipo primitivo int?
O mtodo principal o parseTipo. Exemplos:
byte a = Byte.parseByte(1);
short b=Short.parseShort(1);
int c=Integer.parseInt(1);
long d=Long.parseLong(1);
float e= Float.parseFloat(1);
double f= Double.parseDouble(1);
Exemplo 5: Wrapper class
import javax.swing.JOptionPane;
public class Soma{
public static void main(String args[]){
String numero1, numero2;
float n1, n2, resultado;
numero1=JOptionPane.showInputDialog(Digite o primeiro nmero:);
nmero2=JOptionPane.showInputDialog(Digite o segundo nmero);
n1=Float.parseFloat(numero1);
n2=Float.parseFloat(numero2);
resultado=n1+n2;
JOptionPane.showMessageDialog(null,Resultado:+resultado);
}
}

13

Escola Tcnica de Braslia

Java e POO

Lista 1
1) Em pocas de pouco dinheiro, os comerciantes esto procurando aumentar suas vendas oferecendo desconto.
Faa um algoritmo que possa entrar com o valor de um produto e imprima o novo valor tendo em vista que o
desconto foi de 9%.
2) Criar um algoritmo que efetue o clculo do salrio liquido de um professor. Os dados fornecidos sero: valor da
hora aula, nmero de aulas dadas no ms e percentual de desconto do INSS.
3) Calcular e apresentar o valor do volume de uma lata de leo, utilizando a frmula:
volume: 3.14159*r2* altura.
4) Efetuar o clculo da quantidade de litros de combustvel gastos em uma viagem, sabendo-se que o carro faz 12
km com um litro. Devero ser fornecidos o tempo gasto na viagem e a velocidade mdia. Utilizar as seguintes
frmulas:
distncia = tempo * velocidade
litros usados = distancia /12

14

Escola Tcnica de Braslia

Java e POO

PARTE 2 Principais Estruturas da Linguagem Java

15

Escola Tcnica de Braslia

Java e POO

ESTRUTURAS CONDICIONAIS
IF
Um dos principaris aspectos da programao a capacidade de um programa de decidir o que ele far. Isso
tratado por um tipo especial de instruo, chamada condicional.
Um condicional uma instruo de programao executada apenas se uma condio especfica for atendida.
A condicional mais bsica a palavra-chave if. A condicional if usa uma expresso Booleana para decidir se
uma instruo deve ser executada. Se a expresso retornar um valor true, a instruo ser executada.
Exemplo:
if(temperatura >38)
System.out.println(Voc est com febre);
Se quisermos que algo mais acontea no caso em que a expresso if retorna um valor false, ento uma
palavra-chave else opcional poder ser usada.
Exemplo:
if(temperatura>38)
System.out.println(Voc est com febre);
else
Sytem.out.println(Sua temperatura est normal);
Usando if, possvel incluir apenas uma nica instruo como cdigo para executar se a expresso de teste
for verdadeira, e outra instruo se a expresso for falsa.
Podemos testar uma varivel em relao a algum valor e, se ele no combinar, test-lo novamente com um
valor diferente.
Exemplo:
if(operacao == +)
soma(objeto1, objeto2);
else if (operacao == -)
subtracao(objeto1,objeto2);
else if (operacao == *)
multiplicacao(objeto1,objeto2);
else if (operacao == /)
divicao(objeto1,objeto2);
Esse uso das instrues if chamado instruo if aninhada, pois cada instruo else contm outro if, at que
todos os testes possveis tenham sido feitos.
Lista 2
1)
2)
3)
4)

5)
6)
7)
8)

16

Ler um nmero e se ele for maior do que 20, ento imprimir a metade do nmero.
Ler um nmero e imprimir se ele par ou mpar
Ler um nmero e imprimir se ele positivo, negativo ou nulo.
Construir um algoritmo que leia dois nmeros e efetue a adio. Caso o valor somado seja maior que
20, este dever ser apresentado somando-se a ele mais 8; caso o valor somado seja menor ou igual a
20, este dever ser apresentado subtraindo-se 5.
Entrar com um nmero e imprimir a raiz quadrada do nmero caso ele seja positivo e o quadrado do
nmero caso ele seja negativo.
Entrar com um nmero e informar se ele divisvel por 3 e por 7.
Entrar com um nmero e informar se ele divisvel por 10, por 5, por 2 ou se no divisvel por
nenhum destes.
A prefeitura do Rio de Janeiro abriu uma linha de crdito para os funcionrios estatutrios. O valor
mximo da prestao no poder ultrapassar 30% do salrio bruto. Fazer um algoritmo que permita
entrar com o salrio bruto e o valor da prestao e informar se o emprstimo pode ou no ser
concedido.

Escola Tcnica de Braslia

Java e POO

9) Entrar com nome, nota da PR1 e nota da PR2 de um aluno. Imprimir


nome, nota da PR1, nota da PR2, mdia e uma das mensagens: Aprovado, Reprovado ou Prova Final
(a mdia 7 para aprovao, menor que 3 para reprovao e as demais em prova final).
10) Entrar com o salrio de uma pessoa e imprimir o desconto do INSS segundo a tabela a seguir:
menor ou igual a R$ 600
isento
maior que R$ 600 e menor ou igual a R$ 1200
20%
maior que R$ 1200 e menor ou igual a R$ 2000
25%
maior que R$ 2000
30%
11) Segundo uma tabela mdica, o peso ideal est relacionado com a altura e o sexo. Fazer um algoritmo
que receba a altura e o sexo de uma pessoa, calcular e imprimir o seu peso ideal, utilizando as
seguintes frmulas:
para homens - (72.7 * h) - 58
para mulheres - (62.1 * h) - 44.7
Utilize o mtodo showOptionPane da classe JOptionPane para dar entrada no campo de sexo

17

Escola Tcnica de Braslia

Java e POO

Switch
Em Java podemos agrupar aes com a instruo switch. Esta instruo baseada em um valor da varivel
que pode ser qualquer um dos tipos primitivos char, byte, short ou int, que comparada com cada um dos valores de
case. Se houver uma combinao, a instruo ou as instrues aps o teste sero executadas.
Se nenhuma combinao for encontrada, a instruo ou instrues default sero executadas. O fornecimento
de uma instruo default opcional se ela for omitida e no houver combinao para qualquer uma das instrues
case, a instruo switch ser completada sem qualquer execuo.
A implementao Java de switch limitada:
os testes e os valores s podem ser tipos primitivos simples, que podem ser convertidos para um int;
no se pode usar tipos primitivos maiores, como um long ou float, strings ou outros objetos dentro de um
switch,
no se pode testar qualquer relacionamento alm da igualdade.
Estas restries limitam switch as casos mais simples. Ao contrrio de if aninhadas funcionam para qualquer
tipo de teste em qualquer tipo possvel.
Exemplo:
switch(operation){
case +:
soma(objeto1, objeto2);
break;
case *:
subtracao(objeto1, objeto2);
break;
case -:
multiplicacao(objeto1, objeto2);
break;
case +:
divisao(objeto1, objeto2);
break;
}
Exemplo: Ler um nmero inteiro entre 1 e 12 e escrever o ms correspondente. Caso o usurio digite um
nmero fora desse intervalo, dever aparecer uma mensagem informando que no existe ms com este
nmero.
import javax.swing.*;
public class Algoritmo138{
public static void main(String args[]){
int mes;
mes=Integer.parseInt(JOptionPane.showInputDialog("Digite
nmero do ms 1-12"));
switch(mes){
case 1:
JOptionPane.showMessageDialog(null,"Janeiro");break;
case 2:
JOptionPane.showMessageDialog(null,"Fevereiro");break;
case 3:
JOptionPane.showMessageDialog(null,"Maro");break;
case 4:
JOptionPane.showMessageDialog(null,"Abril");break;
case 5:
JOptionPane.showMessageDialog(null,"Maio");break;

18

Escola Tcnica de Braslia

Java e POO

case 6:
JOptionPane.showMessageDialog(null,"Junho");break;
case 7:
JOptionPane.showMessageDialog(null,"Julho");break;
case 8:
JOptionPane.showMessageDialog(null,"Agosto");break;
case 9:
JOptionPane.showMessageDialog(null,"Setembro");break;
case 10:
JOptionPane.showMessageDialog(null,"Outubro");break;
case 11:
JOptionPane.showMessageDialog(null,"Novembro");break;
case 12:
JOptionPane.showMessageDialog(null,"Dezembro");break;
default: JOptionPane.showMessageDialog(null,"No
existe ms correspondente para este nmero");
}
}
}
ESTRUTURAS DE REPETIO
FOR
Um loop for usado para repetir uma instruo at que uma condio seja atendida. Embora os loops for
sejam constantemente utilizados para a iterao simples, em que uma instruo repetida por um certo nmero de
vezes, os loops for podem ser usados para quase qualquer tipo de loop.
O loop for em Java possui o seguinte formato:
for(inicializao; condio;incremento){
instruo;
}
O incio do loop for possui trs partes:
Inicializao- expresso que inicializa o incio do loop. Se voc tiver um ndice de loop, essa expresso
poderia declar-lo e incializ-lo, como em int i=0. As variveis declaradas nessa parte do loop for so
locais ao prprio loop; elas deixam de existir depois que o loop terminar sua execuo. Podemos
inicializar mais de uma varivel nesta seo, separando cada expresso com uma vrgula. A instruo
int i=0, int j=10 nesta seo declararia as variveis i e j, e ambas seriam locais ao loop.
Condio teste que ocorre de cada passada do loop. O teste precisa ser uma expresso Booleana
ou uma funo que retorne um valor boolean, como i<50. Se a conido for true, o loop executado.
Quando a condio for false, o loop deixa de ser executado.
Incremento qualquer expresso ou chamada de mtodo. Normalmente, o incremento usado para
alterar o valor do ndice do loop, para trazer o estado do loop para mais perto de retornar false e
encerrar o loop. O incremento ocorre depois de cada passada do loop. Pode-se colocar mis de uma
expresso nesta seo, separando cada expresso com uma vrgula.
Exemplo:
for(int i=0; i<10;i++)
System.out.println(Nmero: +i);
Imprime todos os nmeros de zero a dez.
Obs.: qualquer parte do loop for pode ser uma instruo vazia; em outras palavras, voc pode incluir um pontoe-vrgula sem expresso ou instruo, e essa parte do loop for ser ignorada.

19

Escola Tcnica de Braslia

Java e POO

Obs.: se utilizada uma instruo vazia no loop for, teremos que inicializar ou
incrementar quaisquer variveis de loop ou ndices de loop em qualquer outro lugar no programa.
Podemos ter uma instruo vazia como corpo do seu loop for, se tudo o que quiser fazer estiver na primeira
linha desse loop.
Exemplo:
for(i=4001;notPrime(i);i+=2);
Encontra o primeiro nmero primo maior do que 4000. Emprega um mtodo chamado notPrime(), que retorna
um valor Booleano, que dever indicar se i primo ou no.
WHILE
usado para repetir uma instruo se uma determinada condio for true.
Exemplo:
while(i<10){
x=x*i++;
}
A condio do while uma expresso Booleana. Se a expresso for true, o loop while executar o corpo do
loop e depois testar a condio novamente. Esse processo se repete at que a condio seja false.
Embora o loop apresentado utilize chaves de abertura e fechamento para tornar uma instruo em bloco, as
chaves no so necessrias, pois o loop contm apenas uma instruo: x=x*i++. O uso das chaves no cria quaisquer
problemas, e as chaves sero exigidas se voc acrescentar outra instruo dentro do loop depois.
DO WHILE
O loop do exatamente como um loop while com uma diferena principal o lugar no loop em que a condio
testada.
Um loop while testa a condio antes do looping, de modo que, se a condio for false na primeira vez que for
testada, o corpo do loop nunca ser executado.
Um loop do executa o corpo do loop pelo menos uma vez antes de testar a condio, de modo que, se a
condio for false na primeira vez em que for testada, o corpo do loop j teria sido executado uma vez.
Exemplo:
do{
i*=2;
System.out.println(i+ );
}while (1<100);
BREAK E CONTINUE
O comando break usado para interromper a execuo de um dos laos de iterao vistos acima ou de um
comando switch. Este comando comumente utilizado para produzir a parada de um lao mediante a ocorrncia de
alguma condio especfica, antes da chegada do final natural do lao.
Exemplo:
// Achar i tal que v[i] negativo
for(i=0; i<n;i++)
if(v[i] <0) break;
if(i == n)
system.out.println("elemento negativo no encontrado.");
E se isto se der dentro de um lao duplo? Nesse caso, o comando break provocar a interrupo apenas do
lao em que o comando imediatamente subjacente. Os outros laos continuam normalmente.
O comando continue tem a funo de pular direto para final do lao, mas em vez de interromper o lao como no
break, ele continua executando o prximo passo do lao. O uso de continue pouco usual na programao
estruturada.

20

Escola Tcnica de Braslia

Java e POO

Lista - 3
Estruturas repetio
1)
2)
3)
4)
5)
6)
7)
8)

Criar um algoritmo que entre com cinco nmeros e imprimir o quadrado de cada nmero.
Criar um algoritmo que imprima todos os nmeros pares no intervalo 1-10.
Imprimir todos os nmeros de 1 at 100.
Imprimir todos os nmeros de 100 at 1.
Imprimir os mltiplos de 5, no intervalo de 1 at 500.
Criar um algoritmo que imprima todos os nmeros de 1 at 100 e a soma deles.
Entrar com 10 nmeros e imprimir o quadrado de cada nmero.
Entrar com 15 nmeros e imprimir a raiz quadrada de cada nmero. Faa somente raiz de nmeros
positivos.
9) Criar um algoritmo que leia um nmero e imprima seu produto.
Exemplo:
nmero: 3
Sada: 1 2 3
10) Criar um algoritmo que leia um nmero e imprima a soma dos nmeros mltiplos de 5 no intervalo
entre 1 e num. Suponha que num ser maior que zero.
11) Criar um algoritmo que leia um nmero de entrada (num), leia n nmeros inteiros da entrada e
imprima o maior deles. No suponha que todos os nmeros lidos sero positivos.
12) Criar um algoritmo que leia a quantidade de nmeros que se deseja digitar para que possa ser
impresso o maior e o menor nmero digitado. No suponha que todos os nmeros lidos sero
positivos.
13) Entrar com nome, nota da PR1 e nota da PR2 de 5 alunos. Imprimir uma listagem, contendo: nome,
nota da PR1, nota da PR2 e mdia de cada aluno. Ao final, calcule a mdia geral da turma.
14) Entrar com 5 nmeros e imprimir a soma dos positivos e o total de nmeros negativos.
15) Criar um algoritmo que entre com 5 notas de cada aluno de uma turma de 10 alunos e imprima:
a mdia de cada aluno
a mdia da turma
o percentual de alunos que tiveram mdias maiores ou iguais a 5
16) Uma escola tem 5 turmas e cada turma tem n alunos. Criar um algoritmo que imprima, por turma, o
total de alunos com mdia superior a 7 e a mdia geral da escola.

21

Escola Tcnica de Braslia

Java e POO

Lista - 4
Estruturas repetio(while e do while)
1) Entrar com nmeros e imprimir o triplo de cada nmero. O algoritmo acaba quando entrar com o
nmero -999
2) Entrar com nmeros enquanto forem positivos e imprimir quantos nmeros foram digitados.
3) Entrar com nmeros e imprimir o quadrado de cada nmero at entrar um nmero mltiplo de 6 que
dever ter seu quadrado tambm impresso.
4) Chico tem 1,50 e cresce 2 centmetros por ano, enquanto Juca tem 1,10m e cresce 7 centmetros por
ano. Construir um algoritmo que calcule e imprima quantos anos sero necessrios para que Juca
seja maior que Chico
5) Crie um algoritmo que entre com vrios nmeros inteiros e positivos e imprima a mdia dos
nmeros mltiplos de 3.
6) Uma das maneiras de se conseguir a raiz quadrada de um nmero subtrair do nmero os mpares
consecutivos a partir de 1, at que o resultado da subtrao seja menor ou igual a zero. O nmero de
vezes que se conseguir fazer a subtrao a raiz quadrada exata(resultado 0) ou aproximada do
nmero(resultado negativo).
Exemplo: Raiz de 16
16-1=15-3=12-5=7-7=0 4

22

Escola Tcnica de Braslia

Java e POO

PARTE 3 Funes Matemticas, Funes de String,


Formatao de nmeros e de data/hora

23

Escola Tcnica de Braslia

Java e POO

FUNES MATEMTICAS
A linguagem Java possui uma classe com diversos mtodos especializados em realizar clculos matemticos.
Para realizar esses clculos, so utilizados os mtodos da classe Math que devem apresentar a seguinte sintaxe:
Math.<nome do mtodo>(argumentos ou lista de argumentos)
No necessrio importar a classe Math, pois o mesmo faz parte do pacote java.lang
A classe Math define duas constantes matemticas:
o Math.PI valor de pi (3,14159265358979323846)
o Math.E logaritmos naturais (2.7182818284590452354)
Mtodo ceil
Tem como funo realizar o arredondamento de um nmero do tipo double para o seu prximo inteiro. Sua sintaxe
a seguinte:
Math.ceil(<valor do tipo double>)
Mtodo floor
utilizado para arredondar um determinado nmero, mas para seu inteiro anterior. Sua sintaxe :
Math.floor(<valor do tipo double>);
Mtodo max
Utilizado para verificar o maior valor entre dois nmeros, que podem ser do tipo double, float, int ou long. A sua
sintaxe a seguinte:
Math.max(<valor1>,<valor2>);
Mtodo min
Fornece o resultado contrrio do mtodo max, sendo ento utilizado para obter o valor mnimo entre dois
nmeros. Do mesmo modo que o mtodo max, esses nmeros tambm podem ser do tipo double, float, int ou long. A
sua sintaxe a mesma do mtodo max mudando apenas para Math.min
Mtodo sqrt
Utilizado quando h necessidade de calcular a raiz quadrada de um determinado nmero. O nmero que se deseja
extrair a raiz deve ser do tipo double. Veja sua sintaxe:
Math.sqrt(<valor do tipo double>);
Mtodo pow
Assim como possvel extrair a raiz quadrada de um nmero, tambm possvel fazer a operao inversa, ou
seja, elevar um determinado nmero ao quadrado ou a qualquer outro valor de potncia. Os nmeros utilizados
devero ser do tipo double. Sua sintaxe a seguinte:
Math.pow(<valor da base>.<valor da potncia>);
Mtodo random
utilizado para gerar valores de forma aleatria. Toda vez que o mtodo random chamado, ser sorteado
um valor do tipo double entre 0.0 e 1.0 (o valor 1 nunca sorteado). Nem sempre essa faixa de valores suficiente
numa aplicao real.
Exemplo:
(int) (Math.random()*100)
Com isso seriam gerados nmeros inteiros entre 0 e 99

FUNES COM STRING


24

Escola Tcnica de Braslia

Java e POO

Mtodo length
O mtodo length utilizado para retornar o tamanho de uma determinada string, incluindo tambm os espaos em
branco presentes nela. Esse mtodo retorna sempre um valor do tipo int. Veja sua sintaxe:
<String>.length();
Mtodo charAt
Usado para retornar um caractere de uma determinada string de acordo com um ndice especificado entre
parnteses. Esse ndice refere-se posio do caractere na string, sendo 0 o ndice do primeiro caractere. Sintaxe do
mtodo charAt a seguinte:
<String>.charAt(<ndice>);
Mtodos toUpperCase e toLowerCase
So utilizados para transformar todas as letras de uma determinada string em maisculas ou minsculas.
O mtodo toUpperCase transforma todos os caracteres de uma string em maisculos
O mtodo toLowerCase transforma todos os caracteres de uma string em minsculos
Sua sintaxe a seguinte:
<String>.toUpperCase() ou <String>.toLowerCase()
Mtodo substring
Retorna um cpia de caracteres de uma string a partir de dois ndices inteiros especificados, funcionando
basicamente da mesma forma que o mtodo charAt dentro de um lopping.
A sintaxe da substring a seguinte:
<String>.substring(<ndice inicial>,[<ndice final>]
Mtodo trim
Seu objetivo remover todos os espaos em branco que aparecem no incio e no final de uma determinada
string. Sero removidos apenas os espaos do incio e do fim da string; no sero removidos os espaos entre as
palavras. Sua sintaxe a seguinte:
<String>.trim();
Mtodo replace
utilizado para substituio de caracteres, ou grupo de caracteres, em uma determinada string. Para seu
funcionamento necessrio informar o(s) caractere(s) que deseja(m) substituir e por qual(is) caractere(s) ele ser(o)
substitudo(s). Caso no haja na string nenhuma ocorrncia do caractere a ser substitudo, a string original retornada,
isto , no ocorre nenhuma alterao.Veja sua sintaxe:
<String>.replace(<caracteres a serem substitudos>, <substituio>)
Mtodo valueOf
usado para converter diversos tipos de dados em strings. Esse mtodo aceita vrios tipos de argumento
(nmeros ou cadeia de caracteres) e transforma-os em strings. Sintaxe:
String.valueOf(<nome da varivel a ser convertida>)
Mtodo indexOf
usado para localizar caracteres ou substrings em uma String. Quando realizamos a busca de uma palavra
em um texto, estamos usando algo parecido com o funcionamento de indexOf, isto , ele busca uma palavra e retorna
a posio onde ela se encontra. Caso haja sucesso na busca, retornado um nmero inteiro referente a posio do
texto onde o caractere foi encontrado, ou a posio do texto onde se inicia a substring localizada. Casa haja insucesso
na busca retornado o valor inteiro -1. A sintaxe :
String.indexOf(<caractere ou substring a ser localizada, [posio inicial]>)

FORMATAO COM A CLASSE DECIMALFORMAT

25

Escola Tcnica de Braslia

Java e POO

Os clculos matemticos, em especial os que envolvem multiplicao e diviso, podem gerar resultados com
muitas casas decimais.Isso nem sempre necessrio e esteticamente correto, pois apresentar um resultado com
muitas casas decimais no muito agradvel e legvel maioria dos usurios. Por exemplo: considere duas variveis
do tipo double x=1 e y=6. Ao realizar a diviso de x por y, aparece na tela o resultado 0.16666666666666666. Esse
resultado no o mais adequado para se apresentar. Seria mais conveniente mostrar o resultado com duas ou trs
casas decimais.
Para realizar a formatao, necessrio definir um modelo de formatao, conhecido pelo nome de pattern.
Considere pattern como o estilo de formatao que ser apresentado sobre um valor nmerico. Para definir o pattern,
so usados caracteres especiais
Caractere
Significado
0
Imprime o digito normalmente, ou caso ele no exista, coloca 0 em seu lugar.
Exemplo:
Seja as variveis int x=4, y=32 e z=154, ao usar o pattern 000, o resultado
impresso na tela seria x004, y032 e z154
#
Imprime o digito normalmente, desprezando os zeros esquerda do nmero.
Exemplo:
Sejam as variveis double x=0,4 e y=01.34, ao usar o pattern ##.##, o resultado
impresso na tela seria x.4, y1.34
.
Separador decimal ou separador decimal monetrio
Sinal de nmero negativo
CLASSE LOCALE
A linguagem Java tem como caracterstica ser utilizada no mundo todo. Em funo disso, um mesmo software
feito em Java pode ser utilizado por usurios espalhados pelo globo. Cada pas ou regio adota certos formatos para
representao monetria, apresentao de datas,etc. esses formatos so definidos pelo sistema operacional da
mquina e ficam armazenados como configuraes locais. O separador de casas decimais, por exemplo, pode ser um
ponto ou uma vrgula, dependendo da regio.
A classe Locale permite identificar certas propriedades da mquina em que o software est sendo executado.
Lista 5
Funes Matemticas e de String Formatao com a classe DecimalFormat
1) Crie uma classe para fazer o arredondamento dos seguintes valores: 5.2, 5.6 e -5.8 para o valor inteiro mais
prximo.
2) Crie uma classe para fazer o arredondamento dos seguintes valores: 5.2, 5.6 e -5.8 para o valor inteiro
anterior.
3) Crie uma classe para calcular o maior entre dois nmeros.
4) Crie uma classe para calcular o menor entre dois nmeros.
5) Crie uma classe para calcular a raiz quadrada dos nmeros 900 e 30.25.
6) Crie uma classe para calcular a potncia de 5.5 elevado a 2 e 25 elevado a 0.5.
7) Crie uma classe que gere 5 cartes de loteria com seis nmeros em cada um.
8) Formate os valores como se pede:
o Idade 38 para 038;
o Quantidade 9750 para 9.750;
o Estoque 198564 para 198.564
o Altura 1,74f para 1,74
o Peso 7025 para 70,25
o Valor 2583.75 para R$ 2.583,75

26

Escola Tcnica de Braslia

Java e POO

9) Crie uma classe utilize os seguintes mtodos existentes da classe Locale:


getCountry();
getDisplayCountry();
getDisplayLanguage();
getDisplayName();

10) Crie uma classe para obter o tamanho da frase: Aprendendo Java.
11) Crie uma classe para obter os carateres de 11 a 14 da frase: Aprendendo Java.
12) Coloque a palavra ARROZ em minscula, a palavra batata em maiscula e a palavra SaLaDa em minscula.
13) Crie uma classe que retorne trechos de caracteres definidos por intervalos pr-determinados.
14) Crie um programa que retire espaos em branco antes e depois de uma frase digitada pelo usurio.
15) Crie uma classe que utilize um mtodo para substituir o caracter a por u e o carater n por N e trocar os
espaos em branco por _ de uma frase digitada pelo usurio.
16) Crie uma classe que converta valores nmeros para string.
17) Crie uma classe que realize uma busca pelo caractere a.
DATA/HORA
Os recursos de data e hora devem ser suficientemente flexveis. O uso de datas e horas torna possvel a
criao de pginas que exibem informaes de maneira dinmica. Existem 11 classes diferentes para manipulao de
datas e horas.
As classes disponveis para a manipulao de data e hora pertencem a trs pacotes diferentes
java.util Date, Calendar, GregorianCalendar, TimeZone, SimpleTimeZone
java.text DateFormat, SimpleDateFormat, FormatSymbols
java.sql Date, Time, Timestamp
A classe Date existe em dois pacotes (util e sql), ambos com caractersticas e comportamentos diferentes
A diferena bsica entre as classes Date, DateFormat, SimpleDateFormat e Calendar a seguinte:
Date (pacote util) representa um instante de tempo, sem levar em considerao sua representao ou
localizao geogrfica, com preciso de milisegundos
DateFormat representa um data com formato String de acordo com um determinado fuso horrio e
calendrio
SimpleDateFormat permite a especificao de diferentes formatos para a data
Calendar representar um instante de tempo de acordo com um sistema particular de calendrio e fuso
horrio
CLASSE DATE
Para utilizar uma classe externa, necessrio que ela esteja na mesma pasta da aplicao ou fazemos sua
importao
import java.util.Date;
O compilador compreende que data ser um objeto declarado a partir da classe Date
Date data = new Date( );
Essa declarao indica que o objeto data ser inicializado com a data e hora atuais do sistema(default)
Para marcar o tempo, Java considera o nmero de milisegundos decorridos desde 1 de janeiro de 1970.
Cada segundo possui 1.000 milisegundos, cada minuto possui 60 segundos, cada hora possui 60 minutos e
cada dia possui 24 horas, para saber o correspondente em dias, basta multiplicar 1000 x 60 x 60 x 24
getTime() Esse mtodo retorna um inteiro do tipo long que permite representar milissegundos decorridos
O uso de getTime() permite realizar o clculo entre datas, bastando calcular a diferena entre os milissegundos

CLASSE DATEFORMAT

27

Escola Tcnica de Braslia

Java e POO

A classe Date no fornece um mecanismo de controle sobre a formatao de uma


data e no permite converter uma string contendo informaes sobre uma data em um objeto Date
A classe DateFormat permite apresentar a data com diferentes formataes, dependendo das necessidades de
utilizao, tornando sua visualizao mais agradvel aos usurios
A classe DateFormat pode criar uma data a partir de uma string fornecida
Ao criar um objeto a partir de uma classe DateFormat, ele conter informao a respeito de um formato particular
no qual a data ser apresentada
O mtodo getDateInstance tem a seguinte sintaxe:
getDateInstance( int estilo)
Ao invocar o mtodo, deve ser passado um nmero inteiro que define o estilo de formatao
Mtodos mais utilizados da classe DateFormat:
Format(Date d) formata a data em uma string de acordo com o estilo utilizado. Retorna uma String
getInstance() Retorna uma data e hora de acordo com o estilo SHORT. Retorna um DateFormat
getDateInstance() Retorna uma data de acordo com o estilo de formatao local. Retorna um
DateFormat
getTimeInstance() Retorna um horrio de acordo com o estilo de formatao local. Retorna um
DateFormat
parse(String s) Converte a string em tipo Date. Retorna um Date
CLASSE SIMPLEDATEFORMAT
Permite criar formatos alternativos para a formatao de datas e horas
Em orientao a objeto dizemos que SimpleDateFormat extends DateFormat
Deve-se recorrer ao uso de um pattern para criar o prprio formato de data/hora
Principais letras para criao de patterns:
G designador de era. Formato texto. Exemplo: AD
Y ano. Formato Year. Exemplo: 2005;05
M ms do ano. Formato Month. Exemplo: Jul;07
W semana do ano. Formato Number. Exemplo: 15
W semana do ms. Formato Number. Exemplo: 3
D dia do ano. Formato Number. Ex.: 234
D dia do ms. Formato Number. Ex.: 5
F dia da semana no ms. Formato Number. Ex.: 2
E dia da semana. Formato Text. Ex.: Sex
A am/pm. Formato Texto. Ex.: PM
H hora do dia(0-23). Formato Number. Ex.: 0
K hora do dia(1-24). Formato Number. Ex.: 23
K hora em am/pm(0-11). Formato Number. Ex.: 2
H hora em am/pm(1-12). Formato Number. Ex.: 5
M minuto da hora. Formato Number. Ex.: 10
S segundo do minuto. Formato Number. Ex.: 30
S milissegundos. Formato Number. Ex.: 978
Mtodos mais utilizados da classe SimpleDateFormat
applyPattern(String p) Aplica um pattern data conforme definido na String p. Retorna void
toPattern() Fornece o pattern que est sendo usado no formato de data. Retorna uma String
CLASSE CALENDAR
Oferece mecanismos adequados para realizao de clculos com datas ou para identificao das propriedades de
uma data.
A classe Calendar converte um tipo Date armazenado nela em um srie de campos
Possui mtodos para recuper(get) ou para armazenar(set) os valores correspondentes a datas e horas, atravs de
um argumento fornecido que identifica o campo a ser manipulado.
Exemplo: Recuperar o dia do ano.
get(Calendar.YEAR)

28

Escola Tcnica de Braslia

Java e POO

Principais campos usados pela classe Calendar:


DAY_OF_MONTH Dia do ms(1-31)
DAY_OF_WEEK Dia da semana(0=domingo, 6=sbado)
DAY_OF_WEEK_IN_MONTH Semana do ms(1-5) corrente. Diferente em relao a WEEK_OF_MONTH
porque considera apenas a semana cheia
DAY_OF_YEAR Dias decorridos no ano corrente
HOUR Hora do dia(manh ou tarde)(0 a 11)
HOUR_OF_DAY Hora do dia(0 a 23)
MILLISECOND Milissegundos em relao aos segundos
MINUTE- Minutos em relao hora corrente
MONTH Ms em relao ao ano corrente
SECOND Segundos em relao ao minuto corrente
WEEK_OF_MONTH Semana em relao ao minuto corrente (1 a 5)
WEEK_OF_YEAR Semana em relao ao ano corrente
YEAR Ano corrente
JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER,
NOVEMBER, DECEMBER Ms correspondente ao ano
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY Dia correspondente
semana
Resumo dos mtodos mais utilizados da classe Calendar:
Add(int field, int valor) Funo aritmtica para objetos Date que adiciona o valor inteiro ao campo (Field)
determinado. Retorna void
after(Object x) Verifica se o tempo (data e hora) do objeto x (pode ser Calendar ou outro tipo) superior
ao armazenado no objeto Calendar. Retorna boolean
before(Object x) Idem anterior, porm verifica se o tempo anterior ao objeto
clear() Zera o contedo de data e hora armazenando 1 de janeiro de 1970 00:00:00. Retorna void
getFirstDayOfWeek() Fornece o primeiro dia da semana, dependendo da localidade
getTime() Fornece o tempo corrente
getTimeMillis() Fornece o tempo corrente em milissegundos
roll() Funo aritmtica para objetos Date aplicando o efeito de rolagem de datas. Retorna void
toString() Fornece uma representao em formato String para a data armazenada. Retorna String

Lista 5
1) Crie uma classe que imprima um objeto data em uma JOptionPane.
2) Execute o seguinte exerccio que utiliza a seguinte informao: Java considera o nmero de milisegundos
decorridos desde 1 de janeiro de 1970. Cada segundo possui 1.000 milisegundos, cada minuto possui 60
segundos, cada hora possui 60 minutos e cada dia possui 24 horas, para saber o correspondente em dias,
basta multiplicar 1000 x 60 x 60 x 24.
3) Crie uma classe que utilize os seguintes mtodos:
getHours(); getMinutes();getSeconds();getTime();getTimezoneOffset().
Altere os valores da hora, dos minutos e dos segundos com seus respectivos mtodos.
4) Crie uma classe que formate as datas conforme os exemplos abaixo:
Formato Default = 18/05/2009
Formato SHORT = 18/05/09
Formato MEDIUM = 18/05/2009
Formato LONG = 18 de Maio de 2009
Formato FULL = Segunda-feira, 18 de Maio de 2009
5) Crie uma classe que formate a data conforme os exemplos abaixo:
dia/ms/ano com quatro dgitos, horas:minutos:segundos
dd/MM/yyyy, hh:mm:ss --->18/05/2009, 10:30:29

29

Escola Tcnica de Braslia

Java e POO

Dia da semana, ms por extenso, dia, ano com dois dgitos


EEE, MMM d, ''yy-->Seg, Mai 18,' 09
6) Crie uma classe que se utilize dos mtodos da classe Calendar.
7) Crie uma classe que pegue a hora do sistema e imprima Bom dia, Boa tarde, Boa noite ou Boa madrugada
conforme a hora capturada do sistema.
8) Execute a classe.

30

Escola Tcnica de Braslia

Java e POO

PARTE 4 Indroduo excees em Java

EXCEES

31

Escola Tcnica de Braslia

Java e POO

Excees so objetos que representam erros que podem ocorrer em um programa Java.
Java define uma srie de recursos da linguagem para lidar com excees, incluindo os seguintes:
Como tratar de excees no cdigo e recuperar-se elegantemente de problemas em potencial;
Como dizer Java e aos usurios dos mtodos que voc est esperando uma exceo em potencial;
Como criar uma exceo se voc a detectar;
Como o seu cdigo limitado, embora tornado-se mais robusto pelas excees.
As excees em Java so instncias de classes que herdam da classe Throwable. Uma instncia de uma classe
Throwable criada quando uma exceo lanada.
Throwable possui duas subclasses: Error e Exception
As instncias de Error so erros internos envolvendo a mquina virtual Java (o ambiente runtime). Esses
erros so raros e normalmente fatais.
A classe Exception caem em dois grupos gerais:
Excees de runtime (subclasses da classe RuntimeException), como ArrayIndexOutofBounds,
SecurityException e NullPointerException.
Outras excees, como EOFException e MalformedURLException
As excees de runtime normalmente ocorrem por causa do cdigo.
Uma ArrayIndexOutofBounds nunca deveria ser lanada se verificssemos os limites de um array.
Uma NullPointException no acontecer a menos que tentssemos usar uma varivel antes que ela tenha sido
configurada para conter um objeto.
Uma EOFException acontece, por exemplo, quando se est lendo um arquivo e o mesmo termina de forma
inesperada.
Uma MalformedURLException acontece quando uma URL no est no formato correto.
A maioria das classes de exceo faz parte do pacote java.lang (incluindo Throwable, Exception e
RuntimeException).
Muitos dos outros pacotes definem outras excees, e essas so usadas por toda a biblioteca de classes.
Em muitos casos,o compilador Java impe o gerenciamento de exceo quando tentamos usar mtodos que
utilizam excees, ento precisamos lidar com essas excees no cdigo ou ele simplesmente no ser compilado.
Exemplo de um erro:
XMLParser.java:32:Exception java.lang.InterruptedException must be caught or it must be declared in the
throws clause o f this method
No erro acima preciso pegar a exceo java.lang.InterruptedException ou ento declar-la na clusula
throws deste mtodo.
Um mtodo pode indicar os tipos de erros que possivelmente poderia lanar. Por exemplo, mtodos que lem de
arquivos poderiam potencialmente gerar erros IOException.
Pegar excees em potencial exige:
Que protejamos o cdigo que contm o mtodo que pode lanar uma exceo dentro de um bloco try
Que coloquemos a exceo dentro de um bloco catch
TRY-CATCH
Significa: Experimente este trecho de cdigo, que poderia causar uma exceo. Se ele for executado
corretamente, prossiga o programa. Se o cdigo lanar uma exceo, apanhe-a e trate dela.
Exemplo:
try{
float in = Float.parseFloat(input);
}
catch (NumberFormatException nfe){
System.out.println(input+ is not a valid number.);
}
Na instruo acima o mtodo de classe Float.parseFloat() poderia potencialmente lanar uma exceo do tipo
NumberFormatException, significando que o thread foi interrompido por algum motivo

32

Escola Tcnica de Braslia

Java e POO

Para tratar dessa exceo, a chamada a parseFloat() colocada dentro de um bloco


try, e um bloco catch associado foi configurado. Esse bloco catch recebe quaisquer objetos NumberFormatException
que sejam lanados dentro do bloco try
A parte da clusula catch dentro dos parnteses semelhante lista de argumentos da definio de um mtodo.
Ela contm a classe da exceo que devemos pegar e um nome de varivel. Podemos usar a varivel para nos
referirmos a esse objeto dentro de um bloco catch.
getMessage() est presente em todas as excees e apresenta uma mensagem detalhada do erro
printStackTrace() apresenta a seqncia de chamadas de mtodo que levou instruo que gerou a
exceo.
Exemplo:
try{
float in = Float.parseFloat(input);
}
catch (NumberFormatException nfe){
System.out.println(Oops:+nfe.getMessage());
}
Pegando excees de uma superclasse, por exemplo, IOException, tambm pegamos instncias de suas
subclasses: EOFException e FileNotFoundException
Para pegar vrias excees que no estejam relacionadas por herana podemos usar vrios blocos catch para um
nico try.
Exemplo:
try{
}catch (IOException ioe){
System.out.println(Input/output error);
System.out.println(ioe.getMessage());
}catch (ClassNotFoundException cnfe){
System.out.println(Class not found);
System.out.println(cnfe.getMessage());
}catch (InterruptedException ie){
System.out.println(Program interrupted);
System.out.println(ie.getMessage());}
CLUSULA FINALLY
Utilizada quando desejamos realizar uma ao no importando o que acontea.
Server para liberar algum recurso externo depois de adquiri-lo
Exemplo:
try{
readTextfile();
}catch(IOException e){
System.out.println(Input/output error);
System.out.println(e.getMessage());
} finally{
closeTextfile();}
Exemplo 1: Classe que gera erro de diviso por zero.
import javax.swing.JOptionPane;
class Excecoes{
public static void main (String args[]) {
int x=10, y=0, z=0;
try{
z = x / y; }
catch(Exception e){
JOptionPane.showMessageDialog(null,e.getMessage());

33

Escola Tcnica de Braslia

Java e POO

}
}
}
Exemplo 2:
class HexRead {
String[] input = { "000A110D1D260219 ",
"78700F1318141E0C ",
"6A197D45B0FFFFFF " };
public static void main(String[] arguments) {
HexRead hex = new HexRead();
for (int i = 0; i < hex.input.length; i++)
hex.readLine(hex.input[i]);
}
void readLine(String code) {
try {
for (int j = 0; j + 1 < code.length(); j += 2) {
String sub = code.substring(j, j+2);
int num = Integer.parseInt(sub, 16);
if (num == 255)
return;
System.out.print(num + " ");
}
} finally {
System.out.println("**");
}
return;
}
}
Exemplo 3:
public class CalorieCounter {
float count;
public CalorieCounter(float calories, float fat, float fiber) {
if (fiber > 4) {
fiber = 4;
}
count = (calories / 50) + (fat / 12) - (fiber / 5);
assert count > 0 : "Adjusted calories < 0";
}
public static void main(String[] arguments) {
if (arguments.length < 2) {
System.out.println("Usage: java CalorieCounter calories fat
fiber");
System.exit(-1);
}
try {
int calories = Integer.parseInt(arguments[0]);
int fat = Integer.parseInt(arguments[1]);
int fiber = Integer.parseInt(arguments[2]);
CalorieCounter diet = new CalorieCounter(calories, fat,
fiber);
System.out.println("Adjusted calories: " + diet.count);
} catch (NumberFormatException nfe) {
System.out.println("All arguments must be numeric.");
System.exit(-1);
}
}
}

34

Escola Tcnica de Braslia

PARTE 5 Array e Matrizes

35

Java e POO

Escola Tcnica de Braslia

Java e POO

Os arrays so uma maneira de armazenar uma lista de itens que possuem o


mesmo tipo de dado primitivo, a mesma classe ou uma classe pai comum. Cada item na lista entra em seu prprio
local numerado, para acessarmos a informao com facilidade.
Os arrays podem conter qualquer tipo de informao armazenada em uma varivel, mas, quando o array
criado, podemos us-lo apenas para esse tipo de informao. Por exemplo, pode-se ter um array de inteiros, um array
de objetos String ou um array de arrays, mas no pode ter um array que contenha objetos String e inteiros.
Para criar um array em Java, precisa-se:
1. Declarar uma varivel para manter o array.
2. Criar um novo objeto de array e atribu-lo varivel de array.
3. Armazenar informaes neste array.
O primeiro passo na criao do array declarar uma varivel que o manter. As variveis de array indicam o
objeto ou tipo de dado que o array manter e o nome do array. Para diferenciar das declaraes de varivel normal,
um par de colchetes vazio([]) acrescentado ao objeto ou tipo de dado, ou ao nome da varivel.
Exemplo:
String [] nomes;
float[] nmeros;
Obs.: tambm podemos declarar um array colocando os colchetes aps o nome da varivel, em vez do tipo de
informao.
Exemplo:
String nomes[];
Depois de declarar a varivel de array, o prximo passo criar um objeto de array e atribu-lo a essa varivel.
Para fazer isso:
Use o operador new;
Inicialize o contedo do array diretamente.
Como os arrays so objetos em Java, podemos usar o operador new para criar uma nova instncia de um
array.
Exemplo:
String[] jogador = new String[10];
Quando criamos um objeto de array usando new, todos os seus slots recebem automaticamente uma valor
inicial (0 para arrays numricos, false para Booleanos, \0 para arrays de caractere, e null para objetos).
Exemplo:
Integer[] serie = new Integer[3];
series[0]= new Integer(10);
series[1]= new Integer(3);
series[2]= new Integer(5);
Podemos criar e inicializar um array ao mesmo tempo, delimitando os elementos do array entre chaves,
separados por vrgulas.
Exemplo:
Ponto[] marcados={new Ponto(1,5), new Ponto(3,3), new Ponto(2,3),};
Obs.: Cada um dos elementos dentro das chaves precisa ter o mesmo tipo da varivel que mantm o array.
Obs.: Quando criamos um array com valores iniciais, o tamanho ser definido com o nmero de elementos
includos dentro das chaves.
Exemplo:
String[] num ={Um, Dois, Trs, Quatro, Cinco, Seis};
Obs.: todos os arrays possuem uma varivel de instncia chamada length que contm o nmero de elementos
no array.
Obs.: O primeiro elemento de um array est na posio zero. Para acessar um elemento devemos acessar a
posio do mesmo.
Exemplo:
num[0]= Primeiro nmero;
Obs.: Em Java, impossvel acessar ou atribuir um valor a uma posio do array fora dos limites deste.

36

Escola Tcnica de Braslia

Java e POO

Obs.: Colacar mais elementos em um vetor gera um erro do tipo


ArrayIndexOutBoundsException.
Exemplo:
public class HalfDollars {
public static void main(String[] arguments) {
int[] denver = { 15000006, 18810000, 20752110 };
int[] philadelphia = new int[denver.length];
int[] total = new int[denver.length];
int average;
philadelphia[0] = 15020000;
philadelphia[1] = 18708000;
philadelphia[2] = 21348000;
total[0] = denver[0] + philadelphia[0];
total[1] = denver[1] + philadelphia[1];
total[2] = denver[2] + philadelphia[2];
average = (total[0] + total[1] + total[2]) / 3;
System.out.println("1993 production: " + total[0]);
System.out.println("1994 production: " + total[1]);
System.out.println("1995 production: " + total[2]);
System.out.println("Average production: "+ average);

Ao lidar com arrays, podemos percorrer os elementos do array, em vez de lidar com cada element
individualmente. Isso torna o cdigo muito mais fcil de ler.
Arrays multidimensionais (matrizes)
Um uso comum de matrizes para representar os dados em uma grade x,y de elementos de array.
Java no aceita arrays multidimensionais, mas podemos conseguir a mesma funcionalidade declarando um
array de arrays. Esses arrays tambm podem conter arrays, e assim por diante, por tantas dimenses quantas forem
necessrias.
Exemplo:
Registrar um valor inteiro a cada dia por um ano e organizar esses valores por semana.
int[][] dias= new int[52][7];
Esse array de arrays contm um total de 364 inteiros, um para cada dia em 52 semanas. Poderiamos definir o
valor para o primeiro dia da dcima semana com a seguinte instruo:
dias[9][0]=14200;
Exemplo: Crie uma matriz 3 por 4 e inicialize seus valores.
public class Matriz {
public static void main(String[] args) {
/* declarando dois arrays do tipo int*/
int[] a1;
int[] a2;
/* instanciando os dois arrays */
a1 = new int[ 10 ]; // array com 10 posies de int
a2 = new int[ 30 ]; // array com 30 posies de int
/* imprimindo o tamanho dos array a1 e a2 */
System.out.println("a1 tamanho : " + a1.length);
System.out.println("a2 tamanho : " + a2.length);

37

Escola Tcnica de Braslia

/*

declarando,

instanciando

Java e POO

atribuindo

valores

ao

array

notas */
float[] notas = { 7.5f , 9.0f , 10.0f };
/* imprimindo as posies do array notas */
System.out.println("Notas : " + notas[0] + " - " +
notas[1] + " - " +
notas[2]);
/* simulando array bidimensional*/
int[][] matriz = new int[ 3 ][ 4 ];
System.out.println("Linhas da Matriz : " + matriz.length);
System.out.println("Colunas da Matriz : " + matriz[0].length);
matriz[0][0] = 1;
matriz[0][1] = 2;
matriz[0][2] = 3;
matriz[0][3] = 4;
matriz[1][0] = 5;
matriz[1][1] = 6;
matriz[1][2] = 7;
matriz[1][3] = 8;
matriz[2][0] = 9;
matriz[2][1] = 10;
matriz[2][2] = 11;
matriz[2][3] = 12;
/* Imprimindo o array */
for (int i = 0; i < matriz.length; i++){
for (int j = 0; j < matriz[0].length; j++){
System.out.print(matriz[i][j] + "\t");}
System.out.println();}
}
}
Lista - 7
VETOR MATRIZES
1) Criar um algoritmo que entre com dez nomes e imprima uma listagem contendo todos os nomes.
2) Criar um algoritmo que armazene nome e duas notas de 5 alunos e imprima uma listagem contendo nome, as
duas notas e a mdia de cada aluno. Mostre a situao de cada aluno, ou seja, aprovado ou reprovado.
3) Criar um algoritmo que armazene 5 nomes em um vetor. Ordenar e imprimir uma listagem em ordem
crescente.
4) Armazenar 15 nmeros inteiros em um vetor NUM e imprimir uma listagem numerada contendo o nmero e
uma das mensagens: par ou mpar.
5) Armazenar nome e salrio de 5 pessoas. Calcular o novo salrio sabendo-se que o reajuste foi de 8%.
Imprimir uma listagem com nome, salrio antigo e novo salrio.
6) Ler um vetor vet de 5 elementos e obter um vetor w cujos componentes so os fatoriais dos respectivos
componentes de v.
7) Crie um algoritmo que armazene 5 nmeros e gere um vetor com os quadrados destes nmeros.
8) Crie um algoritmo que armazene 5 nomes e faa a ordenao destes em orderm crescente.

38

Escola Tcnica de Braslia

Java e POO

9) Criar um algoritmo que armazene nomes de duas disciplinas, sabendo-se que as


turmas tm sempre 5 alunos. Armazene tambm a matrcula e as notas do alunos em matrizes de ordem
cinco. Imprima a sada da seguinte maneira:
/*
Nome da disciplina:
*
Mat.
Nota: */
10) Entrar com valores para uma matriz A 3x4. Gerar e imprimir uma matriz B que o triplo da matriz A.
11) Entrar com valores inteiros para um matriz A[4][4] e para uma matriz B[4][4]. Gerar e imprimir a matriz
SOMA[4][4].

39

Escola Tcnica de Braslia

PARTE 6 Orientao a Objetos

40

Java e POO

Escola Tcnica de Braslia

Java e POO

Orientao a Objetos - Conceitos Bsicos


Pacotes
um modo de organizar grupos de classes. Um pacote contm qualquer quantidade de classes relacionadas
em finalidade, em escopo ou por herana.
Se os programas forem pequenos e usarem um nmero limitado de classes, voc poder descobrir que no
precisa explorar pacote algum. Todavia, quando comear a criar projetos mais sofisticados com muitas classes
relacionadas umas as outras por herana, descobrir o benefcio de organiz-las em pacotes.
Os pacotes so teis por vrios motivos gerais:
Os pacotes permitem a organizao de classes em unidades. Assim temos pastas ou diretrios no
disco rgido para organizar seus arquivos e aplicaes, os pacotes permitem a organizao das
classes em grupos, de modo que possamos usar o que for necessrio em um programa.
Os pacotes reduzem problemas de conflitos em relao a nomes. medida que o nmero de classes
Java cresce, cresce tambm a probabilidade de usar o mesmo nome de classe de outro
desenvolvedor, aumentando a possibilidade de conflitos de nomes e de mensagens ao tentar integar
grupos de classes em um nico programa. Os pacores fornecem um meio de referncia especfica
classe desejada, mesmo que ela compartilhe um nome com uma classe de outro pacote.
Os pacotes permitem proteger classes, variveis e mtodos de maneiras mais amplas do que para
cada classe individual.
Os pacotes podem ser usados exclusivamente para identificar o seu projeto.
Todas as vezes que usamos o comando import e toda vez que nos referimos a uma classe por seun nome de
pacote inteiro java.awt.Font, por exemplo, estamos usando pacotes.
Para usar uma classe contida em um pacote, use um dos trs mecanismos:
1. Se a classe que desjamos usar estiver no pacote java.lang (por exemplo, System ou Date), poderemos
simplesmente usar o nome da classe para se referenciar a essa classe. As classes java.lang esto
disponveis de maneira automtica.
2. Se a classe que deseja usar estiver em algum outro pacote, poderemos nos referir a ela por seu nome
completo, incluindo quaisquer nomes de pacotes (por exmplo, java.awt.FlowLayout).
3. Para as classes que usa com freqncia a partir de outros pacotes, precisamos importar classes
individuais ou um pacote inteiro de classes. Depois que uma classe ou pacote tiver sido importado,
podemos nos referir a esta classe somente pelo seu nome.
Para se referir a uma classe em algum outro pacote, podemos usar o nome completo, que o nome de classe
precedido por quaisquer nomes de pacotes.
Obs.: No necessrio importar classe ou pacote se formos utiliz-lo desta maneira:
java.awt.Font texto = new java.awt.Font();
Para classes utilizadas apenas uma ou duas vezes no programa, o uso de nomes completos faz sentido.
Contudo, se formos usar vrias vezes, ou se o nome do pacote for muito longo, com muitos subpacotes, ento importe
essa classe, para economizar tempo de digitao.
Obs.: Ao se criar o pacote do exemplo abaixo, ser criada uma subpasta chamada curso para armazenar o
arquivo bytecode, ou seja, os (.class).
package curso;
Para importar classes de um pacote, use a declarao import.
import curso;
Obs.: podemos importar um pacote inteiro de classes, usando um asterisco(*).
import javax.swing.*;
Obs.: Contudo o asterisco no permite a importao de vrios pacotes com nomes semelhantes.
java.util; java.util.jar; java.util.prefs.
No podemos importar os trs pacotes com a seguinte instruo:
o import java.*;
Para tornar os trs diponveis em uma classe, as seguintes instrues so necessrias:

41

Escola Tcnica de Braslia

Java e POO

o import java,util.*;
o import java,util.jar.*;
o import java,util.prefs.*;
Obs.: no se pode iniciar nomes de classes parciais, por exemplo, J* para importar todas as classes que
comeam por J.
Obs.: a importao de um grupo de classes no torna o seu programa mais lento nem o aumenta; somente as
classes realmente usadas no cdigo sero carregadas, conforme a necessidade.
Java permite se referir s constantes de uma classe pelo seu nome. Sendo assim, devemos fazer uma import
static o que torna disponveis as constantes especficas nesta classe.
Exemplo:
Color.black; Math.PI e File.separator.
Aps o import static java.lang.Math.*;
Exemplo:
import static java.lang.Math.*;
public class Constantes{
public static void main(String args[]){
System.out.println(PI: +PI);
System.out.println( +(PI*3));
}
}
Cuidado: Ao importar classes com mesmo nome de pacotes diferentes ser necessrio se referir a esta classe
pelo seu caminho completo. Exemplo: a classe Date existe nos pacotes: java.util e java.sql, sendo assim ao se referir
a classe Date do pacote java.util, utilize: java.util.Date.
Classe
Em Java, um programa composto de uma classe principal e quaisquer outras classes que sejam necessrias
para dar suporte a ela. Essas classes de suporte incluem qualquer uma daquelas na bibliotecas de classes Java de
que voc precisar.
Por padro, as classes herdam da classe Object. Ela a superclasse de todas as classes na hierarquia Java.
A palavra-chave extends usada para indicar a superclasse de uma classe, ou seja, fazer herana.
Exemplo:
public class Cadastro extends JFrame{//corpo da classe}
Objeto
Um objeto uma representao abstrata de uma entidade do mundo real, que tem um identificador nico,
propriedades embutidas e a habilidade de interagir com outros objetos e consigo mesmo. O estado do objeto um
conjunto de valores que os atributos do objeto podem ter em um determinado instante do tempo.
As classes definem a estrutura e o comportamento de um tipo de objeto, elas atuam como templates.
Todos os objetos criados a partir de uma classe so idnticos.
Quando declaramos variveis de qualquer tipo primitivo o espao em memria alocado como parte da
operao.
A declarao de uma varivel referncia a um objeto no aloca espao na memria. A alocao de memria
feita somente quando o objeto criado.
Exemplo:
Cadastro cad;
cad = new Cadastro();
O primeiro comando, a declarao, aloca apenas o espao suficiente para a referncia. O segundo, aloca o
espao para os atributos do objeto cad, somente aps a criao do objeto que seus membros atributos e mtodos
podem ser referenciados.

42

Escola Tcnica de Braslia

Java e POO

Uma classe pode ter construtores especializados ou somente o construtor default.


Um construtor recebe sempre o mesmo nome da classe.
O mtodo construtor gera uma instncia do objeto em memria e o seu cdigo executado imediatamente
aps a criao do objeto provendo-lhe um estado inicial.
Obs.: Valores de parmetros so passados no momento da criao.
Herana
Significa ser capaz incorporar os dados e mtodos de uma classe previamente definida. Assim como a
herana de todas as operaes e dados, voc pode especializar mtodos da classe ancestral e especificar novas
operaes e dados, para refinar, especializar, substituir ou estender a funcionalidade da classe progenitora.
Terminologia:
Estender- criar uma nova classe que herda todo o contedo da classe
Superclasse classe progenitora
Subclasse classe filha
Em Java, a classe Object a raiz de todas as classes.
Variveis de instncia - atributos
As so consideradas variveis de instncia se forem declaradas fora de uma definio de mtodo, e no so
modificadas pela palavra-chave static.
Por um costume de programao, a maioria das variveis de instncia definida logo aps a primeira linha da
definio da classe, mas tambm podem ser definidas no final.
Exemplo:
public class Cadastro extends JFrame{
String nome; //varivel de instncia
String sexo; //varivel de instncia
int idade; //varivel de instncia
}
Obs.: So definidas fora de um mtodo.
Variveis de classe
As variveis de classe se aplicam a uma classe como um todo, em vez de serem armazenadas
individualmente em objetos de classe.
As variveis de classe so eficazes na comunicao entre diferentes objetos da mesma classe ou para
registrar informaes por toda a classe entre um conjunto de objetos.
A palavra-chave static usada na declarao da classe para declarar uma varivel de classe.
static qualificador ou specifier, que indica que o mtodo deve ser compartilhado por todos os objetos que
so criados a partir desta classe.
Exemplo:
public class Cadastro extends JFrame{
static String nome= Cliente; //varivel de classe
String sexo; //varivel de instncia
int idade; //varivel de instncia
static final double rendaMinima=1000;/*varivel de classe
uma constante em Java*/
}
As variveis de classe so variveis definidas e armazenadas na prpria classe. Seus valores se aplicam classe
e a todas as suas instncias.

43

Escola Tcnica de Braslia

Java e POO

Com variveis de instncia, cada nova instncia da classe recebe uma nova cpia
das variveis de instncia que a classe define. Cada instncia, ento, pode alterar os valores dessas variveis de
instncia sem afetar quaisquer outras instncias. Com as variveis de classe, s existe uma cpia dessa varivel. A
alterao do valor dessa varivel o altera para todas as demais instncias.
Cada instncia da classe Cadastro possui seus prprios valores para sexo e idade. A varivel de classe nome e
rendaMinima, no entanto, possui apenas um valor para todos os membros do Cadastro: Cliente. Mude o valor de
nome, e todas as instncias de Cadastro so afetadas.
No caso da varivel de classe rendaMinima ela uma constante e no pode ser modificada, isto feito colocandose a palavra-chave final aps static.
Para acessar variveis de classe, use a mesma notao de ponto que as variveis de instncia. Para obter ou
alterar o valor da varivel de classe, podemos usar a instncia ou o nome da classe no lado esquerdo do ponto. As
duas linhas de sada no exemplo a seguir apresentam o mesmo valor:
Exemplo:
Cadastro cad = new Cadastro();
Sytem.out.println(O nome no Cadastro :+cad.nome);
Sytem.out.println(O nome no Cadastro :+Cadastro.nome);
Exemplo:
public class MembrosEstaticos {
/* Atributo esttico */
private static int contObjetos = 0;
public MembrosEstaticos () {
contObjetos++;
}
/* Mtodo esttico */
public static void numeroDeOjetos () {
System.out.println("Nmero de objetos instanciados
contObjetos);
}
}
Exemplo:
public class MembrosEstaticosApp {
public static void main (String[] args) {
for (int i = 1; i <= 10; i++) {
MembrosEstaticos me = new MembrosEstaticos();
/* chamada ao mtodo esttico */
me.numeroDeOjetos();
}
/* chamada ao mtodo esttico */
MembrosEstaticos.numeroDeOjetos();
}
}

44

"

Escola Tcnica de Braslia

Java e POO

Mtodos
As definies de mtodo possuem quatro partes bsicas:
O nome do mtodo;
Uma lista de parmetros;
O tipo de objeto ou primitivo retornado pelo mtodo;
O corpo do mtodo.
Obs.: o nome do mtodo e sua lista de parmetros correspondem a sua assinatura.
Obs.: Em Java podemos ter vrios mtodos na mesma classe com o mesmo nome, mas com diferenas nas
assinaturas. Essa prtica chamada de sobrecarga de mtodo.
A menos que um mtodo tenha sido declarado como void como seu tipo de retorno, o mtodo retorna algum
tipo de valor quando completado. O valor precisa ser retornado explicitamente em algum ponto de sada dentro do
mtodo, usando a palavra-chave return.
Exemplo:
tipoRetorno nomeMtodo (tipo1 arg1, tipo2 arg2, tipo3 arg3...){
//corpo do mtodo}
Quando chamamos um mtodo com parmetro de objeto, os objetos que passam para o corpo do mtodo so
passados por referncia. Qualquer modificao feito nos objetos dentro do mtodo persistem fora dele.
Mtodos de classe
Os mtodos de classe esto disponveis a qualquer instncia da prpria classe e podem estar disponveis a
outras classes. Alm disso, ao contrrio de um mtodo de instncia, uma classe no exige uma instncia da classe
para que seus mtodos sejam chamados.
Exemplo:
System.exit(0);
A classe System define um conjunto de mtodos teis durante a exibio do texto, recuperando informaes
de configurao e executando outras tarefas.
O mtodo exit(int) fecha uma aplicao com um cdigo de status que indica sucesso (0) ou falha(qualquer
outro valor).
Para definir mtodos de classe, use a palavra-chave static na frente da definio de mtodo.
Exemplo:
double x=Double.parseDouble(42);
parseDouble um mtodo de classe, pois no precisamos criar nenhum objeto para utiliz-lo.
Obs.: para passar argumentos a um programa Java, os argumentos devero ser anexados linha de comando
(prompt do MS-DOS) quando o programa for executado.
Exemplo:
java Cadastro Abril 450
// passados dois argumentos que so arrays de strings para o mtodo main().
Sendo assim, args[0]=Abril e args[1]=450.
Dentro do mtodo main() podemos tratar os argumentos que foram recebidos.

45

Escola Tcnica de Braslia

Java e POO

Polimorfimos por sobrecarga de mtodos


Duas caractersticas diferenciam os mtodos com o mesmo nome:
O nmero de argumentos;
O tipo de dado ou objetos de cada argumento.
Essas duas caractersticas fazem parte da assinatura de um mtodo. O uso de vrios mtodos com o mesmo
nome e assinaturas diferentes chamado de sobrecarga.
A sobrecarga de mtodo pode eliminar a necessidade de mtodos inteiramente diferentes, que realizam
essencialmente a mesma coisa. A sobrecarga tambm torna possvel que os mtodos se comportem de modo
diferente, dependendo dos argumentos que recebem.
Quando chamamos um mtodo em um objeto, a Java combina o nome do mtodo e os argumentos a fim de
escolher qual definio de mtodo deve ser executada.
Para criar um mtodo sobrecarregado, crie diferentes definies de mtodo em uma classe, cada uma com o
mesmo nome, mas com diferentes listas de argumentos. A diferena pode ser o nmero, o tipo de argumentos ou
ambos. Java permite a sobrecarga do mtodo, desque que cada lista de argumentos seja exclusiva para o mesmo
nome do mtodo.
Exemplo:
public class SobreCarga {
public static float media (int a, int b) {
return ( a + b ) / 2;
}
public static float media (float a, float b) {
return ( a + b ) / 2;
}
public static float media (int a, int b, int c) {
return ( a + b + c ) / 3;
}
public static float media ( float a, float b, float c ) {
return ( a + b + c ) / 3;
}
/* No possvel ter um mtodo com apenas o tipo de retorno
diferente */
/*
public static double media ( float a, float b, float c ) {
return ( a + b + c) / 3;
}
*/
}
Obs.: No possvel ter um mtodo com apenas o tipo de retorno diferente
public class SobreCargaApp {
public static void main (String[] args) {
System.out.println( SobreCarga.media(
System.out.println( SobreCarga.media(
System.out.println( SobreCarga.media(
System.out.println( SobreCarga.media(
/* Converso explicita pra float */
System.out.println( SobreCarga.media(
}
}

46

5, 7 ) );
5, 7, 3 ) );
8f, 2f ) );
5.3f, 7.9f, 3.1f ) );
8f, 4 ) );

Escola Tcnica de Braslia

Java e POO

Mtodos construtores
So chamados automaticamente quando os objetos dessa classe so criados.
Ao contrrio dos outros mtodos, um construtor no pode ser chamado diretamente. Java faz trs aes
quando new usada para criar uma instncia de uma classe.
Aloca memria para o objeto;
Inicializa as variveis de instncia desse objeto, seja para valores iniciais ou para um padro(0 para
nmeros, null para objetos, false para Booleanos ou 0\ para caracteres).
Chama o mtodo construtor da classe, que pode ser um dentre vrios mtodos.
Se uma classe no possui quaisquer mtodos construtores definidos, um objeto ainda ser criado quando o
operador new for usado em conjunto com a classe. Contudo, podemos ter de definir essas variveis de instancia ou
chamar outros mtodos que o objeto precise para inicializar-se.
Definindo mtodos construtores em sua prprias classes, possvel definir valores iniciais de
variveis de instncia, chamar mtodos com base nessas variveis, chamar mtodos em outros objetos e
definir propriedades iniciais de um objeto.
Tambm podemos sobrecarregar mtodos construtores, como pode fazer com mtodos normais, para criar um
objeto que tenha propriedades especficas com base nos argumentos fornecidos a new.
Os construtores se parecem muito com os mtodos normais, com trs diferenas bsicas:
Eles sempre tm o mesmo nome da classe.
Eles no tem um tipo de retorno.
Eles no podem retornar um valor no mtodo usando a instruo return.
Exemplo:
import javax.swing.*;
public class Cadastro extends JFrame{
String nome;
int idade;
char sexo;
Cadastro(String nome, int idade, char sexo){
this.nome=nome;
this.idade=idade;
this.sexo=sexo;}
}
Poderamos criar um objeto dessa classe com a seguinte instruo:
Cadastro cad = new Cadastro(Ana,32,F);
O objeto teria os seguintes valores:
cad.Nome=Ana;
cad.idade=32;
cad.sexo=F.
Polimorfismo por reescrita de mtodos
Java procura a definio de um mtodo na classe do objeto. Se no encontrar uma, ele passar para a
chamada de mtodo acima na hierarquia de classe, at que uma definio de mtodo seja encontrada. A herana de
mtodo permite definir e usar mtodos repetidamente em subclasses, sem ter de duplicar o cdigo.
Contudo, pode haver ocasies em que desejemos que um objeto responda aos memos mtodos, mas que
tenha um comportamento diferente quando esse mtodo chamado. Nesse caso, voc pode redefinir o mtodo. Para
redefinir um mtodo, defina um em uma subclasse com a mesma assinatura do mtodo em uma superclasse. Depois,
quando o mtodo for chamado, o mtodo da subclasse ser encontrado e executado no lugar daquele que se encontra
na superclasse.

47

Escola Tcnica de Braslia

Java e POO

Para reescrever um mtodo, basta criar um mtodo na sua superclasse que tenha
a mesma assinatura (nome e lista de argumentos) do mtodo definido pela superclasse da sua classe. Como Java
executa a primeira definio de mtodo que encontra, que combine com a assinatura, a nova assinatura esconde a
definio do mtodo original.
Exemplo:
class Imprima {
int x = 0;
int y = 1;
void imprimir() {
System.out.println("x " + x + ", y " + y);
System.out.println("Eu sou uma instncia da classe " +
this.getClass().getName());
}
}
Exemplo: Classe Executora
class SubImprima extends Imprima {
int z = 3;
public static void main(String[] arguments) {
SubImprima obj = new SubImprima();
obj.imprimir();
}
}
Exemplo: Correo com reescrita do mtodo acrescentando a varivel de instncia z.
class SubImprima extends Imprima {
int z = 3;
void imprimir() {
System.out.println("x " + x + ", y " + y + ",z "+z);
System.out.println("Eu sou uma instncia da classe " +
this.getClass().getName());
}
public static void main(String[] arguments) {
SubImprima obj = new SubImprima();
obj.imprimir();
}
}
Super
Normalmente, existem dois motivos para querermos definir um mtodo j implementado por uma superclasse:
Para substituir completamente a definio desse mtodo original;
Para aumentar o mtodo original com algum comportamento adicional.
A redefinio de um mtodo e a entrega de uma nova definio ao mtodo escondem a definio do mtodo
original. Entretanto, existem ocasies em que o comportamento deve ser acrescentado definio original, em vez de
substitu-la completamente, em especial quando o comportamento duplicado no mtodo original e no mtodo que o
redefine. Chamando o mtodo original no corpo do mtodo que o redefine, podemos acrescentar apenas o necessrio.
A palavra-chave super usada para chamar o mtodo original de dentro de uma definio de mtodo. Essa
palavra-chave passa a chamada de mtodo para cima na hierarquia.
Exemplo:
class SubImprima extends Imprima {
int z = 3;
void imprimir() {
System.out.println("x " + x + ", y " + y + ",z "+z);
System.out.println("Eu sou uma instncia da classe " +
this.getClass().getName());
super.imprimir();//chama o mtodo da superclasse

48

Escola Tcnica de Braslia

Java e POO

}
public static void main(String[] arguments) {
SubImprima obj = new SubImprima();
obj.imprimir();
}
}
Obs.: A palavra-chave super, semelhante palavra-chave this, um marcador de lugar para a superclasse da classe.
Pode-se us-la em qualquer lugar em que utiliza this, mas super refere-se superclasse, em vez do objeto atual.
THIS
Escopo a parte de um programa em que uma varivel ou outro tipo de informao existe, possibilitando o
uso de variveis em instrues ou expresses. Quando a parte que define o escopo tiver concludo sua execuo, a
varivel deixar de existir.
Varivel com escopo local s pode ser usada dentro do bloco em que foi definida.
Varivel de instncia se estende classe inteira, de modo que podem ser usadas por qualquer um dos
mtodos de instncia dentro da classe.
Ordem de busca da varivel verifica 1 no escopo atual (que poderia ser um bloco), depois em cada escopo
mais externo e, finalmente, na definio do mtodo atual. Se a varivel no for uma varivel local, ento Java verificar
uma definio dessa varivel como uma varivel de instncia ou de classe, na classe atual. Se a definio da varivel
assim no for encontrada, ela procurar em cada superclasse, uma por vez.
THIS - uma palavra chave usada num mtodo como referncia para o objeto corrente, ela tem o significado
de: o objeto para o qual este trecho de cdigo est sendo executado.
Refere-se ao objeto corrente quando usado no cdigo de um mtodo no esttico. Usado com freqncia para
passar uma referncia do objeto corrente num envio de mensagem para outro objeto.
A this B
A=this
Exemplo:
public class Teste{
int A=0;
public void Teste(int A){
this.A=A;}}//this.A refere-se a varivel de instncia
A palavra-chave this a nica forma de garantir que o valor inteiro A do mtodo Teste() ser passado para a
varivel inteira A da classe Teste.
A palavra this muito utilizada quando um dos parmetros do mtodo tem o mesmo nome que uma varivel
de instncia.
void saca (double quantidade){
double novoSaldo = this.saldo-quantidade;
this.saldo=novoSaldo;}
A palavra-chave this refere-se ao objeto atual, e podemos us-la em qualquer lugar onde uma referncia a um
objeto pudesse aparecer:
Em muitos casos, voc pode no ter de usar explicitamente, pois ela ser assumida. Por exemplo, voc pode
se referir a variveis de instncia e chamadas de mtodo definidas na classe atual simplesmente pelo nome, pois o
this implcito nessas referncias.
Exemplo:
t=x;
resetData(this);

49

Escola Tcnica de Braslia

Java e POO

This uma referncia instncia atual de uma classe. Devemos us-la apenas
dentro do corpo de uma definio de mtodo de instncia.
Os mtodos de classe que so declarados com a palavra-chave static no podem usar this.
Exemplo:
class ScopeTest{
int test=10;
void printTest(){
int test=20;
System.out.println(Test:+test);}
public static void main (String args[]){
ScopeTest st= new ScopeTest();
st.printTest();}}
Nessa classe, temos duas variveis com o mesmo nome e definio. A primeira, uma varivel de instncia,
possui o nome test e inicializada com o valor 10. A segunda uma varivel local com o valor de 20.
A varivel local test, dentro do mtodo printTest(), esconde a varivel de instncia test. Quando o mtodo
printTest() chamado de dentro do mtodo main(), ele indica que test igual a 20, embora haja uma varivel de
instncia igual a 10. Para evitar esse problema use this.test para se referir varivel de instncia e use apenas test
para se referir varivel local.
Exemplo:
public abstract class Pessoa {
private String identificacao;//varivel de instncia
private String nome; //varivel de instncia
private String dataNascimento; //varivel de instncia
private char sexo;//varivel de instncia
public Pessoa (String id, String nome, String datNasc, char sexo) {
this.nome = nome;//a varivel de instncia recebe nome
this.dataNascimento = datNasc; //a varivel de instncia
recebe datNasc
this.sexo = sexo;//a varivel de instncia recebe sexo
}
public void id (String id) {
this.identificacao = id;
}
public void nome (String nome) {
this.nome = nome;
}
public void dataNascimento (String dataNascimento) {
this.dataNascimento = dataNascimento;
}
public void sexo (char sexo) {
this.sexo = sexo;
}
public String id () {
return identificacao;
}
public String nome () {
return nome;

50

Escola Tcnica de Braslia

Java e POO

}
public String dataNascimento () {
return dataNascimento;
}
public char sexo () {
return sexo;
}
public String toString () {
return(nome + " | " + dataNascimento + " | " + sexo);
}
}

Encapsulamento
Mecanismo utilizado visando obter segurana, modularidade e autonomia para objetos;
Conseguido atravs da definio de visibilidade privada dos atributos, ganhando-se assim autonomia para
definir o que o mundo externo ao objeto poder visualizar e acessar, normalmente atravs de mtodos pblicos.
Dica: sempre defina os atributos de uma classe como privados, a no ser que tenha uma boa justificativa para
no serem
Modificadores de Visibilidade
Os modificadores usados com mais freqncia nos programas so aqueles que controlam o acesso a mtodos e
variveis: public, private e protected. Esses mtodos modificadores determinam quais variveis e mtodos de uma
classe so visvieis a outras classes.
Usando o controle de acesso, pode-se controlar como outras classes usaro suas classes. Algumas variveis e
mtodos em uma classe sero teis apenas dentro da prpria classe e devero ficar escondidos de outras que possam
interagir com essa classe. Esse processo chamado de encapsulamento. Um objeto controla o que o mundo exterior
pode saber a respeito dele e como o mundo exterior pode interagir com ele.
Encapsulamento o processo que impede que variveis de instncia sejam lidas ou modificadas por outras
classes. A nica maneira de usar essas variveis chamando mtodos da classe, se estiverem disponveis.
Java oferece quatro nveis de controle de acesso: public, private, protected e um nvel padro especificado sem o
uso desses modificadores de controle de acesso.

Public estes atributos e mtodos so sempre acessveis em todos os mtodos de todas as classes. Este o
nvel menos rgido de encapsulamento, que equivale a no encapsular.
Private estes atributos e mtodos so acessveis somente nos mtodos (todos) da prpria classe. Este o nvel
mais rgido de encapsulamento.
Protected estes atributos e mtodos so acessveis no pacote, nos mtodos da prpria classe e suas subclasses
<default> - Visvel no pacote e na classe. Variveis e mtodos declarados sem quaisquer modificadores.
TABELA RESUMO
Visibilidade
Public Protected Default Private
Da mesma classe
Sim
Sim
Sim
Sim
De qualquer classe no mesmo pacote
Sim
Sim
Sim
No
De qualquer classe fora do pacote
Sim
No
No
No
De uma subclasse no mesmo pacote
Sim
Sim
Sim
No
De uma subclasse fora do mesmo Sim
Sim
No
No
pacote
Classes, mtodos e variveis finais

51

Escola Tcnica de Braslia

Java e POO

O modificador final usado com classes, mtodos e variveis para indicar que no sero alterados. Ele possui
diferentes significados para cada elemento que pode se tornar final, como a seguir:
Uma classe final no pode ser subclassificada(extendida);
Um mtodo final no pode ser redefinido por quaisquer subclasses;
Uma varivel final no pode mudar de valor.
Exemplo: Varivel final (constantes)
public static final int voltas=10;
static final String titulo= Revista;
Exemplo: Mtodo final
public final void get Assinatura(){
//corpo do mtodo}
Obs.: O motivo mais comum para declarar um mtodo final fazer com que a classe seja executada com mais
eficincia. Normalmente, quando o ambiente de runtime Java executa um mtodo, ele primeiro verifica a classe atual
para encontrar o mtodo, depois verifica sua superclasse e prossegue subindo na hierarquia de classes, at que o
mtodo seja encontrado. Esse processo sacrifica alguma velocidade em nome da flexibilidade e facilidade de
desenvolvimento.
Se um mtodo final, o compilador Java pode colocar o bytecode executvel do mtodo diretamente em
qualquer programa que chame o mtodo. Afinal, o mtodo nem sequer mudar devido a uma subclasse que o
redefine.
Exemplo: Classe final
public final class Cadastro{
//corpo da classe}
Obs.: Todos os mtodos em uma classe final so automaticamente finais.
Classes e mtodos abstratos
Em uma hierarquia de classes, quanto maior a classe, mais abstrata sua definio. Uma classe no topo de
uma hierarquia de outras classes s pode definir o comportamento e os atributos comuns a todas as classes.
Comportamentos e atributos mais especficos entraro em algum lugar mais baixo na hierarquia.
Quando estivermos fatorando o comportamento e os atributos comuns durante o processo de definio de uma
hierarquia de classes, s vezes podemos nos deparar com uma classe que nem sequer precisar ser instanciada
diretamente. Em vez disso, esse tipo de classe serve como um lugar para manter comportamentos e atributos comuns,
compartilhados por suas subclasses.
Essas classes so chamadas classes abstratas e so criadas usando o modificador abstract.
Exemplo:
public abstract class Pessoa{
//....
}
Um exemplo de uma classe abstrata java.awt.JComponent, a superclasse dos componentes da interface
grfica com o usurio. Como diversos componentes herdam dessa classe, ela contm mtodos e variveis teis a
cada uma delas. Contudo, no existe algo como um componente genrico que possa ser acrescentado a uma
interface, de modo que nunca precisa criar um objeto Component em um programa.
As classes abstratas podem conter tudo o que um classe normal pode conter, incluindo mtodos construtores,
pois suas subclasses ter de herdar os mtodos. As classes abstratas tambm podem conter mtodos abstratos, que
so assinaturas de mtodo sem implementao. Esses mtodos so implementados em subclasses de classe
abstrata. Os mtodos abstratos so declarados com o modificador abstract. No podemos declara um mtodo abstrato
em uma classe no abstrata. Se uma classe no tiver nada alm de mtodos abstratos, ser melhor usar uma
interface.
Exemplo:
52

Escola Tcnica de Braslia

Java e POO

public abstract class Pessoa {


private String identificacao;
private String nome;
private String dataNascimento;
private char sexo;
public Pessoa (String id, String nome, String datNasc, char sexo) {
this.nome = nome;
this.dataNascimento = datNasc;
this.sexo = sexo;
}
public void id (String id) {
this.identificacao = id;
}
public void nome (String nome) {
this.nome = nome;
}
public void dataNascimento (String dataNascimento) {
this.dataNascimento = dataNascimento;
}
public void sexo (char sexo) {
this.sexo = sexo;
}
public String id () {
return identificacao;
}
public String nome () {
return nome;
}
public String dataNascimento () {
return dataNascimento;
}
public char sexo () {
return sexo;
}
public String toString () {
return(nome + " | " + dataNascimento + " | " + sexo);
}
}
Exemplo:
public interface SituacaoAcademica {
public static final float MEDIA = 5.0f;
public static final int FALTAS = 18;
public static final String AP = "Aprovado";
public static final String RF = "Reprovado por Falta";
public static final String RM = "Reprovado por Mdia";

public abstract void faltas (int faltas);


public abstract void notas (float n1, float n2, float n3);
53

Escola Tcnica de Braslia

Java e POO

public abstract void nota1 (float n);


public abstract void nota2 (float n);
public abstract void nota3 (float n);
public
public
public
public
public
public

abstract
abstract
abstract
abstract
abstract
abstract

String situacaoFinal ();


float media ();
int faltas ();
float nota1 ();
float nota2 ();
float nota3 ();

}
Exemplo:
public class Alunos {
private Aluno[] alunos;
private int posNovoAluno = 0;
public Alunos() {
alunos = new Aluno[10]; }
public void insere (int mat, String nome, float n1, float n2, float n3){
alunos[posNovoAluno] = new Aluno(mat, nome, n1, n2,n3);
posNovoAluno++;
}
public void escreve () {
String linha = "****************************************************";
System.out.println(linha);
for (int i = 0; i < posNovoAluno; i++) {
alunos[i].escreve(); }
System.out.println(linha);
}
/* Classe Interna : Aluno */
class Aluno {
int matricula;
String nome;
float nota1, nota2, nota3;
Aluno (int mat, String nome, float n1, float n2, float n3) {
this.matricula = mat;
this.nome = nome;
this.nota1 = n1;
this.nota2 = n2;
this.nota3 = n3;
}
void escreve() {
String linha = "_________________________________________________";
System.out.println(linha +
"\nMatrcula : \t" + matricula +
"\nNome : \t" + nome +
"\nNotas : \t" + nota1 + "\t" + nota2 + "\t" + nota3 +
"\n" + linha);
}
}
}
GETTERS E SETTERS

54

Escola Tcnica de Braslia

Java e POO

Um padro que surgiu com o desenvolvimento de Java foi de encapsular, isto ,


esconder todos os membros de uma classe. Para permitir o acesso aos atributos de uma maneira controlada, a prtica
mais comum de criar dois mtodos, um que retorna valor e outro que muda valor.
O padro para esses mtodos de colocar a palavra get ou set antes do nome do atributo.
Exemplo 1: classe com os atributos pblicos.
package oo;
public class Cliente{
public String nome;
public String escolaridade;
public int idade;
public Cliente(){
}
}
Exemplo 1: classe executora de cliente
package oo;
public class PrincipalCliente{
public static void main(String args[]){
Cliente cliente1 = new Cliente();
cliente1.escolaridade= Superior Completo;
cliente1.idade=25;
cliente1.nome= Mario dos Santos;
System.out.println(p1.escolaridade);
System.out.println(p1.idade);
System.out.println(p1.nome);
}
}
Exemplo 2: modificar os atributos da classe Cliente para private
package oo;
public class Cliente{
private String nome;
private String escolaridade;
private int idade;
public Cliente(){
}
}
Quando tentamos executar novamente a classe PrincipalCliente todas as tentativas de acesso aos atributos
da classe Cliente apresentaro erros na classe PrincipalCliente, porque agora os atributos so privados. possvel
somente acess-los dentro da prpria classe Cliente.
Para solucionarmos este problema deveremos criar os mtodos set() e get() pblicos para cada atributo que
desejemos tornar pblico. O mtodo set() o modificar, seu objetivo alterar o valor. O mtodo get() o mtodo
acessor, pega o valor do atributo.

Exemplo 3: Classe Cliente modificada incluindo os mtodos get e set.

55

Escola Tcnica de Braslia

Java e POO

public class Cliente{


private String nome;
private String escolaridade;
private int idade;
public Cliente(){
}
public String getNome(){
return nome;
}
public void setNome(String nome){
this.nome=nome;
}
public String getEscolaridade(){
return escolaridade;
}
public void setEscolaridade(String escolaridade){
this.escolaridade=escolaridade;
}
public String getIdade(){
return idade;
}
public void setIdade(int idade){
this.idade=idade;
}
Exemplo 3: nova classe executora que acessa os mtodo get e set da classe Cliente,
package oo;
public class PrincipalCliente{
public static void main(String args[]){
Cliente cliente1 = new Cliente();
cliente1.setEscolaridade(Superior Completo);
cliente1.setIdade(25);
cliente1.setNome(Mario dos Santos);
System.out.println(p1.getEscolaridade());
System.out.println(p1.getIdade());
System.out.println(p1.getNome());
}
}
}
Os mtodos get() e set() podem ser usados para validar um valor de entrada.
Exemplo:
public void setIdade(int idade){
if(idade >=0)
this.idade=idade;}
Neste caso, s daria entrada se o idade fosse maior que 0.
Para no termos que repetir vrias vezes os comandos de impresso, podemos criar um mtodo que faa este
trabalho na classe Cliente.
Exemplo 4: incluindo um mtodo para impresso dos atributos.

56

Escola Tcnica de Braslia

public class Cliente{


private String nome;
private String escolaridade;
private int idade;
public Cliente(){
}
public String getNome(){
return nome;
}
public void setNome(String nome){
this.nome=nome;
}
public String getEscolaridade(){
return escolaridade;
}
public void setEscolaridade(String escolaridade){
this.escolaridade=escolaridade;
}
public String getIdade(){
return idade;
}
public void setIdade(int idade){
this.idade=idade;
}
public void imprime(){
System.out.println(p1.getEscolaridade());
System.out.println(p1.getIdade());
System.out.println(p1.getNome());
}
}
Exemplo 4: Classe PrincipalCliente que utiliza o mtodo imprime().
package oo;
public class PrincipalCliente{
public static void main(String args[]){
Cliente cliente1 = new Cliente();
cliente1.setEscolaridade(Superior Completo);
cliente1.setIdade(25);
cliente1.setNome(Mario dos Santos);
cliente1.imprime();
}
}
}

LISTA 8

57

Java e POO

Escola Tcnica de Braslia

Java e POO

Desenvolver as classes abaixo e fazer um principal e criar 2 objetos de cada classe, alimentar os
objetos e exibir o relatrio.
Na classe Funcionario, o mtodo getSalario() calcula o salrio do funcionrio. O mtodo
exibeDados() exibe as informaes do funcionrio, inclusive o salrio aproveitando o mtodo getSalario().
Funcionrio
String nome
int horastrabalhadas
float valorhora
void setNome(String nome)
String getNome()
void setHorasTrabalhadas(int ht)
int getHorasTrabalhadas()
void setValorHora(float vh)
float getValorHora()
float getSalario()
void exibeDados()
Na classe conta, o mtodo deposito(float qtd) adiciona a quantidade passada por parmetro ao saldo
atual. O mtodo saque(float qtd) retira do saldo a quantidade indicada no parmetro, caso o saldo seja
insuficiente deve retornar o valor 1, caso contrrio retorna 0.
Conta
String conta
String cliente
float saldo
void setCoonta(String cont)
String getConta()
void setCliente(String cliente)
String getCliente()
void setSaldo(float sal)
float getSaldo()
void deposito(float qtd)
int saque(float qtd)
void relatorio()

Na classe Produto, o mtodo getSituacao() retorna 0 se o estoque estiver acima do estoque mnimo
permitido, caso contrrio retorna 1. No mtodo relatorio(), caso o estoque esteja abaixo do permitido deve
se informado que necessita comprar mais produto.
Produto
int codigo
String nome
float preo
int estoque
int estoquemin
void setCodigo(int cod)
int getCodigo()
void setNome(String nome)

58

Escola Tcnica de Braslia

Java e POO

String getNome()
void setPreco(float p)
float getPreco()
void setEstoque(int est)
int getEstoque()
void setEstoqueMinimo(int estmin)
int getEstoqueMinimo()
int getSituacao()
void relatorio()

59

Você também pode gostar