Sei sulla pagina 1di 171

Programao Orientada a Objetos

(Object Oriented Programming)


FLVIO DE OLI VEIRA SILVA
flavio@facom.ufu.br
flavio@autoenge.com.br

OBJETIVOS DA DISCIPLINA
Entender os principais conceitos do
paradigma de Orientao a Objetos e sua
importncia no processo de
desenvolvimento de software
Estudar uma linguagem de programao
que suporte os conceitos de OOP (Java)

Programao Orientada a Objetos


Flvio de Oliveira Silva

EMENTA
1.
2.
3.
4.
5.
6.
7.

Introduo POO
Anlise Orientada a Objetos
Introduo Linguagem Java
Classes, Atributos e Mtodos
Herana
Herana Mltipla
Aspectos de Implementao de LOO

Programao Orientada a Objetos


Flvio de Oliveira Silva

BIBLIOGRAFIA
POO, Danny C. C. Object-Oriented Programming and
Java; 3ed, Springer, 2001
WINBLAD, Ann L. Software Orientado ao Objeto;
Makron Books, 1993
DEITEL, H. M. Java como Programar; 3 ed, Bookman,
2001
BOOCH, Grady Object-Oriented Analysis and Design
with Applications; 2ed, Benjamin, 1994
KHOSHAFIAN, Setrag Object Orientation: Concepts,
languages, database, user interfaces; Wiley, 1990
COAD, Peter Anlise Baseada em Objetos; Campus,
1992.
Programao Orientada a Objetos
Flvio de Oliveira Silva

AVALIAO


Provas Tericas 50 pontos

Primeira Prova - 10/ 06/ 2003 25 pontos


Segunda Prova - 22/ 07/ 2003 25 pontos

Testes em sala de Aula 10 pontos


Trabalho Projeto Concluso de Curso 40 pontos

Apresentao: Relatrio e Entrevista de avaliao


Critrios: Complexidade; Finalizao da proposta; Respeito ao
Cronograma; Programao em camadas; Entrevista Individual;
Relatrio
Partes do projeto sero entregues em diferentes datas




OBSERVAES

Material Apoio

Pasta 122 Xerox ao lado Bloco B

Atendimento




Tera-Feira
Sexta-Feira

08:50 10:40 Sala 1B54


15:00 16:30 Sala 1B54

Aulas Prticas no laboratrio


Programao Orientada a Objetos
Flvio de Oliveira Silva

INTRODUO A POO
A Programao Orientada a Objetos (POO)
um paradigma Baseado em objetos
Paradigma Modelo, padro para
especificao de um problema
Paradigmas existentes na programao de
computadores: Procedimental; Funcional;
Lgico e Orientado a Objetos(OO)

Programao Orientada a Objetos


Flvio de Oliveira Silva

PROCEDIMENTAL (Algortmica)

Computao ocorre atravs da execuo de


instrues passo a passo. Ex: C; Pascal
int fatorial(int n){
int fat;
fat = 1;
if (n == 0)
return 1;
while (n >= 1){
fat = fat * n;
n = n -1;
}
return fat;
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

FUNCIONAL

Computao baseada em clculo de funes.


Ex: LISP; HASKELL
;LISP
(defun fatorial (n)
(cond
((= n 0) 1)
(t (* n (fatorial (- n 1))))
)
)
-- Haskell
fatorial :: Integer -> Integer
fatorial 0
= 1
fatorial n
= n * fatorial (n - 1)
Programao Orientada a Objetos
Flvio de Oliveira Silva

LGICA

Computao baseada em fatos e regras. Ex:


Prolog
factorial(0,1).
factorial(N,X):- M is N - 1,
factorial(M,Y),
X is N * Y.

Programao Orientada a Objetos


Flvio de Oliveira Silva

ORIENTADO A OBJETOS (OO)

Computao baseada em objetos que se intercomunicam.


Objetos contm dados e mtodos. Ex: C++; Java
public class Numero {
private long valor = 0;
public long Fatorial() {
if (valor == 0) {
return 1;
} else {
return valor*Fatorial(valor-1);
}
}
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

10

PARADIGMAS

Cada paradigma representa uma forma


de propor uma soluo a um dado
problema.
A utilizao de um ou outro paradigma
depende de vrios fatores.

Programao Orientada a Objetos


Flvio de Oliveira Silva

11

INTRODUO A POO
Conceitos Bsicos
1.
2.
3.
4.
5.

OBJETO
MTODO
MENSAGEM
CLASSE
CLASSIFICAO

1.
2.

6.
7.
8.

GENERALIZAO
ESPECIALIZAO

HERANA
ENCAPSULAMENTO
POLIMORFISMO
Programao Orientada a Objetos
Flvio de Oliveira Silva

12

OBJETO

Entidades que possuem dados e instrues


sobre como manipular estes dados
 Os objetos esto ligado soluo do problema.
Software Grfico Objetos: Circulos; Linhas; etc.
Software BD Objetos: Tabelas; Linhas; Campos; etc.
Software Comercial: Pedidos; Produtos; Clientes; etc.


Na POO a soluo do problema consiste em um


primeiro momento estabelecer quais os objetos
sero necessrios.

Programao Orientada a Objetos


Flvio de Oliveira Silva

13

OBJETO

Dados ligados ao objeto Exemplos:

Crculo ponto_centro, raio


linha ponto_inicio; ponto_final
Cliente Nome; Endereco; Telefone
Exemplos:
/ / criao de objetos (sintaxe C+ + )
Ponto p(3,4);
Circle c(p,5.4);
Cliente pessoa;

Programao Orientada a Objetos


Flvio de Oliveira Silva

14

MTODO


Mtodos so procedimentos que determinam


como o objeto se comporta. Atravs dos
mtodos possvel manipular os dados contidos
no objeto.
 Os mtodos esto ligados ao comportamento do
objeto
Exemplo - Um crculo poderia possuir os
mtodos:
draw ; move; getArea; getPerimeter;
setCenter

Programao Orientada a Objetos


Flvio de Oliveira Silva

15

MENSAGEM


Objetos se comunicam entre si atravs de


mensagens.
 Uma mensagem uma chamada de um mtodo.
A mensagem possui os seguintes componentes:
Receptor nome do objeto que ir receber a mensagem
Mtodo Mtodo do receptor que ser utilizado
Argumentos Informao adicional para a execuo do
mtodo

Exemplos
Point p(0,0), pNewCenter(2,3);
Circle c(p,3);
c.getArea();
/ / Exemplo Mensagem
c.setCenter(pNewCenter); / / Exemplo Mensagem
Programao Orientada a Objetos
Flvio de Oliveira Silva

16

CLASSE


Classe um agrupamento de objetos


A classe consiste nos mtodos e nos dados que
um determinado objeto ir possuir.
Objetos so criados quando uma mensagem
solicitando a criao recebida pela sua classe.
A programao orientada a objetos consiste em
implementar as classes e na utilizao das
mesmas, atravs da sua intercomunicao.
Um objeto uma instncia da classe.





Programao Orientada a Objetos


Flvio de Oliveira Silva

17

CLASSIFICAO


Na POO classificao consiste em criar classes


a partir dos objetos envolvidos em um
determinado problema
 Ex: Diferentes tipos de pessoas interagem
com um Empresa
COMPORTAMENTO

Pessoas interessadas nos produtos


Pessoas que j compraram os produtos
Pessoas que so responsveis por um grupo de trabalhadores
Pessoas responsveis pela demonstrao de produtos e sua venda
Trabalhadores da linha de produo

Programao Orientada a Objetos


Flvio de Oliveira Silva

CLASSE
???
???
???
???
???

18

GENERALIZAO
ESPECIALIZAO

GENERALIZAO


A generalizao consiste em obter similaridades


entre as vrias classes e partir destas
similaridades, novas classes so definidas.
 Estas classes so chamadas superclasses

ESPECIALI ZAO


A especializao por sua vez consiste em


observar diferenas entre os objetos de uma
mesma classe e dessa forma novas classes so
criadas.
 Estas classes so chamadas subclasses.
Programao Orientada a Objetos
Flvio de Oliveira Silva

19

Programao Orientada a Objetos


Flvio de Oliveira Silva

20

EXEMPLO

10

HERANA


Herana a capacidade de uma subclasse de ter


acesso as propriedades da superclasse a ela
relacionada.
 Dessa forma as propriedades de uma classe so
propagadas de cima para baixo em um
diagrama de classes.
 Neste caso dizemos que a subclasse herda as
propriedades e mtodos da superclasse
 A relao de herana entre duas classes uma
relao da seguinte forma: A e um tipo de B,
onde A e B so classes. Caso esta relao entre
as classes no puder ser construda, em geral,
tambm no se tem uma relao de herana
entre a classe A a partir da classe B.
Programao Orientada a Objetos
Flvio de Oliveira Silva

21

HERANA


Exemplos: Um Carro de Passeio um tipo de


veculo; Um caminho um tipo de veculo; Um
crculo um tipo de uma figura geomtrica; Um
quadrado um tipo de figura geomtrica; Um
vendedor um tipo de Empregado; Um
empregado e um tipo de pessoa.
 Herana Mltipla Uma subclasse herda
caractersticas de mais uma classe
 Exemplos: Um gerente de vendas um tipo de
vendedor e um tipo de gerente;

Programao Orientada a Objetos


Flvio de Oliveira Silva

22

11

HERANA x USO


Alm da relao de herana entre as classes


existe a relao de uso
 HERANA
classe A um tipo de B
 USO / AGREGAO (Relao de Contedo)
classe D contm classe C
classe D usa classe C
classe C parte da classe D
Exemplo: Uma equipe contm um gerente e
um grupo de vendedores
Programao Orientada a Objetos
Flvio de Oliveira Silva

23

HERANA x USO

Programao Orientada a Objetos


Flvio de Oliveira Silva

24

12

ENCAPSULAMENTO


Encapsulamento um termo que indica que os


dados contidos em um objeto somente podero
ser acessados atravs de seus mtodos.
 Dessa forma no possvel alterar os dados
diretamente, somente atravs de mtodos. Ex: O
raio somente pode ser alterado/ recuperado pelos
mtodos setCenter/getCenter.
CIRCULO
Ponto center
Raio r
getArea
getPerimeter
getCenter
getRadius
setCenter
setRadius

Programao Orientada a Objetos


Flvio de Oliveira Silva

25

POLIMORFISMO


Os objetos respondem s messagens que eles


recebem atravs dos mtodos. A mesma
mensagem pode resultar em diferentes
resultados. Esta propriedade chamada de
polimorfismo
Exemplo: Mtodo getSalario( )

Para um empregado qualquer getsalario() = Salario;

Para o gerente getsalario() = salario + bonificacao;

Exemplo: Mtodo draw ( )


Para uma figura qualquer desenha uma forma no
definida
Para o retngulo, tringulo e crculo o mesmo mtodo
responde de uma forma diferente
Programao Orientada a Objetos
Flvio de Oliveira Silva

26

13

POLIMORFISMO - Exemplo
FIGURA

draw()

RETNGULO

TRINGULO

CRCULO

draw()

draw()

draw()

Programao Orientada a Objetos


Flvio de Oliveira Silva

27

ENGENHARIA
DE SOFTWARE

CICLO DE VIDA DA ENG. SOFTWARE
(Mod. Clssico)
ENG.
SISTEMAS
ANLISE
PROJETO
CODIFICAO
TESTE
MANUTENO

Programao Orientada a Objetos


Flvio de Oliveira Silva

28

14

ENGENHARIA DE SOFTWARE


ENGENHARI A DE SI STEMAS
 Levantamento dos requisitos
 Inserir o sistema em um contexto maior
Hardware; Pessoas; Outros sistemas
 Viso geral e ampla do sistema
 Riscos; Custos; Prazos; Planejamento

Programao Orientada a Objetos


Flvio de Oliveira Silva

29

ENGENHARIA DE SOFTWARE


ANLI SE
 Continua o processo de coleta de requisitos,
porm concentra-se no mbito do software
 Modelos Dados; Funes e comportamentos
 Particionamento do problema
 Documentao e Reviso dos requisitos
 ANLISE ESTRUTURADA DFD

 ANLISE ORIENTADA A OBJETOS DIAGRAMA DE

CLASSES

Programao Orientada a Objetos


Flvio de Oliveira Silva

30

15

ENGENHARIA DE SOFTWARE


PROJETO
 Como o software ir executar os requisitos
 Estrutura de dados; Arquitetura do Software;
Detalhes de execuo; caracterizao da
interface
 Produzir um modelo que permita a sua
construo posterior
 PROJETO ESTRUTURADO Mdulos

 PROJETO ORIENTADO A OBJETOS Atributos;

Especificaco dos Mtodos; Mensagens

Programao Orientada a Objetos


Flvio de Oliveira Silva

31

ENGENHARIA DE SOFTWARE


CODI FI CAO
Traduzir o projeto para uma linguagem de
computador
Projeto detalhado pode levar a uma
codificao mecnica (Ferramenta CASE)
 TESTES
Verificao se o cdigo atende aos requisitos
Aspectos lgicos e internos do software
Teste de todas as instrues
Aspectos funcionais externos entrada
produz o resultado esperado
Programao Orientada a Objetos
Flvio de Oliveira Silva

32

16

ENGENHARIA DE SOFTWARE


MANUTENO
Mudanas necessrias aps a entrega ao
cliente
Mudanas Erros; Alterao ambiente
externo ou alterao especificao de
requisitos.

Programao Orientada a Objetos


Flvio de Oliveira Silva

33

ANLISE ORIENTADA A OBJETOS (OOA)




Objetivo bsico Identificar classes a partir das


quais objetos sero representados como
instncias
 Envolve as seguintes tarefas
Identificao de Objetos
Especificao de Atributos
Definio de mtodos
Comunicaes entre objetos

Programao Orientada a Objetos


Flvio de Oliveira Silva

34

17

ANLISE ORIENTADA A OBJETOS (OOA)


IDENTIFICAO DE OBJETOS
 Entidades externas (Outros sistemas; dispositivos;
Pessoas)
 Coisas ligadas ao domnio do problema (Relatrios;
Displays;)
 Ocorrncias ou Eventos (Concluso de um movimento;
Alarme disparado; Clique do mouse; etc.)
 Papis ou funes (Engenheiro; Gerente; Vendedor)
desempenhados por pessoas
 Unidades organizacionais (Grupo; Equipe;)
 Lugares (Piso de fbrica; rea de descarga)
 Estruturas (Sensores; veculos de quatro rodas;)

Programao Orientada a Objetos


Flvio de Oliveira Silva

35

ANLISE
ORIENTADA A OBJETOS (OOA)

IDENTIFICAO DE OBJETOS CRITRIOS

1.

2.

3.

4.

5.

6.

RETENO DE INFORMAO Objeto deve


guardar informao que ser utilizada pelo sistema
SERVIOS NECESSRIOS Conjunto de operaes
identificveis que podem mudar o valor de seus
atributos
MLTIPLOS ATRIBUTOS Objeto deve conter mais
de um atributo
ATRIBUTOS COMUNS Conjunto de atributos deve
ser aplicado a todos os objetos
OPERAES COMUNS Conjunto de operaes
devem ser aplicveis a todos os objetos.
REQUISITOS ESSENCI AIS Entidades externas que
aparecem no espao problema que consomem e/ ou
produzem informao
Programao Orientada a Objetos
Flvio de Oliveira Silva

36

18

ANLISE ORIENTADA A OBJETOS (OOA)


Em uma especificao:

NOMES so potenciais objetos


VERBOS so potenciais mtodos

Programao Orientada a Objetos


Flvio de Oliveira Silva

37

ANLISE ORIENTADA A OBJETOS (OOA)


EXEMPLO:

O software SafeHome possibilita que o dono da casa configure o sistema de segurana


quando ele for instalado, monitora todos os sensores ligados ao sistema de segurana e
interage com o dono da casa atravs de um teclado (key pad) e teclas de funo contidas
no painel de controle do SafeHome.
Durante a instalao o painel de controle usado para programar e configurar o sistema.
A cada sensor atribuido um nmero e um tipo, uma senha mestra programada para
armar e desarmar o sistema e nmeros telefnicos so introduzidos para serem discados
quando ocorrer um evento sensor.
Quando um evento sensor sentido pelo software, ele dispara um alarme sonoro ligado ao
sistema. Aps um tempo de espera, que especificado pelo dono da casa durante as
atividades de configurao do sistema, o software disca um nmero telefnico do servio
de monitorao, oferece informaes sobre o local, registrando a natureza do evento que
foi detectado. O nmero ser novamente discado a 20 segundos at que a ligao
telefnica seja completada.
Todas as interaes com o SafeHome so gerenciadas por um subsistema de interao
com o usurio, que l a entrada fornecida atravs do teclado e das chaves de funo,
exibe mensagens de prompting e informaes sobre o status do sistema no mostrador de
cristal lquido (LCD). A interao com o teclado assume a seguinte forma...

Programao Orientada a Objetos


Flvio de Oliveira Silva

38

19

ANLISE
ORIENTADA A OBJETOS (OOA)
EXEMPLO:
O software SafeHome possibilita que o dono da casa configure o sistema de
segurana quando ele for instalado, monitora todos os sensores ligados ao sistema de
segurana e interage com o dono da casa atravs de um teclado e teclas de funo
contidas no painel de controle do SafeHome.
Durante a instalao o painel de controle usado para programar e configurar o
sistema.
A cada sensor atribuido um nmero e um tipo, uma senha mestra programada para
armar e desarmar o sistema e nmeros telefnicos so introduzidos para serem discados
quando ocorrer um evento sensor .
Quando um evento sensor sentido pelo software, ele dispara um alarme sonoro ligado
ao sistema. Aps um tempo de espera , que especificado pelo dono da casa durante as
atividades de configurao do sistema, o software disca um nmero telefnico do servio
de monitorao, oferece informaes sobre o local , registrando a natureza do evento
que foi detectado. O nmero ser novamente discado a 20 segundos at que a ligao
telefnica seja completada.
Todas as interaes com o SafeHome so gerenciadas por um subsistema de interao
com o usurio, que l a entrada fornecida atravs do teclado e das chaves de funo,
exibe mensagens de prompting e informaes sobre o status do sistema no mostrador
de cristal lquido (LCD). A interao com o teclado assume a seguinte forma...

Programao Orientada a Objetos


Flvio de Oliveira Silva

39

ANLISE ORIENTADA A OBJETOS (OOA)


EXEMPLO - IDENTIFICAO DE OBJETOS
dono da casa
sistema de segurana
sensores
teclado
teclas de funo
painel de controle
nmero
Tipo
senha mestra
nmeros telefnicos
evento sensor
alarme sonoro
tempo de espera
Servio de monitorao
informaes sobre o local
natureza do evento
subsistema
entrada
chaves de funo
mensagens
mostrador de cristal lquido

Classificao Geral

Papel ou entidade externa


Coisa
Entidade externa
Entidade externa
Entidade externa
Entidade externa
Atributo do sensor
Atributo do sensor
Coisa
Coisa
Ocorrncia
Entidade externa
Atributo do sistema
Unidade Organizacional ou Ent. Externa
Atributo do sistema
Atributo do sistema
Entidade externa
Entidade externa
Entidade externa
Entidade externa
Entidade externa

Programao Orientada a Objetos


Flvio de Oliveira Silva

40

20

ANLISE ORIENTADA A OBJETOS (OOA)


EXEMPLO - IDENTIFICAO DE OBJETOS
dono da casa
sistema de segurana
sensores
teclado
teclas de funo
painel de controle
nmero
Tipo
senha mestra
nmeros telefnicos
evento sensor
alarme sonoro
tempo de espera
Servio de monitorao
informaes sobre o local
natureza do evento
subsistema
entrada
chaves de funo
mensagens
mostrador de cristal lquido

Caractersticas

Rejeitado: 1 e 2 falham embora 6 se aplique


Aceito: Todas se aplicam
Aceito: Todas se aplicam
Aceito: Todas se aplicam
Aceito: Todas se aplicam
Aceito: Todas se aplicam
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha
Aceito: Todas se aplicam
Aceito: 2, 3, 4, 5 e 6
Rejeitado: 3 falha
Rejeitado: 1 e 2 falham embora 6 se aplique
Rejeitado: 3 falha
Rejeitado: 3 falha
Aceito: Todas se aplicam
Rejeitado: 3 falha
Aceito: Todas se aplicam
Aceito: Todas se aplicam
Aceito: Todas se aplicam

Programao Orientada a Objetos


Flvio de Oliveira Silva

41

ANLISE ORIENTADA A OBJETOS (OOA)


EXEMPLO - IDENTIFICAO DE OBJETOS

Os objetos do painel de controle sero considerados


separadamente.
Os objetos abaixo so o ponto de partida para o
desenvolvimento do sistema
Objetos ainda no possuem atributos e mtodos
PAINEL DE
CONTROLE

SISTEMA

EVENTO
SENSOR

SENSOR

ALARME
SONORO

Programao Orientada a Objetos


Flvio de Oliveira Silva

42

21

ANLISE ORIENTADA A OBJETOS (OOA)


EXEMPLO ESPECIFI CAO DE ATRIBUTOS

Necessrio estudar e analisar a descrio do sistema


Pergunta Importante Quais informaes definem este objeto?

PAINEL DE
CONTROLE

SISTEMA
senha mestra
nmeros telefnicos
tempo espera
informaes local
natureza evento

SENSOR
nmero
tipo

EVENTO
SENSOR

ALARME
SONORO

Programao Orientada a Objetos


Flvio de Oliveira Silva

43

ANLISE ORIENTADA A OBJETOS (OOA)


EXEMPLO DEFINIO DE MTODOS

Necessrio estudar e analisar a descrio do sistema


Verbos so potenciais operaes

Configure
Instalado
Monitora
Ligados
Interage
Instalao
programar
configurar
programada
armar
desarmar
introduzidos
serem discados
ocorrer

sentido
dispara
especificado
configurao
disca
registrando
detectado
Discado
ligao
interaes
gerenciadas
interao
l
fornecida
exibe

SISTEMA
senha mestra
nmeros telefnicos
tempo espera
informaes local
natureza evento
programar()
armar()
desarmar()
monitora()
disparar_alarme()
discar()

Programao Orientada a Objetos


Flvio de Oliveira Silva

44

22

ANLISE ORIENTADA A OBJETOS (OOA)


EXEMPLO
COMUNICAES ENTRE OBJETOS

Representa as comunicaes entre os vrios objetos.


Contm todos os caminhos de mensagens entre os objetos
SISTEMA
senha mestra
nmeros telefnicos
tempo espera
informaes local
natureza evento
programar()
armar()
desarmar()
monitora()
disparar_alarme()
discar()

PAINEL DE
CONTROLE

SENSOR
nmero
tipo

ALARME
SONORO

EVENTO
SENSOR

Programao Orientada a Objetos


Flvio de Oliveira Silva

45

ANLISE ORIENTADA A OBJETOS (OOA)


EXEMPLO PROBLEMA PROPOSTO

O departamento de obras pblicas da cidade de Uberlndia decidiu


desenvolver um sistema de computador para rastreamento e conserto de
buracos de rua (SIRCOB). medida que so registrados buracos de rua, eles
recebem um nmero de identificao e so armazenados de acordo com o
endereo da rua, tamanho (numa escala de 0 a 10), localizao (no meio da
rua; na calada; etc.), bairro (determinado a partir do endereo da rua) e
prioridade de reparo (determinada a partir do tamanho do buraco). Dados de
ordem de trabalho so associados a cada buraco, e eles incluem localizao e
tamanho do buraco, nmero de identificao da equipe de reparos, nmero
de pessoas na equipe, equipamentos designados, horas aplicadas ao reparo,
status do trabalho (em andamento, concludo, no concludo), quantidade de
material de enchimento usado e custo do reparo (computado a partir das
horas trabalhadas, nmero pessoas, material e equipamentos usados).
Finalmente, um arquivo de danos ocorridos criado para guardar informaes
sobre danos registrados devido ao buraco, o qual inclui o nome do cidado,
endereo, nmero telefnico, tipo de dano e a quantia em reais a ser paga. O
SIRCOB um sistema on-line; as consultas devem ser feitas interativamente.
1)Utilize a anlise orientada a objetos (OOA) para modelar o sistema.
2)Criar um diagrama de classes, considerando que todas as classes partem de
uma classe chamada Object.
3)Codificar as classes utilizando a linguagem Java.
Programao Orientada a Objetos
Flvio de Oliveira Silva
46

23

ANLISE ORIENTADA A OBJETOS (OOA)


EXEMPLO SOLUO IDENTIFICANDO OS OBJETOS

O departamento de obras pblicas da cidade de Uberlndia decidiu


desenvolver um sistema de computador para rastreamento e conserto de
buracos de rua (SIRCOB). medida que so registrados buracos de rua, eles
recebem um nmero de identificao e so armazenados de acordo com o
endereo da rua, tamanho (numa escala de 0 a 10), localizao (no meio
da rua; na calada; etc.), bairro (determinado a partir do endereo da rua) e
prioridade de reparo (determinada a partir do tamanho do buraco). Dados
de ordem de trabalho so associados a cada buraco, e eles incluem
localizao e tamanho do buraco, nmero de identificao da equipe
de reparos, nmero de pessoas na equipe, equipamentos designados,
horas aplicadas ao reparo, status do trabalho (em andamento, concludo,
no concludo), quantidade de material de enchimento usado e custo do
reparo (computado a partir das horas trabalhadas, nmero pessoas, material
e equipamentos usados). Finalmente, um arquivo de danos ocorridos
criado para guardar informaes sobre danos registrados devido ao buraco, o
qual inclui o nome do cidado, endereo, nmero telefnico, tipo de
dano e a quantia em reais a ser paga. O SIRCOB um sistema on-line; as
consultas devem ser feitas interativamente.
Programao Orientada a Objetos
Flvio de Oliveira Silva

47

ANLISE ORIENTADA A OBJETOS (OOA)


EXEMPLO SOLUO IDENTIFICANDO OS OBJETOS
NOMES
CLASSI FI CAO
departamento
Unidade Organizacional
sistema
coisa
buracos
coisa
nmero de identificao
coisa
endereo da rua
coisa
tamanho
coisa
localizao
coisa
bairro
bairro
prioridade
coisa
ordem de trabalho
coisa
nmero de identificao da equipe coisa
nmero de pessoas
coisa
equipamentos
coisa
horas
coisa
status
coisa
quantidade
coisa
custo
coisa
arquivo de danos
estrutura
nome do cidado
coisa
Endereo
coisa
nmero telefnico
coisa
tipo de dano
coisa
quantia
coisa

ANLI SE
Rejeitado: 1 e 2 Falham
Aceito: Todas se aplicam
Aceito: Todas se aplicam
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha
Aceito: Todas se Aplicam
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha
Aceito: Todas se aplicam
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha
Rejeitado: 3 falha

Programao Orientada a Objetos


Flvio de Oliveira Silva

48

24

ANLISE ORIENTADA A OBJETOS (OOA)


EXEMPLO SOLUO IDENTIFICANDO OS ATRIBUTOS
CLASSI FI CAO
NOMES
Unidade Organizacional
departamento
sistema
coisa
buracos
coisa
nmero de identificao
coisa
endereo da rua
coisa
tamanho
coisa
localizao
coisa
bairro
coisa
prioridade
coisa
ordem de trabalho
coisa
nmero de identificao da equipe coisa
nmero de pessoas
coisa
equipamentos
coisa
horas
coisa
status
coisa
quantidade
coisa
custo
coisa
arquivo de danos
Estrutura / Coisa
nome do cidado
coisa
Endereo
coisa
nmero telefnico
coisa
tipo de dano
coisa
quantia
coisa

ANLI SE
Rejeitado: 1 e 2 Falham
Aceito: Todas se aplicam
Aceito: Todas se aplicam
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Aceito: Todas se Aplicam
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Aceito: Todas se aplicam
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)
Rejeitado: 3 falha (Atributo)

Programao Orientada a Objetos


Flvio de Oliveira Silva

49

ANLISE ORIENTADA A OBJETOS (OOA)


EXEMPLO SOLUO OBJETOS E ATRIBUTOS

Alm dos objetos mostrados a seguir que so identificados


diretamente a partir da especificao do sistema outros objetos
podem ser necessrios dependendo de como o sistema ser
construdo. (Ex.: Equipe; Trabalhador;
SISTEMA

BURACO
identificador
endereo
tamanho
localizao
bairro
prioridade

ORDEM
TRABALHO
localizao
tamanho
identificador_equipe
nmero_pessoas
equipamentos
horas
status
quantidade material
custo

DANO
cidado
endereo
telefone
tipo
quantia

Programao Orientada a Objetos


Flvio de Oliveira Silva

50

25

ANLISE ORIENTADA A OBJETOS (OOA)


EXEMPLO SOLUO IDENTIFICANDO OS MTODOS
VERBOS

Verbos destacados

registrados
Recebem
Armazenados
Associados
Guardar

Outras operaes sero necessrias para que o sistema


funcione corretamente.

Programao Orientada a Objetos


Flvio de Oliveira Silva

51

PROGRAMAO EM CAMADAS

uma abordagem, onde a aplicao dividida em vrios


nveis. Cada nvel, pode conter vrias classes, porm em
cada um destes nveis existem resposabilidades
especficas.
Um exemplo a arquitetura de 3 camadas, que possui os
seguinte nveis: Interface; Aplicao ou Regras de
Negcios e Banco de dados.
Neste tipo de abordagem as classes de uma camada se
comunicam com as camadas adjacentes.
Uma das vantagens desta abordagem reside no fato de
que as classes de cada camada se especializam em
determinadas tarefas, facilitando assim a abstrao e
criao destas classes.
Alm disso qualquer alterao em uma camada no deve
afetar a outra, considerando que a comunicao entre elas
se mantm fixa.
Programao Orientada a Objetos
Flvio de Oliveira Silva

52

26

PROGRAMAO EM CAMADAS


Uma outra vantagem deste conceito a possibilidade de


utilizar as vrias camadas distribuidas em uma rede, visto
que desde a concepo o software foi dividido em partes
que se intercomunicam.
Apesar de ser um modelo com vrias vantagens,
necessrio um maior esforo a fim conseguir modelar as
vrias camadas necessrias.
O nmero de camadas e o tipo das camadas pode ser
varivel, dependendo do tipo de aplicao.

Programao Orientada a Objetos


Flvio de Oliveira Silva

53

PROGRAMAO EM CAMADAS - Exemplo

Programao Orientada a Objetos


Flvio de Oliveira Silva

54

27

PROJETO DE CONCLUSO DE CURSO










Valor: 40 pontos
Apresentao: Relatrio Escrito e Entrevista de avaliao
O projeto ser entregue em etapas durante o curso. Dessa
forma partes bem definidas sero entregues em diferentes
datas.
O trabalho ser feito em grupo e o mesmo dever possuir
entre 2 e 3 pessoas.
Cada participante dever ficar responsvel por
implementar classes especficas, porm ser necessrio o
entendimento da soluo como um todo.
Inicialmente dever ser feita uma proposta de trabalho que
ir conter uma descrio de um software a ser
desenvolvido.
O projeto dever utilizar interface grfica (Applet ou
Windows)

Programao Orientada a Objetos


Flvio de Oliveira Silva

55

PROJETO DE CONCLUSO DE CURSO

CRITRIOS DE AVALIAO
 COMPLEXIDADE - A complexidade da proposta ser um
item que ser analisado. As propostas que tiverem uma
maior complexidade, sero melhor avaliadas.
 FINALIZAO DA PROPOSTA Aps um detalhamento
da proposta sero especificados quais os requisitos
necessrios ao software. Ao final ser feita uma
verificao se todos estes requisitos foram
implementados e alm disso sero feitos testes para
verificar o funcionamento do software como um todo.
 RESPEITO AO CRONOGRAMA - Neste item, ser
verificado se o grupo entregou todas as etapas nas datas
solicitadas.
Programao Orientada a Objetos
Flvio de Oliveira Silva

56

28

PROJETO DE CONCLUSO DE CURSO




CRITRIOS DE AVALIAO (continuao)


 PROGRAMAO EM CAMADAS - Ser avaliado se a
soluo proposta pelo grupo utiliza da diviso do
problema em camadas, onde cada camada possui
responsabilidades especficas.
 ENTREVISTA INDIVIDUAL - Cada participante dever
apresentar e explicar os conceitos utilizados na parte que
ficou sob sua responsabilidade. Os participantes sero
arguidos e ser verificado o conhecimento adquirido; o
entendimento das vrias tecnologias; o conhecimento da
linguagem e seus recursos. Este item ser analizado e
pontuado individualmente.
 RELATRIO
Programao Orientada a Objetos
Flvio de Oliveira Silva

57

PROJETO DE CONCLUSO DE CURSO




RELATRIO
A pontuao do neste item ser compartilhada por todos
os componentes do grupo. Ser verificado se o relatrio
contm todas as sees necessrias conforme indicado
abaixo:
INTRODUO

DESENVOLVIMENTO
 Especificao de Requisitos
 Diagrama de Classes
 Descrio da soluo
 Tecnologias Utilizadas


CONCLUSO

BIBLIOGRAFIA

O relatrio dever ser criado a medida que o projeto vai


sendo implementado e as sees acima representam o seu
conteudo final.
Programao Orientada a Objetos
Flvio de Oliveira Silva

58

29

PROJETO DE CONCLUSO DE CURSO




Primeira Etapa:Proposta de trabalho e descrio do


software a ser desenvolvido. Dever ser feita uma
pesquisa sobre assuntos possveis; o grupo ter liberdade
para fazer suas propostas. As mesmas sero analisadas e
podero ser ou no aprovadas.
Sugestes de assuntos
Banco de dados (SQL - JDBC)

Pacote grfico (Desenhos geomtricos em 2D)


Criptografia

Multimdia: Manipulao de imagens; Sons; Animao; Jogos; etc.


Comunicao atravs da Internet (Sockets)
Compactao de dados

Programao concorrente (Multithreading)

Outras sugestes
 http:/ / java.sun.com/ j2se/ 1.4.1/ docs/ api
 Livro Deitel; outras publicaes;

Data de Entrega: 13/ 05/ 2003

Programao Orientada a Objetos


Flvio de Oliveira Silva

59

ABSTRACO DE DADOS

Abstrao o processo de identificar as qualidades


ou propriedades importantes do problema que est
sendo modelado. Atravs de um modelo abstrato,
pode-se concentrar nas caractersticas relevantes e
ignorar as irrelevantes.
Abstrao fruto do raciocnio.
Uma linguagem de programao uma abstrao do
funcionamento do computador
Importante conceito dentro da POO
Exemplos: Objeto representando uma pessoa; tipos
de dados bsicos de uma linguagem int; double;
char; etc.
Programao Orientada a Objetos
Flvio de Oliveira Silva

60

30

ESTRUTURA ABSTRATA DE DADOS





Estrutura de dados abstrata, contm dados e


mtodos
Dados esto ocultos dentro da estrutura e podem ser
acessados somente por meio dos mtodos
(Encapsulamento)
Nome da estrutura e sua interface so conhecidos
mas no a sua implementao.
A sua implementao encontra-se oculta.
Mtodos que permanecem inalterados, mesmo que a
implementao dos mesmos venha a ser alterada.




Programao Orientada a Objetos


Flvio de Oliveira Silva

61

TIPOS ABSTRATOS DE DADOS (TAD)

ABSTRACT DATA TYPES (ADT)


 TAD contm a definio da estrutura de dados abstrata
 TAD um conjunto de estruturas de dados abstratas
 Uma particular estrutura de dados abstrata de um TAD
denominada de uma instncia do TAD
 TAD deve possuir
Nome

Dados

Mtodos
 Construtores - constri e inicializa uma instncia do TAD
 Modificadores Modifica estado (dados) do TAD
 Acessores Retorna estado do TAD, sem modificar seus dados
 Destrutores Destri uma instncia do TAD

A criao de uma classe a definio de um TAD


Programao Orientada a Objetos
Flvio de Oliveira Silva

62

31

TIPOS ABSTRATOS DE DADOS (TAD)


ABSTRACT DATA TYPES (ADT)
 TDA deve conter as assinaturas da operaes
 Assinatura contm as seguintes informaes:
 Nome

 Conjunto de entrada (tipos, nmero e ordem dos parmetros)




 Conjunto de sada (o tipo do valor de retorno)

Cada mtodo deve conter

 PR-CONDIES Condies que devero ser aplicadas aos


dados antes da utilizao do mtodo

 PS-CONDIES Condies que indicam a modificao que




foi efetuada sobre os dados

Os tipos utilizados no TDA deve ser tipos vlidos e


conhecidos.

Programao Orientada a Objetos


Flvio de Oliveira Silva

63

TIPOS ABSTRATOS DE DADOS - Exemplo


TDA que repesenta um crculo

Nome

Dados

Circulo
raio
xCentro
yCentro

: nmero inteiro no negativo


: nmero inteiro que indica a coordenada x do ponto (x,y)
: nmero inteiro que indica a coordenada y do ponto (x,y)

Mtodos
Construtor
Valores I niciais: O raio do crculo
Processo:
Cria um crculo de raio informado e origem no ponto (0,0)

Area
Entrada:
Pr-condies:
Processo:
Sada:
Ps-condies:

Nenhuma
Nenhuma
Calcula a rea do crculo
A rea do crculo
Nenhuma

Escala
Entrada:
Pr-condies:
Processo:
Sada:
Ps-condies:

Um nmero inteiro indicando o fator de escala


O fator de escala deve ser maior que zero
Multiplica o raio pelo fator de escala e redesenha o crculo
Nehuma
O valor do raio ser o resultado da mltiplicao raio pelo fator de escala

Programao Orientada a Objetos


Flvio de Oliveira Silva

64

32

A TECNOLOGIA JAVA


Tecnologia recente. Formalmente lanada em


1995 pela SUN, sendo neste ano, incorporada
ao Netscape Navigator
Sua concepo est voltada para a internet.
Sintaxe semelhante linguagem C+ +
amplamente conhecida e utilizada
No possui recursos existentes em C+ + como:
Ponteiros; Arquivos de Cabealho; Struct;
Union; Sobrecarga de Operadores; etc.
Possui recursos importantes: Multithreading;
Mltimidia; Componentes de Interface grfica;
processamento distribudo




Programao Orientada a Objetos


Flvio de Oliveira Silva

65

A TECNOLOGIA JAVA

Puramente Orientada a objetos: Modularidade;


Reusabilidade de Cdigo; Tendncia Atual;
Portabilidade: O cdigo de um programa java,
chamado bytecodes, pode ser executado em
qualquer plataforma
Interpretada: Os bytecodes so executados
atravs da mquina virtual java (Java Virtual
Machine). Apesar de interpretada a linguagem
tem peformance suficiente (Cerca de 10 vezes
mais lenta que C)
Dinmica: Qualquer classe Java pode ser
carregada e instanciada em um interpretador
Java a qualquer momento, mesmo quando ele
j est rodando.
Programao Orientada a Objetos
Flvio de Oliveira Silva

66

33

A TECNOLOGIA JAVA


Distribuda: Proporciona considervel suporte


redes de alto e de baixo nvel . Permite a
invocao remota de mtodos (RMI) e o
carregamento de componentes atravs da
rede, por exemplo.
Tipagem forte (strong typing): Atravs de uma
abrangente checagem em tempo de
compilao, problemas em potencial no
casamento de tipos, so evitados, tornando o
cdigo mais confivel.
Robusta: Tratamento de excees e
gerenciamento automtico de memria
permitem a criao de programas robutos

Programao Orientada a Objetos


Flvio de Oliveira Silva

67

A TECNOLOGIA JAVA

APPLETS: Programas que podem ser inseridos


em uma pgina Web. O applet executado
automaticamente quando a pgina HTML que o
contm aberta em um browser habilitado
para Java. Este recurso unicamente oferecido
por java.
Sistemas Embutidos: A plataforma Java est
disponvel e pode ser executada em
equipamentos como: Telefones Celulares;
Pagers; Eletrodomsticos; Automveis; etc. Isto
a torna uma importante linguagem para o
desenvolvimento de sistemas embutidos
(embedded systems)
Programao Orientada a Objetos
Flvio de Oliveira Silva

68

34

JAVA
SDK


Possui os recursos necessrios para o


desenvolvimento de aplicaes em java
 O J2SE SDK (Java 2 Standard Edition Software
Development Kit) consiste na base para o
desenvolvimento utilizando a tecnologia Java

Programao Orientada a Objetos


Flvio de Oliveira Silva

69

JAVA
SDK


Verso Atual: Java(TM) 2 SDK, Standard Edition


1.4.1_02
 A verso mais atualizaada pode ser obtida no site:
http:/ / java.sun.com/ j2se/
 Software Development Kit (SDK): Constitudo de
duas partes bsicas:
 Java Run-time Edition(JRE): Conjunto mnimo
para a execuo de aplicaes escritas em java.
Contm Mquina Virtual Java (JVM); Classes
bsicas e arquivos de suporte.
 Ferramentas bsicas para a criao de
aplicaes java.
Programao Orientada a Objetos
Flvio de Oliveira Silva

70

35

JAVA SDK FERRAMENTAS BSICAS




As ferramentas bsicas abaixo, so instaladas


juntamente com o SDK
 Estas ferramentas podem ser acessadas atravs
da linha de comando do console do S.O.
FERRAM ENTA

DESCRIO

javac

Compilador para a linguagem Java


Utilizado para a executar uma aplicao
Java
Utilitrio utilizado para documentao das
classes
Permite a execuo e debug de Applets
sem a utilizao de um browser
Cria um arquivo .jar a partir de vrios
arquivos .class
Debugger da linguagem Java

java
javadoc
appletviewer
jar
jdb

Programao Orientada a Objetos


Flvio de Oliveira Silva

71

HELLO
JAVA WORLD!


A cdigo abaixo mostra uma aplicao bsica que pode ser


executada na console do S.O
/**
* Title:
HELLO JAVA WORLD
* Description: Aplicao bsica(console S.O.)
* Company:
AUTOENGE
* @author
FLAVIO SILVA
*/
public class HelloJavaWorld {
public static void main(String[] args) {
System.out.println("Hello Java World!");
}
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

72

36

HELLO
JAVA WORLD!


javac Compila o cdigo. Este processo cria o


arquivo .class que poder ser executado
c:\ > javac HelloJavaWorld.java
 java Executa o cdigo compilando
c:\ > java HelloJavaWorld
 jar Cria um arquivo compactado ( .jar) que pode
conter classes(* .class), imagens e sons.
 O arquivo mffile.mft, chamado manifest file deve
conter, pelo menos, o seguinte texto:
< BeginOfFile>
Main-Class: HelloJavaWorld< NewLine>
< EndOfFile>
c:\ > jar - cmf mffile.mft HelloJavaWorld.jar * .class
Programao Orientada a Objetos
Flvio de Oliveira Silva

73

HELLO JAVA WORLD!




Executando um arquivo .jar

c:\ > java jar HelloJavaWorld.jar




O processo de criao de um cdigo em java


envolve as seguintes etapas:
Fonte (Classe.java)

Compilao
(javac)

ByteCodes (Classe.class)

Compactao
(jar)

Compactado (Classe.jar)

Execuo
(java)

Programao Orientada a Objetos


Flvio de Oliveira Silva

74

37

LINGUAGEM JAVA - COMENTRIOS




O cdigo java pode conter comentrios da seguinte


forma:
/**
* Todo o texto ignorado
*
*/
//Apenas o trecho aps as barras
//ignorado!

Programao Orientada a Objetos


Flvio de Oliveira Silva

75

LINGUAGEM JAVA - IDENTIFICADORES

Um identificador um nome que identifica


unicamente uma varivel, mtodo ou classe. As
seguintes restries se aplicam na definio de
identificadores:
 Todos os identificadores devem comear por uma letra,

um underscore (_) ou o sinal de cifro ($).

 Um identificador pode incluir, mas no comear por, um

nmero

 No podem existir espaos em branco no nome de um

identificador

 Java, como a linguagem C, faz diferena com relao s

letras maisculas e minsculas no nome de um


identificador
 Palavras reservadas da linguagem Java no podem
ser usadas como identificadores
Programao Orientada a Objetos
Flvio de Oliveira Silva

76

38

LINGUAGEM JAVA - LITERAIS




Um valor constante em Java criado usando-se


uma representao literal desse valor.
Exemplos:
500

// Um valor inteiro.

3.14 // Valor de ponto flutuante.


Y// Constante de caractere.
"String de teste" //Constante de string.

Programao Orientada a Objetos


Flvio de Oliveira Silva

77

PALAVRAS
RESERVADAS


A tabela abaixo mostra as palavras reservadas


utilizadas pela linguagem java

abstract
boolean
break
byte
case
catch
char
class
const
continue

default
do
double
else
extends
final
finally
float
for
goto

if
implements
import
instanceof
int
interface
long
native
new
package

private
protected
public
return
short
static
strictfp
super
switch
synchronized

this
throw
throws
transient
try
void
volatile
while

As palavras: true false null; tambm so


reservadas e representam valores definidos por
Java
Programao Orientada a Objetos
Flvio de Oliveira Silva

78

39

LINGUAGEM JAVA TIPOS BSICOS




Tipos bsicos utilizados por java

TAMANHO
FAIXA DE VALORES
(bits)
VALOR MNIMO
VALOR MXIMO
inteiro
8
-128
127
byte
inteiro
16
-32768
32767
short
inteiro
32
-2147483648
2147483647
int
inteiro
64
-9223372036854775808 9223372036854775807
long
ponto flutuante, preciso simples
32
3,4e-038
3,4e+038
float
ponto flutuante, preciso dupla
64
1.7e-308
1.7e-308
double
caracter unicode
16
0
65535
char
valor lgico (falso/verdadeiro)
false
true
boolean
TIPO

DESCRIO

Qualquer identificador em Java deve possuir um


tipo (strong typing)
 Os tipos bsicos representam valores individuais e
no objetos. O motivo para isto a eficincia.
Programao Orientada a Objetos
Flvio de Oliveira Silva

79

LINGUAGEM JAVA TIPOS BSICOS




Devido sua portabilidade todos os tipos de dados


tm uma faixa de valores estritamente definida. Por
exemplo, um int sempre de 32 bits, independente
da plataforma de execuo.

Programao Orientada a Objetos


Flvio de Oliveira Silva

80

40

DECLARANDO VARIVEIS


A varivel a unidade bsica de armazenamento de


um programa Java.
 Uma varivel definida pela combinao de um
identificador, um tipo e um inicializador opcional.
tipo nomeVariavel [= valorVariavel];
 A inicializao acima somente possvel para tipos
bsicos
 Todas as variveis tm um escopo, que define sua
visibilidade e sua durao
int iA, iB, iC;
int iD = 3, iE, iF = 5;// inicializando
byte btZ = 22;// Declara e inicializa
double dPi = 3.14159; //ponto flutuante
char chX = a; //caracter
Programao Orientada a Objetos
Flvio de Oliveira Silva

81

CRIANDO OBJETOS


Para criar uma instncia de um objeto utiliza-se a


funo alocadora de objetos new .
Exemplos:

Pessoa p;
//Declara uma varavel
p = new Pessoa(); //Aloca o objeto
Pessoa p2 = new Pessoa(); //Declara e Aloca

Na declarao de p, aps a execuo da primeira


linha a varivel contm o valor null. A declarao
cria uma referncia para um objeto
 Somente aps a alocao que o objeto poder
ser utilizado. Caso contrrio ocorrer um erro de
compilao.
Programao Orientada a Objetos
Flvio de Oliveira Silva

82

41

OPERADORES


ARITMTICOS "+ "


int iA = 13;
int iV = 7;
float f1 = 13;
iA+iV //retorna
iA-iV //retorna
iA*iV //retorna
iA/iV //retorna
f1/iV //retorna

"-" "* " "/

20
6
91
1
1.8571428

Programao Orientada a Objetos


Flvio de Oliveira Silva

83

OPERADORES


LGICOS "&&" (AND) "| | " (OR) "!" (NOT)


boolean bX, boolean bY;
bX

bY

bX && bY

bX || bY

true
true
false
false

true
false
true
false

true
false
false
false

true
true
true
false

Programao Orientada a Objetos


Flvio de Oliveira Silva

!bX

false
true

84

42

OPERADORES


RELACIONAIS
IGUALDADE
DESIGUALDADE
MENOR QUE

==
!=
<

MENOR OU IGUAL QUE


MENOR OU IGUAL QUE
MAIOR OU IGUAL QUE

<=
<=
>=

Exemplos:
int iH = 4, iJ = 4, iK = 6;
iH == iJ
//Retorna true
iH == iK
//Retorna false
iK == iK
//Retorna true
iH < iK
//Retorna true
iH < iJ
//Retorna false
iH <= iJ
//Retorna true
Programao Orientada a Objetos
Flvio de Oliveira Silva

85

OPERADORES


RELACIONAIS (cont.)
Exemplos:
Person homem = new Person();
Person mulher = new Person();
homem == mulher //Retorna false. Mesmo
//valor porm diferentes objetos
homem == homem //Retorna true

Programao Orientada a Objetos


Flvio de Oliveira Silva

86

43

OPERADORES


OPERADORES BINRIOS

"AND" BINRIO
"OR" EXCLUSIVO BINRIO

&
^

"OR" INCLSUIVO BINRIO


COMPLEMENTO BINRIO

|
~

Exemplos:

int c = 4;
int d = 6;
int bytRes;
bytRes = c & d;
bytRes = c ^ d;
bytRes = c | d;
bytRes = ~c;
bytRes = d >> 2;
bytRes = d << 2;

//binrio
//binrio
//retorna
//retorna
//retorna
//retorna
//retorna
//retorna

00000100
00000110
4
2
6
-5
1
24

Programao Orientada a Objetos


Flvio de Oliveira Silva

00000100
00000010
00000110
11111011
00000001
00011000
87

OPERADORES


OPERADOR CONDICIONAL( ? : )
Exemplo:
a?b : c
/ / retorna o valor b se a true,
/ / caso contrrio retorna o valor c

Programao Orientada a Objetos


Flvio de Oliveira Silva

88

44

OPERADORES


Associatividade da esquerda para direita


Regras de Precedncia


[] . e++ e--e !e ~e ++e --e


new
* / %
+ == !=
&
^
|
&&
||
?:
/= %= >>= <<=

= += *=
&= ^=
Exemplos:
a/b*c
interpretado como (a/b)*c
a+b*c/d interpretado como a+((b*c)/d)
Programao Orientada a Objetos
Flvio de Oliveira Silva

!=

89

OUTROS IMPORTANTES OPERADORES




ATRIBUIO DE VALORES(Operador = )

Varivel (v e v1) esquerda ir conter o valor E,


especificado direita.
v = E;
v = v1 = E; equivale a v = (v1 = E); / / Evitar!!!

ATRIBUIO COM OPERADOR (op= )


Sendo op um operador
v op= f;
equivale a
Ex: a + = 2;
equivale a

v = v op f;
a = a + 2;

ASSESSANDO UM MTODO DE UM OBJETO


Utiliza-se o operador ponto . Ex.:
Pessoa p = new Pessoa();
p.getName();
Programao Orientada a Objetos
Flvio de Oliveira Silva

90

45

LINGUAGEM JAVA TIPO STRING




Classe que contm a representao de uma de


uma sequncia de caracteres do tipo "ABC".
 Na linguagem JAVA o tipo String um objeto
 Existem vrios mtodos e operadores j definidos
para esta classe.

Exemplo:

String s1 = new String("FLAVIO");


String s2 = new String("SILVA");
s1 = s1 + s2; //concatenao de strings
s1.length();
//retorna o tamanho da string;
s1.trim();
//remove espaos em branco
//inicio e fim
Programao Orientada a Objetos
Flvio de Oliveira Silva

91

BLOCOS DE CDIGO


Um bloco iniciado pelo caracter { e finalizado


pelo caracter }
 As instrues (mtodos; declaraes; atribuies)
contidas em um bloco so tratadas como uma
nica instruo.
Exemplo:
{
a = a + 2;
b = circle.area();
c = a + b;
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

92

46

BLOCOS DE CDIGO


DECLARAES LOCAIS Dentro de um bloco


possvel fazer declaraes de objetos e variveis
que sero vlidas somente dentro deste bloco
int a;
Circle circle = new Circle(3);
a = 2;
{
//Declarao local de a vlida somente
//dentro do bloco
double a;
a = 3.14 + circle.area();
}
//Imprime o valor de a neste caso ser 2
System.out.println(O valor de a : " + a)
Programao Orientada a Objetos
Flvio de Oliveira Silva

93

ASSINATURA BSICA DE UM MTODO

A assinatura de um mtodo criada da seguite forma:


[ nvelAcesso] tRetorno nomeMetodo( T0 P0, ...,Tn Pn)

nvelAcesso - private; public ou


Protected
tRetorno - Tipo de retorno. Se no houver nenhum
retorno, deve ser utilizado void. O tipo pode ser
bsico ou ento qualquer objeto da linguagem
T0,...Tn Tipos dos parmetros utilizados
P0,...,Pn Nome dos parmetros
Programao Orientada a Objetos
Flvio de Oliveira Silva

94

47

NVEIS DE ACESSO


Os nveis de acesso a atributos, mtodos e


classes so definidos da seguinte forma:
 public: Mtodo ou atributo visvel a todas as
classes (pblico)
 protected: Mtodo ou atributo visvel nas
subclasses (protegido)
 private: Mtodo ou atributo visvel somente
na classe onde utilizado (privado)

Programao Orientada a Objetos


Flvio de Oliveira Silva

95

SOBRECARREGAMENTO (Overloading)


Consiste em possuir mais de um mtodo com o


mesmo nome, porm com diferentes
parmetros (nmero, ordem e tipos)
 Este recurso utilizado para mtodos que
realizam tarefas semelhantes porm sobre tipos
de dados diferentes
 Normalmente este recurso tambm utilizado
no construtor da classe
 O sobrecarregamento facilita a reutilizao de
cdigo
Exemplo: Circle c = new Circle();
c.move(x,y);/ / Recebe a coordenada x e y
c.move(p); / / Recebe o objeto ponto
Programao Orientada a Objetos
Flvio de Oliveira Silva

96

48

CRIANDO
UMA CLASSE EM JAVA


Definio classe - Necessrio keyword class


Corpo da Classe Delimitado por { e po r }
A classe contm dados (atributos ou variveis
membro) e mtodos(procedimentos)
Dados (Variveis Membro)
 Dados que representam o objeto; Podem ser
acessados diretamente dentro da definio da
classe, semelhante a uma varivel global
MTODOS





 CONSTRUTORES
 DESTRUTORES

 MODIFICADORES
 ACESSORES

 OUTROS MTODOS

Programao Orientada a Objetos


Flvio de Oliveira Silva

97

CRIANDO UMA CLASSE EM JAVA

MTODOS CONSTRUTORES

 Mtodo especial. Deve possuir o mesmo nome da

classe

 Inicializa os dados (variveis membro) do objeto


 Garante que objetos iniciem em um estado

consistente

 Construtores normalmente so sobrecarregados


 Construtores no podem retornar um valor

 O construtor que no recebe nenhum parmetro

conhecido como construtor default

Programao Orientada a Objetos


Flvio de Oliveira Silva

98

49

CRIANDO UMA CLASSE EM JAVA

MTODOS DESTRUTORES


Devolve os recursos para o sistema


 No tem parmetros, no retorna valor. Sua
assinatura : protected void finalize( )
 O mtodo finalize somente chamado
imediatamente antes da coleta de lixo (garbage
colletion). Ele no chamado quando um
objeto sai de escopo, por exemplo.
 Normalmente no necessrio a criao deste
mtodo pois o mesmo herdado da classe
Object
Programao Orientada a Objetos
Flvio de Oliveira Silva

99

CRIANDO UMA CLASSE EM JAVA

MTODOS MODI FICADORES (setXXX)




Permitem a modificao dos dados (variveis


membro) do objeto
 Devem ser do tipo public, pois so
acessados de forma externa ao objeto
 Normalmente comeam com o set a fim de
facilitar o entendimento de seu objetivo.

Programao Orientada a Objetos


Flvio de Oliveira Silva

100

50

CRIANDO UMA CLASSE EM JAVA

MTODOS ACESSORES (getXXX)




Permitem a recuperao dos dados (variveis


membro) do objeto
 Devem ser do tipo public, pois so
acessados de forma externa ao objeto
 Normalmente comeam com o get a fim de
facilitar o entendimento de seu objetivo.

Programao Orientada a Objetos


Flvio de Oliveira Silva

101

CRIANDO UMA CLASSE EM JAVA


OUTROS MTODOS

 Executam tarefas que so de responsabilidade do objeto e

que iro representar o comportamento do mesmo.

 Estes mtodos podem ser pblicos (public), protegidos

(protected) ou privados (private), conforme sua


utilizao
 Para que o mtodo seja acessado externamente o mesmo
de ser do tipo pblico (public)
 Caso o mtodo seja apenas auxiliar classe sem uma
ligao direta com o comportamento do objeto o mesmo
deve ser do tipo privado (private). Normalmente este
mtodos so utilizados por um outro mtodo pblico

Programao Orientada a Objetos


Flvio de Oliveira Silva

102

51

ESTRUTURA BSICA DE UMA CLASSE


[nvelAcesso] class NomeClasse {
[nvelAcesso] tRetorno variavel_membro1;
[nvelAcesso] tRetorno variavel_membroN;
/ / Construtores
[nvelAcesso] NomeClasse(T0 P0, ...., Tn Pn);
/ / Destrutor
protected void finalize();
/ / Modificadores
[nvelAcesso] tRetorno setXXX(T0 P0, ...., Tn Pn);
/ / Acessores
[nvelAcesso] tRetorno getXXX (T0 P0, ...., Tn Pn);
/ / Outros mtodos (privados; protegidos e pblicos)
[nvelAcesso] tRetorno Metodo(T0 P0, ...., Tn Pn)
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

103

CRIANDO UMA CLASSE - EXEMPLO

public class Person{


private String name;
//Construtor
public Person(){ name = ""; }
//Get Metodos
public String getName() { return name;}
//set Metodos
public void setName(String s){ name = s; }
//Destrutor
protected void finalize(){
name = "";
}
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

104

52

CRIANDO
UMA CLASSE Exemplo 2


Neste caso ser utilizado o Sobrecarregamento


(Overloading) no construtor da classe e tambm
no mtodo setRaio.
public class Circle {
/ /Variveis membro ou atributos
protected double dX;
protected double dY;
protected double dRaio;
/ /continua a definio

Programao Orientada a Objetos


Flvio de Oliveira Silva

105

CRIANDO UMA CLASSE Exemplo 2

/ / continuando a classe Circle


/ / Mtodos Construtores
public Circle(double dCx, double dCy, double dR){
System.out.println(Novo Crculo Construtor 2");
dX = dCx;
dY = dCy;
dRaio = dR;
}
protected Circle(double dR){
System.out.println(Novo Crculo Construtor 3");
dX = dY = 0;
dRaio = dR;
}
/ / continua... Programao Orientada a Objetos
Flvio de Oliveira Silva

106

53

CRIANDO UMA CLASSE Exemplo 2

/ / continuando a classe Circle


/ / Mtodos Modificadores
public void setCenter(double dCx, double dCy){
dX = dCx;
dY = dCy;
}
public void setRaio(double dR){
dRaio = dR;
}
public void setRaio(int iR){
dRaio = iR;
}
/ / continua...
Programao Orientada a Objetos
Flvio de Oliveira Silva

107

CRIANDO UMA CLASSE Exemplo 2


/ / continuando a classe Circle
/ / Mtodos Acessores
public double getRaio(){
return dRaio;
}
public double getXCenter(){
return dX;
}
public double getYCenter(){
return dX;
}
/ / continua...

Programao Orientada a Objetos


Flvio de Oliveira Silva

108

54

CRIANDO UMA CLASSE Exemplo 2

/ / continuando a classe Circle


/ / Outros mtodos
public double perimeter(){
double perimetro = 2 * dRaio * Math.PI ;
System.out.println("Perimetro: " + perimetro);
return perimetro;
}
public double area(){
double dArea = Math.PI* Math.pow(dRaio,2);
System.out.println("Area: " + dArea);
return dArea;
}

}
Programao Orientada a Objetos
Flvio de Oliveira Silva

109

CRIANDO UMA CLASSE Exemplo 2

public class Circle {


/ / Variveis membro ou atributos
/ / Mtodos Construtores
public Circle(double dCx, double dCy, double dR){ ...}
public Circle(double dR){ ...}
/ / Mtodos Modificadores
public void setCenter(double dCx, double dCy){ ...}
public void setRaio(double dR){ ...}
public void setRaio(int iR){ ...}
/ / Mtodos Acessores
public double getRaio(){ }
public double getXCenter(){ ...}
public double getYCenter(){ ...}
/ / Outros mtodos
public double perimeter(){ ...}
public double area(){ ...}
Programao Orientada a Objetos
}
Flvio de Oliveira Silva

110

55

CRIANDO UMA CLASSE Exemplo 2


/ / Exemplo da Utilizao de Sobrecarga
...
Circle c1 = new Circle(3);
Circle c2 = new Circle(3,5.4,8);
double dP, dA;
double dRaio = 7.5;
int iRaio = 5;
/ / Utilizando sobrecarga no mtodo setRaio
c1.setRaio(dRaio);
c2.setRaio(iRaio);
dP = c1.perimeter();
dA = c2.area();
Programao Orientada a Objetos
Flvio de Oliveira Silva

111

CRIANDO UMA CLASSE - Exemplo 3


class Person{
protected String name;
/ / Evite criar variveis membro como public!!!!
public String global; / / Perde o encapsulamento de dados
/ / Construtor
public Person(){ name = ""; }
/ / Get Metodos
String getName(){ return name; }
String getGlobal(){ return global; }
/ / set Metodos
void setName(String s){ name = s} ;
}
Programao Orientada a Objetos
}
Flvio de Oliveira Silva
112

56

CRIANDO UMA CLASSE - Exemplo 3


/ / Exemplo de Utilizao do objeto
...
Person p = new Person();
int i;
String s, s2;
p.setName("Flavio");
/ / EVI TAR!!!! A linha abaixo mostra a perda do
/ / encapsulamento de dados
p.global = Silva";
s = p.getName();
s2 = p.getGlobal();
Programao Orientada a Objetos
Flvio de Oliveira Silva

113

ESTRUTURAS
DE CONTROLE


ESTRUTURA DE SELEO if / if-else


 Uma instruo (ou bloco de instrues)
somente ser executada caso uma condio
(expresso condicional E) resultar em
verdadeiro (true)
if (E)
S;

Programao Orientada a Objetos


Flvio de Oliveira Silva

114

57

ESTRUTURAS DE CONTROLE

ESTRUTURA DE SELEO if / if-else


 Uma variao da estrutura acima a
estrutura if-else. Onde uma escolha feita.
Se a expresso condicional (E) for verdadeira
(true) ento um o bloco de instrues logo
aps a expresso ser executado. Caso
contrrio, sendo a expresso falsa (false)
ento o bloco que se encontra aps a palavra
else ser executado.
if (E)
S;
else
R;
Programao Orientada a Objetos
Flvio de Oliveira Silva

115

ESTRUTURAS DE CONTROLE

ESTRUTURA DE SELEO if / if-else


 EXEMPLO
if (Saldo >= 0)
System.out.println(Ok!);
else
System.out.println(Depositar!);

Programao Orientada a Objetos


Flvio de Oliveira Silva

116

58

ESTRUTURAS DE CONTROLE

ESTRUTURA DE SELEO MLTIPLA sw itch


 A estrutura if/ else permite a seleo no
mximo entre 2 blocos diferentes.
 Caso seja necessrio um nmero maior de
opes ento deve ser utilizado a estrutura
sw itch. Exemplo:
switch (E) {
case c1 : S1;
break;
case c2 : S2;
break;
...
default : Sd;
Programao Orientada a Objetos
Flvio de Oliveira Silva

117

ESTRUTURAS
DE CONTROLE


Inicialmente a expresso E avaliada. Caso a


expresso E, resulte na constante c1, o bloco de
instrues S1 ser executado, at que a palavra
break seja encontrada. Neste caso o prxima
instruo aps o switch ser executada. Da
mesma forma caso E, resulte na constante c2 o
bloco S2 ser executado. E assim, sucessivamente.
 Caso a expresso E no resulte em nenhum valor
constante presente no swith (c1, c2, ...) ento o
bloco padro (default) Sd ser executado
 O bloco default (Sd) opcional, no sendo
necessrio sua presena.
 Os valores constantes utilizados no sw itch podem
ser do tipo btye; short; int, long e char
Programao Orientada a Objetos
Flvio de Oliveira Silva

118

59

ESTRUTURAS
DE CONTROLE
! Exemplo:
int a = 2;
switch (a){
case 1 : {
System.out.println("A igual a 1");
break;
}
case 2 : {
System.out.println("A igual a 2");
break;
}
case 3 : {
System.out.println("A igual a 3");
break;
}
default : {
System.out.println("A diferente de 1,2e3");
}
Programao Orientada a Objetos
}
Flvio de Oliveira Silva
119

ESTRUTURAS DE CONTROLE

ESTRUTURA DE REPETIO w hile


 Esta estrutura indica que a instruo ou bloco
de instrues (S) que se encontra logo aps
uma expresso condicional (E) ser
executado ENQUANTO tal expresso por
verdadeira (true).
while (E)
S;
 Quando a ltima instruo do bloco
executada a expresso (E) ser novamente
executada e caso continue verdadeira o bloco
ser executado mais uma vez, e assim,
sucessivamente.
Programao Orientada a Objetos
Flvio de Oliveira Silva

120

60

ESTRUTURAS DE CONTROLE

ESTRUTURA DE REPETIO w hile


 A fim de evitar que a execuo do bloco de
instrues (S) prossiga indefinidamente
necessrio que dentro deste bloco o valor da
expresso condicional seja em algum
momento alterado para falso (false).
 No caso da instruo while, sempre feito
um teste antes da execuo do bloco. Dessa
forma para que o bloco seja executado, pelo
menos uma vez, o resultado da expresso
inicialmente seja verdadeiro.
 Ao terminar a repetio a primeira instruo
aps a instruo while executada.
Programao Orientada a Objetos
Flvio de Oliveira Silva

121

ESTRUTURAS DE CONTROLE
!

EXEMPLO ESTRUTURA DE REPETIO w hile


int a = 0;
//Se a instruo abaixo fosse executada
//no permitiria a repetio
//a = 10

while (a < 10){


System.out.println(Valor de A: + a);
System.out.println(A ainda menor que
10!);
//Sem a instruo abaixo a repetio nunca
terminaria
a++;
}
//Primeira instruo a ser executada aps o while

System.out.println(Agora, a igual a 10!);


Programao Orientada a Objetos
Flvio de Oliveira Silva

122

61

ESTRUTURAS DE CONTROLE

ESTRUTURA DE REPETIO do / w hile


 Esta estrutura semelhante ao while, porm
sempre o bloco de instrues (S) ser
executado pelo menos uma vez. Em seguida a
expresso condicional (E) avaliada e o bloco
de instrues ser executada ENQUANTO seu
valor for verdadeiro.
do {
S;
} while (E);


Caso a expresso seja verdadeira a primeira


instruo do bloco ser executada novamente
Programao Orientada a Objetos
Flvio de Oliveira Silva

123

ESTRUTURAS DE CONTROLE

ESTRUTURA DE REPETIO for


 Neste caso a repetio e controlada por um
contador da seguinte forma:
For (C; E; I)
S;


O bloco de instrues S, ser executado


enquanto a expresso condicional E, for
verdadeira. O contador inicializado pela
expresso C e a expresso I responsvel por
alterar o valor do contador.

Programao Orientada a Objetos


Flvio de Oliveira Silva

124

62

ESTRUTURAS DE CONTROLE

ESTRUTURA DE REPETIO for


 Exemplo:
int i;
for (i = 0; i < 10, i++)
{
System.out.println(O contador I
ainda menor que 10!);
}
 No exemplo acima, o contador um nmero
inteiro i. A instruo ser executada enquanto
a expresso for verdadeira (i < 10) e i ser
incrementado de 1 em 1.
Programao Orientada a Objetos
Flvio de Oliveira Silva

125

ESTRUTURAS DE CONTROLE

ESTRUTURA DE REPETIO for


 No lao pode ser utilizada instruo break que
ir finalizar o mesmo desviando o controle
para fora do lao for
 A instruo continue desvia o controle para o
nicio do lao for, no executando o restante
das instrues do lao. A diferena entre
continue e break, que a instruo
continue no finaliza a repetio.
 break e continue podem ser utilizados
tambm com w hile; do/ w hile
Programao Orientada a Objetos
Flvio de Oliveira Silva

126

63

ARRAYS
(VETORES)
"

Importante estrutura de dados. Consiste em um grupo


de OBJETOS do mesmo tipo, onde a cada objeto
associado um NDICE nico. Estes objetos esto
armazenados em uma posio contgua da memria. O
nmero de objetos contidos definido como sendo o
TAMANHO do vetor. A seguir mostrada a sintaxe para
a criao de um array.
Declarao: String clientes[];
Alocao:
clientes = new String[7];
Outra forma:
String clientes[] = new String[7];
" Na declarao no deve ser colocado o tamanho do
vetor.
" O cdigo acima cria um vetor de strings com 7 (sete)
elementos.
Programao Orientada a Objetos
Flvio de Oliveira Silva

127

ARRAYS (VETORES)

O acesso da cada elemento pode ser feito da


seguinte forma:
clientes[0] = "MARIA"
//Primeiro elemento
...
clientes[6] = JOS MARIA" //ltimo
elemento
Os vetores so estruturas estticas, sendo que
uma vez criados no podem ter o seu tamanho
alterado. Porm sua criao feita de forma
dinmica, durante a execuo do cdigo.
# Java possui a classe Vector que um vetor de
objetos onde seu tamanho pode ser ALTERADO
durante a execuo do cdigo.
Programao Orientada a Objetos
Flvio de Oliveira Silva

128

64

ARRAYS (VETORES)
#

Outros exemplos na declarao e alocao de um


vetor:
//Declara dois vetores de doubles
double[] aSalarios, aRecebimentos;
//Declara dois vetores de booleanos
boolean[] bOpcoes;
boolean bRespostas[];
//Declara e Aloca dois vetores de
//inteiros
int aNotas[] = new int[47], a[] =
new int[20];
Programao Orientada a Objetos
Flvio de Oliveira Silva

129

ARRAYS (VETORES)
#

Quando um vetor alocado os tipos primitivos


( int; double; byte;..) recebem o valor
zero. Tipos boolean recebem o valor false e
objetos (tipos no primitivos) recebem o valor
null

O nmero de elementos (comprimento/tamanho)


de um vetor pode ser obtido da seguinte forma:
int iNumeroElementos;
iNumeroElementos = aNotas.length;
System.out.println("O tamanho elementos do
vetor " + iNumeroElementos);
Programao Orientada a Objetos
Flvio de Oliveira Silva

130

65

ARRAYS (VETORES)
#

Exemplos de manipulao de elementos:


possvel manipular em expresses tanto o ndice
do vetor, quanto cada elemento.
//Soma de elementos
iSoma = aNotas[0] + aNotas[3] +
aNotas[3+1]

Programao Orientada a Objetos


Flvio de Oliveira Silva

131

ARRAYS
(VETORES)
#

Exemplos de manipulao de elementos


(continuao)
int iPrimeiro, iSegundo, iTerceiro,
iResultado ;
iPrimeiro = 0;
iSegundo = 1;
iTerceiro = 2;
//adiciona 7 a quarto elemento do
//vetor (0+1+2=3)
aNotas[iPrimeiro + iSegundo +
iTerceiro ] += 7;
iResultado = aNotas[5]/2 +
aNotas[3/3]*3
Programao Orientada a Objetos
Flvio de Oliveira Silva

132

66

ARRAYS
(VETORES)
#

Percorrendo todos os elementos de um vetor


for (int ii = 0; ii < aNotas.length;
ii++)
{
if (aNotas[ii] < 15)
System.out.println("Necessrio
estudar mais\n");
//Imprime o valor de cada elemento
//do vetor
System.out.println("Nota: " +
aNotas[ii] + \n");
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

133

ARRAYS (VETORES)
#

Utilizando vetor como argumento de um mtodo


Exemplo:
public calculaIpvaClientes(Veiculo
aVeiculos[])

Programao Orientada a Objetos


Flvio de Oliveira Silva

134

67

ARRAYS (VETORES)
#

VETORES MULTIDIMENSIONAIS Neste caso


cada elemento do vetor possui mais de um ndice
associado ao mesmo.
# Uma matriz ou tabela um vetor de duas
dimenses. Neste caso pode ser dito que a
informao est organizada em linhas e colunas.
Exemplo:
int aMatriz[][] = new Int[2][3];

aMatriz[0][0] aMatriz[0][1] aMatriz[0][2]


aMatriz[1][0] aMatriz[1][1] aMatriz[1][2]

Programao Orientada a Objetos


Flvio de Oliveira Silva

135

ARRAYS
(VETORES)
#

Exemplo: Um vetor com trs dimenses


int aCuboInteiros[][][] = new
Int[3][3][3];
# Percorrendo todos os elementos de um vetor
bidmensional(matriz)
for (int i = 0; i < aProvas.length; i++)
{
//Imprime o valor de cada elemento da
//matriz
for (int j = 0; j < aProvas[i].length;
j++)
System.out.println("Nota: " +
aProvas[i][j] + \n");
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

136

68

LINGUAGEM
JAVA EXEMPLO
#

Vamos considerar uma classe Veiculo que possui


os seguintes atributos: sPlaca; dValorMercado;
Combustivel; dAliquotaIpva; bIpvaPago
# Implentar a classe. Criar um construtor recebe
todas as variveis membro desta classe.
Implementar as funes GETxxx/ SETxxx
conforme as regras abaixo:
# Regras que devem ser respeitas:
$ A aliquota do ipva (dAliquotaIpva) um valor
double entre 1 e 10 A aliquota varia conforme
o combustvel: GASOLINA 4; ALCOOL
3; DIESEL 2
$ A placa e o combustvel deve ser diferente de
"" (string vazia)
Programao Orientada a Objetos
Flvio de Oliveira Silva

137

LINGUAGEM JAVA EXEMPLO


$

O combustivel pode assumir os seguintes


valores: "ALCOOL", "GASOLINA" e "DIESEL"
$ O valor de mercado um valor double,
sempre maior que zero
$ O valor bIpvaPago um boolean e indica se
o Ipva foi ou no pago durante o ano atual.
# Alm dos mtodos acima a classe possui o
mtodo calculaIpva. (dAliquotaIpva/ 100 *
dValorMercado)

Programao Orientada a Objetos


Flvio de Oliveira Silva

138

69

LINGUAGEM
JAVA EXEMPLO
#

Vamos implementar a classe ProcessaVeiculo.


Esta classe constuida de um vetor de veiculos.
# O construtor desta classe recebe o nmero
mximo de veiculos (iMaxNumber) que ser
processado. Este nmero dever ser sempre
maior que 5.
# O construtor ir inicializar os dados os veiculos da
seguinte forma:
$ sPlaca = PLC-000 + posicao_no_vetor
$ dValorMercado = Math.random() * 5000 *
posicao_no_vetor+ 1
$ sCombustivel = O primeiro GASOLINA; o
segundo ALCOOL e o terceiro DIESEL e
assim por diante..
Programao Orientada a Objetos
Flvio de Oliveira Silva

139

LINGUAGEM JAVA EXEMPLO


$

bIpvaPago = Inicialmente false para todos


veiculos
# Outros mtodos da classe:
$ imprimir os dados de todos os veiculos.
$ Calcular e imprimir o valor do Ipva de todos os
veiculos (utilizando while)
$ Criar um mtodo pagarI pva que recebe como
parmetro a placa do veculo. Este mtodo
deve localizar o veculo e alterar o valor
bI pvaPago de false para true.

Programao Orientada a Objetos


Flvio de Oliveira Silva

140

70

JAVA API DISPONVEL


#

A linguagem JAVA possui uma rica API. A


descrio da mesma est disponvel no
seguinte endereo:
http:/ / java.sun.com/ j2se/ 1.4.1/docs/ api
# A API est dividada em pacotes (Packages).
Cada pacote contm um conjunto de classes
que oferece funcionalidades relacionadas entre
si.
# A linguagem Java uma plataforma de
desenvolvimento e existem classes disponveis
para as mais variadas aplicaes e
necessidades
Programao Orientada a Objetos
Flvio de Oliveira Silva

141

JAVA API DISPONVEL


java.Applet

Classes bsicas para criar uma


Applet

java.awt

Classes para a manipulao de grficos e


desenhos

java.io

Classes para Input/Output. Tratamento de


arquivos

java.lang

Classes que contm a linguagem java.


"Importada" em qualquer programa java

java.net

Classes para implementar aplicaes de


rede

java.rmi

Classes para Remote Method Invocation. Permite


uma mquina Java conversar com outra

java.security

Classes para implentar regras de segurana. Ex.:


mtodos de criptografia

java.sql

Classes para acesso e manipulao a banco


de dados.

java.util

Classes para uso genrico. Ex.: Colees; etc.

javax.swing

Classes para criao de interfaces grficas de


usurio(GUI)

Programao Orientada a Objetos


Flvio de Oliveira Silva

142

71

JAVA TRABALHANDO COM STRINGS


#

Uma String consiste em uma sequncias de


caracteres.

6WULQJVWU DEF equivalente a:


FKDUGDWD>@ ^
D

E

F
`6WULQJVWU QHZ6WULQJ GDWD 

A linguagem java possui um suporte especial para


a concatenao de Strings utilizado o operador +
% CONSTRUTORES PRI NCI PAI S
String() Cria uma string vazia
String(String original) Cria uma cpia de
uma string a partir da String original
String("String_constante") Cria uma string
a partir de um valor string constante
Programao Orientada a Objetos
Flvio de Oliveira Silva

143

JAVA TRABALHANDO COM STRINGS


%

MTODOS PRI NCI PAI S

public boolean equals(Object anObject)- Compara


a String com qualquer outro objeto. Caso o outro objeto seja
uma string de igual contedo retorna true
public int length()- Retorna o comprimento de uma
string, o comprimento equivale ao nmero de caracteres.
public String trim()- Retorna uma cpia da string,
removendo espaos em branco existentes no seu inicio e final.
public char charAt(int index)- Retorna o caracter
existente na posio index da string.
public String toUpperCase()- Converte os caracteres
da string para sua representao em letra maiscula.
Programao Orientada a Objetos
Flvio de Oliveira Silva

144

72

JAVA TRABALHANDO COM STRINGS


%

A classe Object possui o mtodo toString() , desta


forma todas as outras classes herdam este mtodo
e muitas delas o especializam conforme sua
necessidade.
% Outro mtodo importante que a classe String
oferece o mtodo valueOf () . Este mtodo pode
ser utilizado para converter variveis de diferentes
tipos para Strings.
Exemplo:
6\VWHPRXWSULQWOQ 6WULQJYDOXH2I 0DWK3, 

Programao Orientada a Objetos


Flvio de Oliveira Silva

145

JAVA TRABALHANDO COM STRINGS


%

A classe String no possui mtodos para se


converter em outros tipos como inteiro ou ponto
flutuante. Para realizar esta operao necessrio
a utilizao das classes Boolean; Byte; Short;
I nteger; Long e Double que possuem mtodos
para realizar tal tarefa.
Exemplo de Converso:
Convertendo uma String em Float
float pi = Float.parseFloat("3.14");
Convertendo Float em String
String s = Float.valueOf(3.1415);
% Para os outros tipos bsicos o procedimento o
mesmo
Programao Orientada a Objetos
Flvio de Oliveira Silva

146

73

HERANA
%
%

%
%
%

Herana a capacidade de uma subclasse de ter


acesso as propriedades da superclasse(tambm
chamada classe base) relacionada a esta
subclasse.
Dessa forma os atributos e mtodos de uma
classe so propagados de cima para baixo em
um diagrama de classes.
Neste caso dizemos que a subclasse herda as
propriedades e mtodos da superclasse
Os construtores da superclasse (classe base)
no so herdados pela subclasse.
A utilizao da herana um importante fator
para a reutilizao de cdigo
Programao Orientada a Objetos
Flvio de Oliveira Silva

147

HERANA
%

A herana uma capacidade caracterstica das


linguagens orientadas a objetos.
% A relao de herana entre duas classes uma
relao da seguinte forma: A e um tipo de B,
onde A e B so classes. Caso esta relao entre
as classes no puder ser construda, em geral,
tambm no se tem uma relao de herana
entre a classe A a partir da classe B.
% Exemplos: Um Carro de Passeio um tipo de
veculo; Um caminho um tipo de veculo; Um
crculo um tipo de figura; Um quadrado um
tipo de figura; Um vendedor um tipo de
Empregado; Um empregado e um tipo de
pessoa.
Programao Orientada a Objetos
Flvio de Oliveira Silva

148

74

HERANA - REPRESENTAO

Programao Orientada a Objetos


Flvio de Oliveira Silva

149

HERANA
- REPRESENTAO
%

A Classe Object a classe base da linguagem


Java, ou seja, todas as outras classes herdam a
classe Object
% Quanto mais alto na hierarquia de classe, mais
generalizada a classe

Programao Orientada a Objetos


Flvio de Oliveira Silva

150

75

HERANA x USO

Alm da relao de herana entre as


classes existe a relao de uso
&

HERANA
classe A um tipo de B
& USO / AGREGAO (Relao de Contedo)
classe D contm classe C
classe D usa classe C
classe C parte da classe D
Exemplo: Uma Crculo contm um Ponto
central; Um Tringulo utiliza trs objetos da
classe Ponto; Um Ponto parte da classe
Quadrado
Programao Orientada a Objetos
Flvio de Oliveira Silva

151

HERANA
x USO - REPRESENTAO
%

Neste exemplo alm da herana representada a


relao de uso, onde todos as outras figuras usam
a classe Ponto

Programao Orientada a Objetos


Flvio de Oliveira Silva

152

76

HERANA x USO

Representao da Herana
(Simples e Mltipla)
Programao Orientada a Objetos
Flvio de Oliveira Silva

153

HERANA

'

'

'

'

Para estabelecer uma relao de herana entre a


classe a classe B e a classe A, deve ser utilizada
keyword extends
[public] [modTipo] class B extends A [...]
Quanto mais alto na hierarquia de classe, mais
generalizada a classe
Normalmente uma classe pode ser vista somente
por outras classes no mesmo pacote. O
modificador public indica que a classe ser vista
por qualquer outra classe
Um PACOTE (package) consiste em um
conjunto de classes relacionadas entre si.
Programao Orientada a Objetos
Flvio de Oliveira Silva

154

77

'

HERANA

Na criao de uma classe possvel utilizar


modificadores de tipo que iro influenciar o
comportamento da mesma.
'
Modificador abstract: Indica que a classe no
poder ser instanciada
'
Modificador final: Indica que a classe no poder
ser extendida
Exemplos:
public final class String extends Object
public class Triangulo extends Figura
class Empregado extends Pessoa
class VeiculoCarga extends Veiculo
abstract class Veiculo extends Object
Programao Orientada a Objetos
Flvio de Oliveira Silva

155

HERANA EXEMPLOS
class Pessoa {
protected String name;
/ / Construtor
public Pessoa(){
name = "";
}
public Pessoa(String n){
name = n;
}
/ / Get Metodos
String getName(){
return name;
}

/ / continuao...
/ / set Metodos
void setName(String s){
name = s;
}
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

156

78

HERANA EXEMPLOS
class Empregado extends / / continuando...
Pessoa {
/ / Get Metodos
protected double
double getSalario(){
dSalario;
return dSalario;
/ / Construtor
}
public Empregado(String / / set Metodos
n, double dS){
void setSalario(double
name = n;
dS){
dSalario = dS;
dSalario = dS;
}
}
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

157

HERANA ACESSO A SUPERCLASSES

'

'

'

'

'

A palavra reservada super , permite acesso a


mtodos e construtores da superclasse
super( x1, x2, ..., xn) - Permite a chamada
do construtor da superclasse.
Na utilizao da herana necessrio a fim
de chamar o construtor da superclasse,
sempre que a superclasse no possui um
construtor default.
Construtor default aquele que no possui
parmetros
Esta chamada deve ser a primeira dentro do
construtor da classe. O construtor da classe
imediatamente superior ser chamado
Programao Orientada a Objetos
Flvio de Oliveira Silva

158

79

HERANA ACESSO A SUPERCLASSES


'

'

super.metodo( ...) - Permite que uma classe


possa utilizar mtodos definidos em sua
superclasse
Exemplos:
String s;
s = super.toString();
Em algum mtodo da classe empregado
possvel a seguinte chamada:
...
super.getName();
...
Programao Orientada a Objetos
Flvio de Oliveira Silva

159

HERANA EXEMPLOS
class Gerente extends
Empregado {
protected double
dBonificacao;
/ / Construtor
public Gerente(String n,
double dS, double
dB){
super( n,dS) ;
dBonificacao = dB;
}
double getBonificacao(){
return dBonificacao;
}

/ / continua...
double getSalario( ) {
return ( dSalario +
dBonificacao) ;
}
/ / set Metodos
void
setBonificacao(double
dS){
dBonificacao = dS;
}
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

160

80

HERANA
E POLIMORFISMO
'
'

No exemplo anterior pode ser percebido que


houve um polimorfismo no mtodo getSalario.
Definio do mtodo na classe Empregado
double getSalario(){
return dSalario;
}

'

Definio no mtodo na classe Gerente, que


subclasse de Empregado:
double getSalario(){
return (dSalario + dBonificacao);
}
'

O mesmo mtodo apresenta um


comportamento diferente para diferentes
classes que possuem uma relao de herana
Programao Orientada a Objetos
Flvio de Oliveira Silva

161

HERANA - CLASSES ABSTRATAS

'

'

'

'

Algumas classes na hieraquia so to gerais que


nehum objeto ser criado a partir delas. Neste
caso a classe dita ABSTRATA
Uma classe abstrata no pode ser instanciada ou
seja, no possvel criar objetos a partir da
mesma
A classe ABSTRATA uma classe que est
incompleta. Esta classe pode conter mtodos
abstratos que so aqueles mtodos apenas
declarados, mas que no foram implementados.
Os mtodos abstratos devem ser
obrigatoriamente implementados nas subclasses.
Programao Orientada a Objetos
Flvio de Oliveira Silva

162

81

HERANA - CLASSES ABSTRATAS


'

'

'

O mtodo abstrato contm apenas sua


assinatura (nome, nmero e tipo dos seus
parmetros).
Para a criao de classes e mtodos
abstratos deve ser utilizado o modificador de
tipo abstract
Classe CONCRETA aquela a partir da qual
objetos sero instanciados. Neste tipo de
classe todos seus mtodos devem ser,
obrigatoriamente, definidos.

Programao Orientada a Objetos


Flvio de Oliveira Silva

163

HERANA CLASSES ABSTRATAS


abstract class Pessoa {
protected String name;
/ / Construtor
/ / public Pessoa(){
/ / name = "";
//}
public Pessoa(String n){
name = n;
}
/ / Get Metodos
String getName(){
return name;
}

/ / continua...
/ / set Metodos
void setName(String s){
name = s;
}
abstract void
printName();
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

164

82

HERANA CLASSES ABSTRATAS


class Empregado extends
Pessoa {
protected double
dSalario;
/ / Construtor
public Empregado(String
n, double dS){
super(n);
/ / name = n;
dSalario = dS;
}

/ / Get Metodos
double getSalario(){
return dSalario; }
/ / set Metodos
void setSalario(double
dS){
dSalario = dS; }
void printName( ) {
System.out.println(
"Empregado: " +
name);
}
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

165

HERANA MLTIPLA
'

Existem casos em que uma classe pode


herdar o comportamento de mais de uma
classe. Neste caso temos a herana mltipla.
Exemplo:
GERENTE
autoriza()

GERENTE

VENDEDOR

autoriza()

processaPedido()

VENDEDOR
processaPedido()

GERENTE DE
VENDAS
GERENTE DE
VENDAS

MODELAGEM
INCORRETA

Programao Orientada a Objetos


Flvio de Oliveira Silva

166

83

HERANA
MLTIPLA
(

Como implementar a herana mltipla:


CLASSE_A

CLASSE_B

String a;
getA();

String a;
getA();

CLASSE_C

No exemplo acima, qual cpia do atributo a a


classe CLASSE_C vai herdar? Qual mtodo
getA( ) vai utilizar?
Java resolve este problema utilizando o
conceito de INTERFACES
Programao Orientada a Objetos
Flvio de Oliveira Silva

167

HERANA MLTIPLA

Um mtodo possui duas partes: sua assinatura


e sua implementao
Java no suporta a herana mltipla
explicitamente, mas possui meios para que os
efeitos da herana mltipla seja realizada de
forma indireta utilizando o conceito de
INTERFACES
Atravs deste conceito uma classe pode herdar
as assinaturas dos mtodos, mas no a sua
implementao.
A implementao, deve por sua vez, ser definida
na subclasse.
Programao Orientada a Objetos
Flvio de Oliveira Silva

168

84

HERANA MLTIPLA
(

Uma INTERFACE definida atravs da palavra


interface conforme mostrado a seguir:
[public] interface B extends A
Neste caso A deve ser outra interface.
Exemplo Definio da INTERFACE GerenteInt
interface GerenteInt{
boolean autorizar();
}

A indicao da herana mltipla feita da


seguinte forma:

[public] [modTipo] class B [extends A] implements C


Programao Orientada a Objetos
Flvio de Oliveira Silva

169

HERANA MLTIPLA

Na interface todos os mtodos so abstratos e


no possuem implentao apenas sua
assinatura.
A uma classe pode utilizar mais de uma interface
em sua definio

Programao Orientada a Objetos


Flvio de Oliveira Silva

170

85

HERANA MLTIPLA - EXEMPLO

class GerenteVendas
/ /continua..
extends Vendedor
void printName(){
implements
GerenteInt{
System.out.println("Ve
protected String
ndedor: " + name); }
sRegiao;
/ / Construtor
public boolean
public
autorizar( ) {
GerenteVendas(String
System.out.println("Ve
n, double dS, double
nda Autorizada");
dC, String sReg){
return true; }
super(n, dS, dC);
}
sRegiao = sReg;
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

171

HERANA MLTIPLA

Atravs da herana mltipla novos mtodos,


de diferentes classes, podem ser agregados a
uma subclasse
A herana atravs de interface no possibilita
a reutilizao do cdigo, visto que o mtodo
herdado deve ser implementado para cada
subclasse.
ATRIBUTOS EM UMA INTERFACE: Em uma
interface os atributos so implicitamente
declarados como static e final.
MTODOS EM UMA INTERFACE: Todos os
mtodos so abstratos, no sendo necessrio
a palavra abstract
Programao Orientada a Objetos
Flvio de Oliveira Silva

172

86

HERANA MLTIPLA

static: Indica que existe apenas uma


cpia do mtodo ou varavel,
referenciados pela classe (mtodo ou
varivel de classe)
final: impede a modificao de um
mtodo, varivel ou a especializao de
uma classe.

Programao Orientada a Objetos


Flvio de Oliveira Silva

173

HERANA MLTIPLA
(

Exemplo: Mtodos e Variveis em interface


interface Cores{
int RED = 1;
int GREEN = 2;
int BLUE = 3;
void setCor(int c);
int getCor();
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

174

87

HERANA MLTIPLA
(

Uma classe abstrata que implenta alguma


interface, deve conter a definio deste
mtodo. Exemplo:
abstract class Colorido implements Cores {
int i;
Colorido() { }
public void setCor(int c){
i = c;
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

175

HERANA MLTIPLA
(

Diferenas entre classe Abstrata e Interface

CLASSE ABSTRATA

INTERFACE

Pode conter alguns mtodos declarados como


Somente pode ter mtodos abstratos
abstract
Pode conter atributos protected e mtodos
Somente pode conter mtodos public
static
Pode conter atributos do tipo final e "no-final"

Somente
pode
conter
constantes
(implicitamente so public final static)

Programao Orientada a Objetos


Flvio de Oliveira Silva

176

88

JAVA TRATAMENTO DE EXCEES

TRATAMENTO DE ERROS TRADICIONAL

)
)

O Erro verificado e caso ocorra, tratado no


ponto possvel a sua ocorrncia.
Ocorre uma mistura entre o cdigo para resolver
o problema e o cdigo utilizado no tratamento do
erro
Tratamento do erro, interfere na lgica do
problema e alguns casos torna mais dficil a
compreenso do mesmo.
Em algumas situaes o erro deve ser propagado
por vrios nveis at que seja tratado.
)

Programao Orientada a Objetos


Flvio de Oliveira Silva

177

TRATAMENTO DE EXCEES

TRATAMENTO DE ERROS TRADICIONAL

Exemplo Cdigo sem tratamento de erros!


ler_um_arquivo
{
abrir_arquivo;
determinar_seu_tamanho;
alocar_memria;
ler_arquivo;
fechar_arquivo;
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

178

89

TRATAMENTO DE EXCEES
*

TRATAMENTO DE ERROS TRADICIONAL - Exemplo

errorCode ler_um_arquivo{
errorCode = 0;
abrir_arquivo;
if (arquivo_aberto){
determinar_seu_tama
nho;
if (tamanho_disponivel){
alocar_memria;
if (memoria_alocada){
ler_arquivo;

if (erro_Leitura)
errorCode = -4;
} else
errorCode = -3;
} else
errorCode = -2;
fechar_arquivo;
if (erro_Fechar_arquivo)
errorCode = -5
} else
errorCode = -1;
return errorCode; }

Programao Orientada a Objetos


Flvio de Oliveira Silva

179

TRATAMENTO DE EXCEES

TRATAMENTO DE ERROS TRADICIONAL - Exemplo

errorCode leArquivo{
errorCode = 0;
abrir_arquivo;
if (arquivo_nao_aberto)
return -1;
determinar_seu_tamanho;
if (tamanho_nao_disponivel) {
fechar_arquivo;
return -2;}
alocar_memria;
if (memoria_nao_alocada){
fechar_arquivo;
return -3;}

ler_arquivo;
if (erro_Leitura){
fechar_arquivo;
return -4;}
fechar_arquivo;
if (erro_Fechar_arquivo)
return -5
return errorCode;}

Programao Orientada a Objetos


Flvio de Oliveira Silva

180

90

TRATAMENTO DE EXCEES
EXCEO

Indicao de um problema ocorrido durante o


processamento

TIPOS DE EXCEO

Erros de hardware; diviso por zero; tentativa de


acessar elementos fora dos limites de um vetor;
valores de parmetros invlidos em um mtodo;
esgotamento da memria; utilizar um objeto no
criado; etc.

Programao Orientada a Objetos


Flvio de Oliveira Silva

181

TRATAMENTO DE EXCEES
VANTAGENS

Separao do cdigo de tratamento de erro do


cdigo do programa
Propagao do erro atravs da pilha de funes

metodo1 {

int metodo2() {

int metodo3() {

int error;

int error;

int error;

error = metodo2();

error = metodo3();

error = leArquivo();

if (error)

if (error)

if (error)

/ /ProcessaErro

return error;

else

else

/ / continua
}

return error;
else

/ / continua
}

/ / continua
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

182

91

TRATAMENTO DE EXCEES
VANTAGENS

Agrupamento dos vrios tipos de erros em


classes

Programao Orientada a Objetos


Flvio de Oliveira Silva

183

TRATAMENTO DE EXCEES
QUANDO UTILI ZAR

Em situaes onde o mtodo incapaz de


completar sua tarefa
Em situaes onde o mtodo no trata as
excees ocorridas, mas apenas sinaliza sua
ocorrncia, como em bibliotecas de classes.

Programao Orientada a Objetos


Flvio de Oliveira Silva

184

92

TRATAMENTO DE EXCEES

COMO UTILIZAR
)

Para utilizar o tratamento de excees,


basicamente necessrio ouvir e capturar as
possveis excees que podem ocorrer e alm
disso disparar excees.
Para ouvir/ capturar utiliza-se os blocos
try/catch
)
)

Para disparar excees utiliza-se as instrues


throws/ trow
Alm disso possvel criar classes especficas para
o tratamento de excees
Programao Orientada a Objetos
Flvio de Oliveira Silva

185

OUVINDO / CAPTURANDO EXCEES


)

As excees que podero ocorrer sero ouvidas


atravs de um bloco que inicia pela instruo try
Ao final deste bloco, um ou mais, blocos que iniciam
pela instruo catch, iro capturar e tratar as
excees que podem ter sido disparadas.
Aps o ltimo bloco catch, um bloco finally
opcional fornece um cdigo que sempre ser
executado e pode ser utilizado para evitar perdas de
recurso (Ex. Arquivo aberto)
Logo que uma exceo ocorre o processamento
deixa o bloco try e comea a pesquisar nos blocos
catch um tratamento especfico para aquele tipo de
erro
Programao Orientada a Objetos
Flvio de Oliveira Silva

186

93

OUVINDO / CAPTURANDO EXCEES


Exemplo:

try{
... }
catch(ExceptionType1 e){
... }
catch (ExceptionType2 e){
... }
catch (Exception e){
... }
finally {
...
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

187

DISPARANDO EXCEES

Para que um mtodo possa disparar uma


exceo necessrio colocar a clusula throws
na definio do mesmo, indicando quais tipos de
exceo o mesmo pode retornar
O mtodo que ir retornar a exceo deve criar a
mesma. Uma exceo tambm um objeto!
Aps criar a exceo a mesma deve ser
disparada com a clusula throw
A classe base de excees em java a classe
Exception

Programao Orientada a Objetos


Flvio de Oliveira Silva

188

94

CRIANDO CLASSES DE EXCEES


,

Para criar uma classe que ser responsvel pelo


tratamento de excees a mesma deve extender
a classe Throwable
Exemplo:
public class MyException extends
Throwable

Programao Orientada a Objetos


Flvio de Oliveira Silva

189

CRIANDO CLASSES DE EXCEES


,

Importante:

catch (Exception e) Captura todas as excees


catch (Error err) Captura todos os erros do tipo Error
catch (Throwable t) Captura todos os erros do tipo
Error e Exception

Programao Orientada a Objetos


Flvio de Oliveira Silva

190

95

TRATAMENTO
DE EXCEES - EXEMPLO
private double calculaTotal(String sC, String sJ, String sP, String sM) throw s
NumberFormatException {
if (sC.equals(""))
throw new NumberFormatException("O CAMPO CAPITAL EST VAZIO");
if (sJ.equals(""))
throw new NumberFormatException("O CAMPO JUROS EST VAZIO");
if (sPrazo.equals(""))
throw new NumberFormatException("O CAMPO ANOS EST VAZIO");
/ /converte o texto para double
dCapital = Double.parseDouble(sC);
dJuros = Double.parseDouble(sJ);
dPrazo = Double.parseDouble(sP);
dTotal = 0;
if (dPrazo = = 0)
throw new NumberFormatException("O NMERO DE ANOS IGUAL A ZERO");
if (sMetodo.equals(aMetodos[ 0])){
dTotal = ((dCapital * (1 + (dJuros/ 100)* dPrazo))/ (dPrazo))/12;
if (sMetodo.equals(aMetodos[ 1])){
dTotal = ((dCapital * Math.pow((1 + (dJuros/100)),dPrazo))/ dPrazo)/ 12;
}
return dTotal;

Programao Orientada a Objetos


Flvio de Oliveira Silva

191

TRATAMENTO DE EXCEES - EXEMPLO

try {
dTotal = calculaTotal(txtCapl.getText(),txtJur.getText(), txtPra.getText(),sMetodoCalculo);
...
}
catch (NumberFormatException ex)
{
JOptionPane.showMessageDialog(null,ex);
JOptionPane.showMessageDialog(null,ex.getMessage());
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

192

96

TRATAMENTO DE EXCEES - EXEMPLO

try {
dTotal = calculaTotal(txtCapl.getText(),txtJur.getText(), txtPra.getText(),sMetodoCalculo);
...
}
catch (NumberFormatException ex)
{
JOptionPane.showMessageDialog(null,ex);
JOptionPane.showMessageDialog(null,ex.getMessage());
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

193

ASSINATURA COMPLETA DE UM MTODO

A assinatura de um mtodo criada da seguite forma:


[ nvelAcesso] [ modificador] tRetorno nomeMetodo ( T0 P0,...,Tn Pn)
[ throw s tExceo]
[ nvelAcesso] - private; public ou
Protected
[ modificador] Permite alterar a forma como o
mtodo se comporta (static; abstract;final;
native; synchronized)
[ tRetorno ] - Tipo de retorno. Se no houver nenhum
retorno, deve ser utilizado void. O tipo pode ser
bsico ou ento qualquer objeto da linguagem
T0,...Tn Tipos dos parmetros utilizados
P0,...,Pn Parmetros
[ throw s tExceo] Tipo de exceo que pode ser
disparada pelo mtodo
Programao Orientada a Objetos
Flvio de Oliveira Silva

194

97

ESTRUTURA COMPLETA DE UMA CLASSE

[ nvelAcesso] [ modificadorClasse] class NomeClasse


[extends baseClass] [implements interface1, interface2,...] {
[ nvelAcesso] [ modificadorAtributo] tipo variavel_membro1;
[ nvelAcesso] [ modificadorAtributo] tipo variavel_membroN;
/ / Construtores
[ nvelAcesso] NomeClasse(T0 P0, ..., Tn Pn);
/ / Destrutor
protected void finalize();
/ / Modificadores
[ nvelAcesso] [ modificador] tRetorno setXXX( T0 P0,...,Tn Pn) ...
/ / Acessores
[ nvelAcesso] [ modificador] tRetorno getXXX( T0 P0,...,Tn Pn) ...
/ / Outros mtodos (privados; protegidos e pblicos)
[ nvelAcesso] [ modificador] tRetorno metodo( T0 P0,...,Tn Pn)
[ throw s tExceo]

Programao Orientada a Objetos


Flvio de Oliveira Silva

195

ESTRUTURA COMPLETA DE UMA CLASSE

A seguir mostrado os possveis valores utilizados na construo da


classe:
[ nvelAcesso] - private; public ou
Protected
[ modificadorClasse ] - Permite alterar a forma
como a classe se comporta (abstract;final)
baseClass Classe base utilizada pela herana
interface i.. Nome da interface implementada
[ modificadorAtributo ] - Permite alterar a forma
como o atributo se comporta (static;
abstract; final; transient; volatile)
[ tipo ] Tipo da varivel membro ou atributo. O tipo pode
ser bsico ou ento qualquer objeto da linguagem

Programao Orientada a Objetos


Flvio de Oliveira Silva

196

98

ESTRUTURA COMPLETA DE UMA CLASSE


[ modificador] Permite alterar a forma como o
mtodo se comporta (static;abstract;
final; native; synchronized)
[ tRetorno ] - Tipo de retorno do mtodo. Se no
houver nenhum retorno, deve ser utilizado void.
O tipo pode ser bsico ou ento qualquer objeto
da linguagem
T0,...Tn Tipos dos parmetros utilizados
P0,...,Pn Parmetros
[ throw s tExceo] Tipo de exceo que pode
ser disparada pelo mtodo
Programao Orientada a Objetos
Flvio de Oliveira Silva

197

PACOTES
/

Um pacote (package) consiste em um conjunto


de classes e interfaces, relacionados entre si e
normalmente sua criao est ligada a
composio de bibliotecas
/ Atravs da utilizao de pacotes possvel
utilizar classes com mesmo nome, porm
proveniente de diferentes pacotes.
/ Por conveno os pacotes devem ter o seguinte
nome: FRPFRPSDQ\SDFNDJH
/ 7RGDFODVVHSHUWHQFHDXPSDFRWHTXDQGRR
QRPHGRSDFRWHQR LQIRUPDGRRFRPSLODGRU
FRQVLGHUDTXHFODVVHSHUWHQFHDRSDFRWH
GHIDXOW TXHQHVWHFDVR RGLUHWULRFRUUHQWH
Programao Orientada a Objetos
Flvio de Oliveira Silva

198

99

PACOTES
/

Para criar um pacote basta colocar a seguinte


declarao no arquivo .java:
package nomeDoPacote
/

Esta declarao deve ser a primeira declarao


existente no arquivo.
/ Somente as classes, mtodos e variveis pblicas
(public) podem ser utilizadas externamente ao
pacote.

Programao Orientada a Objetos


Flvio de Oliveira Silva

199

PACOTES
Para organizar os arquivos em um pacote a regra a
seguinte:
0 Criar cada classe ou interface em um arquivo .java
diferente.
0 Colocar estes arquivos em uma hierarquia de
diretrio equivalente estrutura de nome do pacote
Exemplo:
Nome do pacote com.autoenge.people
Arquivos: pessoa.java; cliente.java; empregado.java;
vendedor.java; gerenteI nt.java; gerenteVendas.java
Diretrio onde esto os arquivos: / com/ autoenge/ people
Programao Orientada a Objetos
Flvio de Oliveira Silva

200

100

PACOTES
/

Uma forma para utilizar uma classe contida em um


pacote qualificando seu nome completamente:
java.io.File
com.autoenge.people.vendedor
Exemplo:
File d = new java.io.File(fname.txt);
/ Para evitar a qualificao completa do nome do
pacote basta utilizar a keyword import
import nomeCompletoDoPacote.className
/ Para importar todas as classes existentes em um
pacote utiliza-se a seguinte sintaxe:
import nomeCompletoDoPacote.*
Programao Orientada a Objetos
Flvio de Oliveira Silva

201

PACOTES
/

Dois pacotes so automaticamente carregados


quando se trabalha com a linguagem java:
. O pacote java.lang

. O pacote default (diretrio corrente)

Exemplo

import java.io.* ;
File d = new File(fname.txt)

Programao Orientada a Objetos


Flvio de Oliveira Silva

202

101

ENTRADA E SADA (I/ O)


/

O conceito de Stream pode ser entendido como


um fluxo de informao que pode entrar ou sair
de um programa para uma fonte de informao
que pode ser um arquivo, a memria ou mesmo
um socket de comunicao via internet.

Programao Orientada a Objetos


Flvio de Oliveira Silva

203

ENTRADA E SADA (I/ O)


/

As operaes de entrada e sada podem ser


divididas em dois grandes grupos: Entrada (Read)
e Saida (Write)
/ Independente da origem ou destino o processo de
leitura e escrita envolve os seguinte passos:
LEITURA (READ)

Abre uma Stream


while (existe_informao)
le_informao (read)
Fecha a Stream

ESCRITA (WRITE)

Abre uma Stream


while (existe_informao)
escreve_informao
(write)
Fecha a Stream

O pacote java.io contm uma srie de classes


para a manipulao de entrada e saida.
Programao Orientada a Objetos
Flvio de Oliveira Silva

204

102

ENTRADA
E SADA (I/ O)
/

Para o trabalho com I/O existem dois tipos de


stream: Byte Streams e Character Streams
/ Byte Streams (Fluxos de Bytes), permite a escrita
e leitura de bytes (8 bits). Este tipo de stream
normalmente utilizado para a manipulao de
dados binrios como por exemplo, imagens e
sons. ,QSXW6WUHDP e 2XWSXW6WUHDP so classes
abstratas e super classes das byte streams.
/ Character Streams(Fluxos de caracteres) permite a
manipulao de caracters com 16 bits (unicode).
Reader e Writer so classes bsicas e super
classes das Character Streams.
/ As classes Bytes Streams so da primeira verso
de i/o utilizada por java (desde 1.0)
Programao Orientada a Objetos
Flvio de Oliveira Silva

205

ENTRADA
E SADA CLASSES
/

Byte Streams Hierarquia de classes

Programao Orientada a Objetos


Flvio de Oliveira Silva

206

103

ENTRADA
E SADA CLASSES
/

Character Streams Hierarquia de classes

Programao Orientada a Objetos


Flvio de Oliveira Silva

207

ENTRADA E SADA (I/ O) - ARQUIVOS


/

/
/

Entre as classes de entrada e sada podemos


destacar:
Byte Streams
Character Streams
/ FileReader
FileInputStream
/ FileWriter
FileOutputStream
As classes acima so utilizadas para leitura e
escrita no sistema de arquivos nativo.
Normalmente as classes acima utilizam a classe
File que representa arquivos e diretrios no
sistema nativo, permitindo sua manipulao

Programao Orientada a Objetos


Flvio de Oliveira Silva

208

104

ENTRADA
E SADA (I/ O) - BUFFERIZADA
/

Para a leitura e escrita bufferizadas em arquivos


so utilizadas as seguinte classes:
Character Streams
BufferedReader
/ BufferedWriter

Byte Streams
/

BufferedInputStream
/ BufferedOutputStream

A utilizao de um buffer reduz o nmero de


acessos necessrios e desta forma este tipo de i/ o
mais efeciente, devendo ser utilizado sempre
que possvel
/ Noramalmente esta classe utilizada em conjunto
com alguma outra classe, com o objetivo de
adicionar o buffer na classe em questo.
Programao Orientada a Objetos
Flvio de Oliveira Silva

209

ENTRADA E SADA (I/ O) - BUFFERIZADA


/

Para criar objetos das classes acima necessrio


utilizar as classes Reader e Writer no caso das
character streams.

BufferedReader in = new BufferedReader(new FileReader("foo.in"));


BufferedWrite out = new BufferedWriter(new FileWrite("foo.in"));

Para ler um arquivo linha por linha deve ser


utilizada a classe LineNumberReader
1 Para escrever arquivo linha por linha deve ser
utilizada a classe PrintWriter/ PrintStream
PrintWriter out = new PrintWriter(new BufferedWriter (new FileWriter
("foo.out")));

Programao Orientada a Objetos


Flvio de Oliveira Silva

210

105

ENTRADA
E SADA (I/ O) - TIPOS BSICOS
1

As classes abaixo permitem que uma aplicao


faa a leitura e escrita de tipos primitivos de dados
da linguagem java.
Byte Streams

'DWD,QSXW6WUHDP
'DWD2XWSXW6WUHDP
1
1

Character Streams
1 No apresenta esta
funcionalidade!

As classes acima so um importante recurso para


facilitar a leitura/ escrita formatada de dados.
1 Para realizar a leitura/ escrita formatada de dados
das classes Reader e Writer necessrio sua
converso utilizando as classes:
I nputStreamReader e OutputStreamWriter
Programao Orientada a Objetos
Flvio de Oliveira Silva

211

ENTRADA E SADA (I/ O) - OBJETOS


1

As classes abaixo permitem a leitura e a escrita de


objetos em geral.
Byte Streams
Character Streams
1 2EMHFW,QSXW6WUHDP
1 No apresenta esta
1 2EMHFW2XWSXW6WUHDP
funcionalidade!

O processo de leitura e escrita de objetos


chamado Serializao de Objetos.
1 possvel utilizar um buffer durante a serializao
de objetos. Para isto uma stream do tipo
BufferedI nputStream ou ObjectOutputStream
de ser adicionada ao um fluxo dos tipos acima.
Programao Orientada a Objetos
Flvio de Oliveira Silva

212

106

ENTRADA E SADA (I/ O) - OBJETOS

Exemplos: Abaixo mostrado como encadear vrios


tipos de streams a fim de obter o resultado desejado.
Neste caso est sendo feita uma escrita e leitura de
objetos em um arquivo do sistema utilizando buffers.
2 Escrita( encadeando vrias tipos de streams)

FileOutputStream fos = new FileOutputStream("t.obj");


BufferedOutputStream bos = new ufferedOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(bos);

Leitura( encadeando vrias tipos de streams)


FileInputStream fis = new FileInputStream("t.tmp");
BufferedInputStream bis = new BufferedInputStream (fis);
ObjectInputStream ois = new ObjectInputStream(bis);
Programao Orientada a Objetos
Flvio de Oliveira Silva

213

ENTRADA
E SADA (I/ O) - SERIALIZAO
1

A serializao permite a leitura e escrita em


arquivos dos dados contidos em objetos.
1 Os dados so gravados em forma de Byte Streams.
1 Para que uma classe possa ser serializada basta
que a mesma implemente a interface Serializable
1 Para gravar o objeto deve ser utilizado o seguinte
mtodo:
public final void writeObject(Object obj)
oos.writeObject(new Veiculo(...));

Para ler o objeto deve ser utilizado o seguinte


mtodo:
public final Object readObject()
ois.readObject(new Veiculo(...));
Programao Orientada a Objetos
Flvio de Oliveira Silva

214

107

ENTRADA
E SADA (I/ O) - CONVERSO
3

Em muitas situaes necessria a converso de Byte


Stream para Character Stream a vice-versa para isto so
utilizadas seguinte classes:

Byte Streams Character Streams


InputStreamReader

Character Streams ByteStreams


OutputStreamWriter
3

Uma I nputStreamReader l bytes de uma InputStream


a converte-os para caracteres. J uma
OutputStreamWriter converte character para bytes e
envia-os para uma OutputStream
Exemplos:
Writer out = new BufferedWriter(new OutputStreamWriter ( System.out));
BufferedReader in = new BufferedReader(new InputStreamReader
(System.in));
Programao Orientada a Objetos
Flvio de Oliveira Silva
215

ENTRADA
E SADA (I/ O) PADRO
1

Os dispositivos de entrada e sada padres so


mantidos por variveis estticas da classe System
e podem ser referenciadas da seguinte forma:
4 Entrada Padro

System.in

4 Saida Padro

(public static final InputStream in)

System.out (public static final PrintStream out)

4 Sada de Erro Padro

System.err (public static final PrintStream err)


1

Normalmente as variveis acima apontam para o


console.
1 Para utilizar as classes Writer e Reader
necessrio utilizar as classes de converso:
OutputStreamWriter e I nputStreamReader
Programao Orientada a Objetos
Flvio de Oliveira Silva

216

108

ENTRADA E SADA (I/ O)-Acesso Randmico


1

As classes vistas anteriormente utilizam acesso


sequencial aos dados
1 A classe RandomAccessFile permite o acesso ao
arquivo de forma randmica. Neste tipo de acesso
o arquivo se comporta como um longo array de
bytes localizado no disco. Um ndice (ponteiro do
arquivo) permite a manipulao em qualquer
posio vlida do arquivo.
1 Esta classe pode ser utilizada tanto para leitura
quando escrita.

Programao Orientada a Objetos


Flvio de Oliveira Silva

217

ENTRADA E SADA (I/ O)-Acesso Randmico


3

Criando um arquivo de acesso randmico(aleatrio)


RandomAccessFile(String name, String mode) A
string name contm o nome do arquivo e a string
mode contm o modo de manipulao do mesmo:
"r"
- somente leitura
"rw" - leitura e escrita
3 Mtodos principais:
void seek(long pos) - Posiciona o ponteiro na posio
pos. A posio inicial igual a 0.
long length() Retorna o comprimento do
arquivo em bytes
void writeBytes(String s) grava uma string como
uma sequncia de bytes
String readLine() - L uma linha de texto
Programao Orientada a Objetos
Flvio de Oliveira Silva

218

109

ENTRADA E SADA (I/ O) - EXCEES


1

A maioria dos mtodos existentes nas classes do


pacote java.io disparam excees cuja classe
base normalmente a classe I OException
1 Entre as sub classes I OException podemos citar:
EOFException; FileNotFoundException;
1 Dessa forma normalmente o cdigo envolvendo
operaes de entrada e saida quase sempre ir
utilizar o bloco try/ catch

Programao Orientada a Objetos


Flvio de Oliveira Silva

219

JAVA INTERFACE GRFICA

A Linguagem JAVA e o paradigma orientado a


objetos fornecem uma srie de recursos que
permitem a criao da interface grfica com
usurio (GUI)
Os conceitos da programao orientada
objetos como: Herana; Polimorfismo e
Sobrecarragamento entre outros permitem que
a programao seja feita utilizando uma srie de
classes e mtodos que esto disponveis
Rapidez e qualidade no projeto

Programao Orientada a Objetos


Flvio de Oliveira Silva

220

110

JAVA INTERFACE GRFICA


5

Podemos classificar as aplicaes em trs tipos:


2
APLICAES BASEADAS EM CONSOLE
2
APLICAES GRFICAS BASEADAS EM
JANELAS
2
APLICAES GRFICAS BASESADAS NA
INTERNET (APPLETs)
Maiores informaes

http://java.sun.com/docs/books/tutorial/uiswing/TOC.html

Programao Orientada a Objetos


Flvio de Oliveira Silva

221

JAVA
INTERFACE GRFICA
3

APLICAES BASEADAS EM CONSOLE


No possuem interface grfica
Utilizam o console do sistema
Interao feita atravs de texto apenas
Consiste de uma classe qualquer derivada de Object e
devem possuir a funo - public static void
main( String args[ ] )
Sada de dados
6
System.out

Entrada de dados (classes)


System.in
6
BufferedReader
6
InputStreamReader
6

Programao Orientada a Objetos


Flvio de Oliveira Silva

222

111

JAVA INTERFACE GRFICA


5

APLICAES BASEADAS EM JANELA WINDOW


Possuem interface grfica
2
Classe normalmente derivada de JFrame
(Window) ou ento JDialog (Caixa de
dilogo)
2

Este tipo de aplicao executada


diretamente sobre a plataforma grfica
(Windows; KDE; etc.)
Programao Orientada a Objetos
Flvio de Oliveira Silva

223

JAVA INTERFACE GRFICA


5

APLICAES BASEADAS EM JANELA WINDOW


Consiste de uma janela que possui borda, um
ttulo e botes (maximizar; minimizar; fechar;
etc.
JFrame Janela
JDialog Janela dependente de outra
JInternalFrame Janela interna a uma outra

Programao Orientada a Objetos


Flvio de Oliveira Silva

224

112

INTERFACE
GRFICA
5

A linguagem java possui dois pacotes para a


criao de interfaces grficas:
5 AWT (Abstract Windowing ToolKit) Conjunto
de classes para criao de aplicaes que usam
a interface grfica.
5 SWING Parte da JFC, toda escrita em java,
que implementa uma srie de componentes
grficos para interface com o usurio. Os
componentes podem ser utilizados em
multiplataformas. Esta biblioteca implementa
os componentes existentes no conjunto AWT
(Button; Scrollbar; Label; etc.) e outros como
(tree view; list box; tabbed panes; etc.)
Programao Orientada a Objetos
Flvio de Oliveira Silva

225

DOS COMPONENTES
8 HIERARQUIA
&ODVVHVGHILQLGDVSHORSDFRWH6ZLQJ LPSRUWMDYD[VZLQJ 
java.lang.Object

java.awt.component

java.awt.container

javax.swing.JComponent

javax.swing.text.JTextComponent

javax.swing.JTextField

javax.swing.JLabel

javax.swing.AbstractButton

javax.swing.JButton

Programao Orientada a Objetos


Flvio de Oliveira Silva

226

113

HIERARQUIA
DOS EVENTOS
8
&ODVVHVSDUDPDQLSXODRGHHYHQWRV
LPSRUWMDYDDZWHYHQW 
java.lang.Object

java.util.EventObject

java.awt.AWTEvent

java.awt.event.ActionEvent

Programao Orientada a Objetos


Flvio de Oliveira Silva

227

INTERFACE GRFICA- Window


7

ESTRUTURA DE UMA JANELA

CONTAINER Objeto que ir conter os


controles da interface do usurio. Para ser
visto o controle deve estar ligado a algum
container.
Programao Orientada a Objetos
Flvio de Oliveira Silva

228

114

INTERFACE GRFICA- Window


7
7

Uma aplicao sempre possui um container


principal que a raiz de todos os outros.
Pode ser adicionado ao container uma barra
de menus. Esta barra ser posicionada no
topo do mesmo
Para recuperar um container de um JFrame,
por exemplo, deve utilizar o seguinte mtodo:
Container c = getContentPane();

Programao Orientada a Objetos


Flvio de Oliveira Silva

229

INTERFACE GRFICA- Window


7

ESTRUTURA DE UMA JANELA - continuao

Existem vrios tipos de containers utilizados


pela linguagem Java.
Programao Orientada a Objetos
Flvio de Oliveira Silva

230

115

INTERFACE GRFICA- Window


7

Entre os tipos de containers podemos citar:


BorderLayout
8
FlowLayout
8
GridLayout
8
BoxLayout
8
CardLayout
8
GridBagLayout
Container facilita a disposio e o
gerenciamento dos objetos que fazem parte
da interface grfica, ao invs de informar a
posio especfica de cada objeto da
interface.
8

Programao Orientada a Objetos


Flvio de Oliveira Silva

231

INTERFACE GRFICA- LAYOUTS


7

Flow Layout
8
Componentes dispostos em uma linha,
sequencialmente da esquerda para direita
na ordem em que foram adicionados.

Caso o espao de uma linha no seja


suficiente, mltiplas linhas so utilizadas.
Programao Orientada a Objetos
Flvio de Oliveira Silva

232

116

INTERFACE GRFICA- LAYOUTS


7

Flow Layout

Os componentes podem ser dispostos da seguinte


forma:
CENTRALIZADOS (FlowLayout.CENTER );
ALINHADOS ESQUERDA (FlowLayout.LEFT)
ALINHADOS DIREI TA (FlowLayout.RIGHT)
public FlowLayout(int align, int hgap, int vgap)
align alinhamento dos componentes
hgap distncia na horizontal entre componentes
vgap distncia na vertical entre componentes

Programao Orientada a Objetos


Flvio de Oliveira Silva

233

INTERFACE GRFICA- LAYOUTS


7

Flow Layout Exemplo

...
//Recupera o container da janela (JFrame)
Container c = getContentPane();
//Ajusta o modo de gerenciamento
c.setLayout(new
FlowLayout(FlowLayout.CENTER,10,50));
//adiciona componentes(botes) ao container
btnAnt = new JButton("ANTERIOR");
c.add(btnAnt);
btnProx = new JButton("PRXIMO");
c.add(btnProx);
Programao Orientada a Objetos
Flvio de Oliveira Silva

234

117

INTERFACE GRFICA- LAYOUTS


7

Flow Layout Exemplo

//continua...
btnNew = new JButton("NOVO");
c.add(btnNew);
btnDelete = new JButton("APAGAR");
c.add(btnDelete);
bntOk = new JButton("OK");
c.add(bntOk);
...

Programao Orientada a Objetos


Flvio de Oliveira Silva

235

INTERFACE GRFICA- LAYOUTS


7

BorderLayout
8
Componentes dispostos cinco regies:
Norte(NORTH); Sul(SOUTH); Leste(EAST);
Oeste(WEST) e Centro (CENTER). Cada
regio pode conter no mximo um
componente.

Programao Orientada a Objetos


Flvio de Oliveira Silva

236

118

INTERFACE GRFICA- LAYOUTS


:

BorderLayout
8
Um Componente ocupa toda a rea de uma
regio.
8
Componente CENTRAL expande e ocupa reas
no utilizadas (LESTE e/ou OESTE). Se rea
centro no utilizada a mesma deixada vazia.

public BorderLayout(int hgap, int vgap)


hgap distncia na horizontal entre componentes
vgap distncia na vertical entre componentes

Programao Orientada a Objetos


Flvio de Oliveira Silva

237

INTERFACE
GRFICA- LAYOUTS
;
BorderLayout Exemplo

...
//Recupera o container da janela (JFrame)
Container c = getContentPane();
//Ajusta o modo de gerenciamento
c.setLayout(new BorderLayout(20,20));
btnNew = new JButton("WEST");
c.add(btnNew,BorderLayout.WEST);
btnDelete = new JButton("CENTER");
c.add(btnDelete,BorderLayout.CENTER);
bntOk = new JButton("SOUTH");
c.add(bntOk,BorderLayout.SOUTH);
...
Programao Orientada a Objetos
Flvio de Oliveira Silva

238

119

INTERFACE GRFICA- LAYOUTS


:

GridLayout
<
A rea dividida em retngulos iguais,
conforme o nmero de linhas e colunas
especificadas. Um nico componente ocupa
toda a rea deste retngulo

Programao Orientada a Objetos


Flvio de Oliveira Silva

239

INTERFACE GRFICA- LAYOUTS


=
=

GridLayout
Quando o nmero de linhas especificado o
nmero de colunas calculado automaticamente,
conforme a quantidade de objetos existentes. Se
o nmero de linhas igual a zero, a quantidade
de colunas respeitada.

public GridLayout(int rows, int cols,


int hgap, int vgap)
row nmero de linhas
cols nmero de colunas
hgap distncia na horizontal entre
componentes
vgap distncia na vertical entre componentes
Programao Orientada a Objetos
Flvio de Oliveira Silva

240

120

INTERFACE GRFICA- LAYOUTS


:

GridLayout Exemplo

...
//Recupera o container da janela (JFrame)
Container c = getContentPane();
//Ajusta o modo de gerenciamento
//Apesar de ser indiciado 7 colunas
//apenas 3 sero mostradas pois foi
//especificado o nmero de 2 linhas
c.setLayout(new GridLayout(2,7,10,10));
//continua...

Programao Orientada a Objetos


Flvio de Oliveira Silva

241

INTERFACE GRFICA- LAYOUTS


:

GridLayout Exemplo

btnAnt = new JButton("ANTERIOR");


c.add(btnAnt);
btnProx = new JButton("PRXIMO");
c.add(btnProx);
btnNew = new JButton("NOVO");
c.add(btnNew);
btnDelete = new JButton("APAGAR");
c.add(btnDelete);
bntOk = new JButton("OK");
c.add(bntOk);
...
Programao Orientada a Objetos
Flvio de Oliveira Silva

242

121

INTERFACE
GRFICA- PAINIS
>
>

Normalmente utiliza-se em uma interface mais de


um gerenciador de layout.
O componente JPanel muito til para organizar
os elementos da interface. JPanel semelhante a
um container onde possvel estabelecer como ser
seu layout interno
public JPanel(LayoutManager layout)

Programao Orientada a Objetos


Flvio de Oliveira Silva

243

INTERFACE
GRFICA- PAINIS
...
super("Layout - JPanel - DEMONSTRAO");
Container c = getContentPane();
brdLayout = new BorderLayout();
c.setLayout(brdLayout);
pnlPainel = new JPanel();
c.add(pnlPainel, BorderLayout.CENTER);
pnlPainel.setBackground(Color.blue);
pnlBotes = new JPanel(new
GridLayout(0,5,20,20));
btnAnt = new JButton("ANTERIOR");
//continua...
Programao Orientada a Objetos
Flvio de Oliveira Silva

244

122

INTERFACE GRFICA- PAINIS

pnlBotes.add(btnAnt);
btnProx = new JButton("PRXIMO");
pnlBotes.add(btnProx);
btnNew = new JButton("NOVO");
pnlBotes.add(btnNew);
bntOk = new JButton("OK");
pnlBotes.add(bntOk);
c.add(pnlBotes, BorderLayout.SOUTH);
pnlBotes.setBackground(Color.red);
...

Programao Orientada a Objetos


Flvio de Oliveira Silva

245

INTERFACE GRFICA- EVENTOS

EVENTO Ao que ocorre e que pode


percebida por um objeto
Quando ocorre um evento o objeto que o
recebeu notificado. Caso o objeto oferea uma
resposta ao tipo de evento recebido, o evento
ento ser tratado pelo objeto
Para se trabalhar com eventos necessrio:
:
Declarar uma classe (handler) que ser
responsvel pelo tratamento.
:
Implementar o tratamento ( handler) para o
evento na classe criada
:
Associar um ouvinte ( listener) para um
determinado tipo de evento
Programao Orientada a Objetos
Flvio de Oliveira Silva

246

123

INTERFACE GRFICA- EVENTOS

Tipos de eventos

AO PRODUTORA DO EVENTO
CLASSE OUVINTE (LISTENER)
Clique de um boto; Digitar <enter> aps digitar um texto; escolher um item de um menu
ActionListener
Fechar uma janela; Minimizar; Restaurar o tamanho original; Ativar; Destativar; etc.
WindowListener
Pressionar o boto do mouse; Soltar o boto; Passar o Mouse sobre um componente
MouseListener
Movimentar o mouse; Arrastar (clicar e movimentar)
MouseMotionListener
Tornar um componente vsivel; Alterar a posio de um componente
ComponentListener
Componente recebe o foco (cursor) do teclado; Componente perde o foco
FocusListener
Elemento selecionado em uma lista alterado (JList; Jtable)
ListSelectionListener
Propriedade de um componente alterada
PropertyChangeListener
Utilizao de teclado (Pressionar uma tecla; digitar uma tecla; soltar uma tecla
KeyListener
Para maiores informaes - veja a classe ouvinte base

Programao Orientada a Objetos


Flvio de Oliveira Silva

EventListener

247

INTERFACE GRFICA- EVENTOS


?

EXEMPLO Clique de um boto


//Para tratar um clique de boto ento ser
//utilizada a interface ActionListener
class ButtonHandler implements ActionListener{
//A interface ActionListener possui um mtodo
//actionPerformed que ser disparado sempre
//que o evento ocorrer
public void actionPerformed(ActionEvent e){
String s = "Boto NEW pressionado. Por
enquanto s fao isto!";
//Mostra uma mensagem na tela
JOptionPane.showMessageDialog(null,s);
}
}
...
Programao Orientada a Objetos
Flvio de Oliveira Silva

248

124

INTERFACE GRFICA- EVENTOS


EXEMPLO Clique de um boto

//Utilizao da classe ButtonHandler


private JButton bntOk;
...
//Objeto que ser responsvel por tratar
//o evento (handler)
ButtonHandler handler = new ButtonHandler();
//Associar um ouvinte de eventos ao
//objeto da interface grfica
btnNew.addActionListener(handler);
...
Programao Orientada a Objetos
Flvio de Oliveira Silva

249

INTERFACE
GRFICA- EVENTOS
@
EXEMPLO Clique de um boto
JButton btnOk
Classe Objeto
(JComponent)

listenerlist
handler

Tratamento handler
CLASSE TRATAMENTO
(implements ....)
handlerMethod

Na inicializao da aplicao o objeto criado


(Classe Objeto). Alm disso criado o objeto
que ser responsvel por tratar um determinado
tipo de evento (Classe Tratamento)
O Objeto criado para tratamento associado ao
objeto. A lista de ouvintes do objeto ir ento
possuir um instncia do objeto.
Programao Orientada a Objetos
Flvio de Oliveira Silva

250

125

INTERFACE
GRFICA- EVENTOS
@
@

@
@
@
@
@

EXEMPLO Clique de um boto


Quando o evento for disparado, o componente
notificado do evento que ocorreu. Caso o objeto
possua algum tratamento para aquele tipo de
evento o mtodo para tratamento ser ento
executado (handlerMethod)
No exemplo do boto:
Classe tratamento class ButtonHandler
implents actionListener
Objeto JButton btnOk
Objeto Tratamento ButtonHandler handler
handlerMethod public void
actionPerfomed(ActionEvent e)
Programao Orientada a Objetos
Flvio de Oliveira Silva

251

INTERFACE GRFICA- EVENTOS


@

Para o tratamento de eventos existem dois


conceitos importantes normalmente so utilizados
@
CLASSE I NTERNA Neste caso a classe para
o tratamento dos eventos criada internamente
definio da classe que contm a interface.
@
Esta classe no pode ser acessada
externamente.
@
Neste caso possvel acessar os objetos da
interface grfica dentro da definio da classe
que ir tratar os eventos

Programao Orientada a Objetos


Flvio de Oliveira Silva

252

126

INTERFACE GRFICA- EVENTOS

public class JButtonSample2 extends JFrame{


private JButton btnProx, btnAnt, btnNew,
btnDelete, btnOk;
public JButtonSample2(){
...
ButtonHandler handler = new
ButtonHandler();
btnNew.addActionListener(handler);
...
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

253

INTERFACE GRFICA- EVENTOS

//Classe Interna para tratamento de eventos


class ButtonHandler implements
ActionListener{
public void actionPerformed(ActionEvent e)
{
...
if (obj == btnNew) //btnNew pode ser
acessado na classe interna!
s = "Boto NEW pressionado. Por
enquanto s fao isto!";
}
}
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

254

127

INTERFACE
GRFICA- EVENTOS
A

CLASSE ANMI MA Neste caso a classe para o


tratamento dos eventos criada internamente
definio da classe que contm a interface. Porm
esta classe no possui nome. Esta classe no pode
ser acessada externamente.
Esta classe permite que os objetos da interface
sejam acessados dentro da mesma

public class JButtonSample3 extends JFrame{


private JButton btnProx, btnAnt, btnNew,
btnDelete, btnOk;
...
public JButtonSample3(){
//CLASSE ANNIMA para o tatamento de
//eventos
Programao Orientada a Objetos
Flvio de Oliveira Silva

255

INTERFACE GRFICA- EVENTOS

ActionListener handler = new ActionListener(){


public void actionPerformed(ActionEvent e){
...
if (obj == btnNew) //btnNew pode ser
acessado na classe annima!
s = "Boto NEW pressionado. Por
enquanto s fao isto!";
...
}
};
btnNew.addActionListener(handler);
...
}
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

256

128

INTERFACE
GRFICA- EVENTOS
?

EVENTOS DE MOUSE
Utilizam as seguintes interfaces: MouseListener e
MouseMotionListener
?
MouseListener Interage com os seguintes eventos:
?

DB CFEHGJILKLMHN O MQPSRSEVENTO
CUT VSW ISGJGXPRODUZIDO
O CFYHPSRSCLIUN O ZHI[W PSRSCS\]GJC[ZSW I
ES^_MQC[^`VXC[YHI[YQa I
Mouse entra na rea de um componente
Mouse sai da rea de um componente
Mouse? pressionado sobre um componente

MTODO PARA O TRATAMENTO DO EVENTO

void mouseClicked(MouseEvent e)
void mouseEntered(MouseEvent e)
void mouseExited(MouseEvent e)
void mousePressed(MouseEvent e)

Para associar o tratamento de eventos de Mouse a um


void mouseReleased(MouseEvent e)
Mouse liberado
sobre um componente
componente
deve ser utilizado o mtodo
addMouseListener

Programao Orientada a Objetos


Flvio de Oliveira Silva

257

INTERFACE GRFICA- EVENTOS


@

EVENTOS DE MOUSE
@
Todos os mtodos acima devem estar presentes
mesmo que no estejam sendo utilizados neste
caso o cdigo ser apenas - { }
@
As informaes que o mtodo pode utilizar,
como, por exemplo, a posio do mouse, esto
contidas no objeto - MouseEvent e
Se o mouse pressionado sobre um boto os
seguintes eventos so disparados:
0286(B35(66('
0286(B5(/($6('0286(B&/,&.('
Programao Orientada a Objetos
Flvio de Oliveira Silva

258

129

INTERFACE GRFICA- EVENTOS

EVENTOS DE MOUSE
b
MouseMotionListener Interage com os seguintes
eventos:
EVENTO PRODUZIDO

MTODO PARA O TRATAMENTO DO EVENTO

0RXVHFOLFDGRVREUHXPFRPSRQHQWHHHQWR
void mouseDragged(MouseEvent e)
DUUDVWDGR
Mouse foi movimentado sobre um componente
void mouseMoved(MouseEvent e)
mas nenhum boto clicado

Para associar o tratamento de eventos de


movimento do Mouse a um componente deve ser
utilizado o mtodo addMouseMotionListener
b

As informaes que o mtodo pode utilizar, como,


por exemplo, a posio do mouse, esto contidas
no objeto - MouseEvent e
Programao Orientada a Objetos
Flvio de Oliveira Silva

259

INTERFACE
GRFICA- EVENTOS
c

EVENTOS DE MOUSE Exemplo


public class JButtonEvents extends JFrame{
private JLabel lblMouseStatus,
lblMouseMsg;
public JButtonEvents(){
EventHandler handler = new
EventHandler();
this.addMouseListener(handler);
...
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

260

130

INTERFACE GRFICA- EVENTOS

class EventHandler implements


MouseListener, ...{
public void mouseClicked(MouseEvent e){
String s = "Mouse foi clicado no ponto (" + e.getX() + " , " + e.getY() + ")";
lblMouseMsg.setText(s);
System.out.println(s);
}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){...}
public void mouseReleased(MouseEvent e){...}
...
}
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

261

INTERFACE GRFICA- EVENTOS


b

EVENTOS DE JANELA (WINDOW)


b
WindowListener Interage com os seguintes
eventos:
EVENTO PRODUZIDO

dQegfXhFi ejh]kQl mjeSl n oHeqpsrFt`kHhvu eqpsrjwXt[x kQrgxXy]rjl h]wXi e]y]r


h]kQl m{zSr]kXn wSn rFfXe[y]rUkQrF|]x hje~}`h]kS}`e
dQegfXhFi eL rFnwQrF}Uz]i hSl eF}`hgfHl hj h]wXSe]y]eJDn kSzXeFx e]y]r
y]hgzXrFn kFtShjeDu eFfXhgi eL rgnwQrF}Uz]i h]l eF}LhFfHl hUy]h]kQl x t]n y]e
dQegfXhFi ejh]kQl m{z]x h]kJl h[keUkQhFxX h]wXSe]y]esz[x n }`hgn x r
hSoXhFfHl rjejkHhFxXygn kXzXegx e]y[rjeFfXl h]ky]hL h[wXXegxXeu eFfXhgi e
dQegfXhFi ejh]kQl mjy]h[kQeSl n oHe]y[eqs`t]x kQrgxXy]rjl h]wSi e]y]rUh]kJl m
zXr[kXn wXn rFfXe[y]rjkHrF|]x hUrFtXl x eu egfXhFi eUy]rUkXn kJl hF}`e
dQegfXhFi e{}jn f]n }jn He]y]ep oHrgi l eje[rjkQhgtl eg}`eFf[Xrjrgx n Fn fSeFi
n kXzXegx e]y]rUFtSeFfXy]rUejdHeFfXhgi ej~}jn f[n }jn Xe]y]e
n kXzXegx e]y]rUe{z[x n }`hgn x eLoXhS`FtXh~t]}`eDu eFfShFi ejkHh
l rgx fXejoSn k] oXhFi

MTODO PARA O TRATAMENTO DO EVENTO

void windowActivated(WindowEvent e)
void windowClosed(WindowEvent e)
void windowClosing(WindowEvent e)
void windowDeactivated(WindowEvent e)
void windowDeiconified(WindowEvent e)
void windowIconified(WindowEvent e)
void windowOpened(WindowEvent e)

Programao Orientada a Objetos


Flvio de Oliveira Silva

262

131

INTERFACE GRFICA- EVENTOS


b

EVENTOS DE JANELA (WINDOW)


Para associar o tratamento de eventos
necessrio utilizar o mtodo
addWindowListener

Todos os mtodos acima devem estar presentes


mesmo que no estejam sendo utilizados neste
caso o cdigo ser apenas - { }
As informaes que o mtodo pode utilizar,
como o estado da janela, por exemplo, esto
contidas no objeto - WindowEvent e

Programao Orientada a Objetos


Flvio de Oliveira Silva

263

INTERFACE GRFICA- EVENTOS

EVENTOS DE JANELA (WINDOW) Exemplo


public class JButtonEvents extends JFrame{
public JButtonEvents(){
//Ser associado janela um ouvinte de
eventos de Janelas
this.addWindowListener(handler);
...
}
class EventHandler implements WindowListener,
...{
...
public void windowClosed(WindowEvent e){}
public void windowActivated(WindowEvent e){
System.out.println("Janela ativada!);}
//continua...
Programao Orientada a Objetos
Flvio de Oliveira Silva

264

132

INTERFACE GRFICA- EVENTOS

EVENTOS DE JANELA (WINDOW) Exemplo


public void windowDeactivated(WindowEvent e){
System.out.println("Janela desativada!);}
public void windowDeiconified(WindowEvent e){
System.out.println("O Tamanho Original
restaurado!"; }
public void windowIconified(WindowEvent e){
System.out.println("Janela foi
minimizada!");}
public void windowOpened(WindowEvent e){
//JOptionPane.showMessageDialog(null,"A
janela foi aberta!");}
}
...
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

265

INTERFACE GRFICA- EVENTOS

CLASSES ADAPTADORAS
b
Todos os mtodos definidos nas interfaces para
tratamento de eventos devem ser codificados,
pois interface possui somente a assinatura do
mtodo.
b
Mtodo no utilizado necessita pelo menos da
instruo { }
b
Uma forma de resolver este problema a
utilizao de classes Adaptadoras. So classes
so abstratas que possuem todos os mtodos
declarados um um cdigo do tipo { }
Programao Orientada a Objetos
Flvio de Oliveira Silva

266

133

INTERFACE GRFICA- EVENTOS

CLASSES ADAPTADORAS
Para utilizar o tratamento de eventos a partir de
classes adaptadoras basta derivar a classe
adaptadora correspondente e ento redefinir
apenas os mtodos necessrios. Esta classe pode
tratar somente um tipo de evento. Exemplo:
class EventHandler extends MouseAdapter
b

INTERFACE CLASSE PARA TRATAMENTO DE EVENTOS

CLASSE ADAPTADORA

MouseListener
MouseMotionListener
WindowListenter
FocusListener
KeyListener
ComponentListener
ContainerListener

MouseAdapter
MouseMotionAdapter
WindowAdapter
FocusAdapter
KeyAdapter
ComponentAdapter
ContainerAdapter

Programao Orientada a Objetos


Flvio de Oliveira Silva

267

INTERFACE
GRFICA- JLABEL
c

Consiste de um rtulo. Pode conter um texto e/ ou uma


imagem associada. No pode ser selecionado. Utilizado
apenas para exibir informaes. O Label pode possui um
dica (tooltip) associado ao mesmo. possvel associar um
texto HTML a um label
c
Construtor
JLabel(Icon image) Cria um label apenas com um
cone
JLabel(String text) Cria um label com um
determinado texto
JLabel(String text, Icon icon,
int horizontalAlignment)
Cria um label, utilizando um texto; um imagem e um
alinhamento horizontal (LEFT, CENTER, RIGHT)
Programao Orientada a Objetos
Flvio de Oliveira Silva

268

134

INTERFACE
GRFICA- JLABEL
c

Mtodos principais
public void setText(String text) Altera o texto
public String getText() Recupera o texto
c

Eventos principais
PropertyChangeListener; ComponentListener;
FocusListener; KeyListener; MouseListener

Programao Orientada a Objetos


Flvio de Oliveira Silva

269

JLABEL - Exemplo

...
//Cria um cone
Icon icnFace = new ImageIcon("C:\\FACE.gif");
//Cria um label e ajusta algumas propriedades
lblLabel1 = new JLabel("Proprietario");
lblLabel1.setToolTipText("Nome do Proprietrio
do veculo");
lblLabel2 = new JLabel("Proprietrio com cone",
icnFace, JLabel.CENTER);
//
lblLabel3 = new JLabel(icnFace);
lblLabel3.setToolTipText("Label sem o cone");
lblLabel3.setText("Ajusta o texto");
lblLabel3.setHorizontalAlignment(JLabel.RIGHT);
...
Programao Orientada a Objetos
Flvio de Oliveira Silva

270

135

INTERFACE
GRFICA- JTextField
c

Consiste de uma linha de texto que pode ser digitada e


editada. Quando a tecla < ENTER> pressionada um
actionEvent disparado. Outras classes:
JPasswordField, utilizado para entrada de senhas e
JFormattedTextField, que permite controlar o tipo de
caracter ser digitado (somente nmeros) e o uso de
mscaras.

Construtores principais
JTextField(int columns)- Cria um campo com um
nmero fixo de colunas
JTextField(String text) Cria e inicializa com um texto
JTextField(String text, int columns)- Cria um

campo, com inicializado com um texto e com um nmero fixo


de colunas(utilizado para calcular o tamanho)
Programao Orientada a Objetos
Flvio de Oliveira Silva

271

INTERFACE
GRFICA- JTextField

Mtodos principais
public void setText(String text) Altera o texto
public String getText() Recupera o texto
public void setFont(Font f) Ajusta o tipo de letra

(fonte) no campo
public void addActionListener(ActionListener l)

Eventos principais
PropertyChangeListener; ComponentListener;
FocusListener; KeyListener; MouseListener;
ActionListener

Programao Orientada a Objetos


Flvio de Oliveira Silva

272

136

JTextField - Exemplo

public class JTextFieldSample extends JFrame{


public JTextFieldSample(){
private JTextField txtCapital, txtJuros,
txtPrazo, txtValor;
...
txtCapital = new JTextField("Digite o
valor",20);
txtJuros = new JTextField(5);
EventHandler handler = new EventHandler();
txtPrazo.addActionListener(handler);
}
class EventHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
...
Programao Orientada a Objetos
Flvio de Oliveira Silva

273

JTextField - Exemplo

...
if (obj == txtPrazo) || (obj == btnCalcular)){
double dTotal;
String sCap, sJuros;
dTotal = calculaTotal(sCap,sJuros,
txtPrazo.getText());
txtValor.setText(Double.toString(dTotal));}
}

}
...
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

274

137

INTERFACE
GRFICA- JCheckBox

Consiste de um componente que pode estar selecionado


ou no. Caso esteja selecionado, mostra este estado
atravs de uma marca. Em um conjunto destes
componentes, mais de um pode estar selecionado. Para
se utilizar este componente em um menu, deve ser
utilizada a classe JToggleButton

Construtores principais
JCheckBox(String text)- Cria um checkbox no
selecionado e com um texto.
JCheckBox(String text, boolean selected)Cria um checkbox que pode estar selecionado ou no
JCheckBox(Icon icon, boolean selected)- Cria um
checkbox que possui um inicialmente somente um cone e
que pode estar selecionado ou no.
Programao Orientada a Objetos
Flvio de Oliveira Silva

275

INTERFACE GRFICA- JCheckBox

JCheckBox(String text, Icon icon, boolean


selected)- Cria um checkbox que possui um texto, um
cone e que pode ou no estar selecionado inicialmente

Mtodos Principais
public void setSelected(boolean b) Altera o
estado selecionado ou no sem no entanto disparar nenhum
evento
public boolean isSelected() Verifica se o checkbox
est ou no selecionado

Programao Orientada a Objetos


Flvio de Oliveira Silva

276

138

INTERFACE
GRFICA- JCheckBox

Eventos Principais
ActionListener;itemListener;
ComponentListener; FocusListener

Neste tipo de componente normalmente utilizada a


interface ItemListener para tratamento de eventos:
public void addItemListener(ItemListener l)

Um evento ocorre quando o estado do checkbox


alterado e neste caso o seguinte mtodo deve ser
codificado:
void itemStateChanged(ItemEvent e)

O mtodo int getStateChange() da classe


ItemEvent retorna se o checkBox est ou no selecionado
(ItemEvent.SELECTED)
Programao Orientada a Objetos
Flvio de Oliveira Silva

277

INTERFACE
GRFICA- JRadioButton

Consiste de um componente que pode estar selecionado


ou no. Caso esteja selecionado, mostra este estado
atravs de uma marca. Normalmente em um cojunto
destes componentes, somente um pode estar selecionado
ao mesmo tempo, sendo assim deve ser utilizado um
objeto da classe ButtonGroup para criar o
relacionamento entre estes botes

Construtores principais
JRadioButton(String text)- Cria boto com ttulo
JRadioButton(String text, boolean selected)Boto pode estar selecionado ou no
JRadioButton(Icon icon, boolean selected)Cria um boto que possui um inicialmente somente um cone
e que pode estar selecionado ou no
Programao Orientada a Objetos
Flvio de Oliveira Silva

278

139

INTERFACE GRFICA- JRadioButton

JRadioButton(String text, Icon icon, boolean


selected)- Cria um boto que possui um texto, um
cone e que pode ou no estar selecionado inicialmente

Mtodos Principais
public void setSelected(boolean b) Altera o
estado selecionado ou no sem no entanto disparar nenhum
evento
public boolean isSelected() Verifica se o boto
est ou no selecionado

Eventos Principais
ActionListener;ComponentListener;
FocusListener; ItemListener (normalmente
utilizado)
Programao Orientada a Objetos
Flvio de Oliveira Silva

279

INTERFACE
GRFICA - JComboBox

Consiste de uma lista de itens onde possvel a seleo


de um nico item. Somente o item selecionado visvel.
O ComboBox pode ser editvel ou no.

Construtores principais
JComboBox()- Cria um combo box, com uma lista vazia.
JComboBox(Object[] list)- Cria um ComboBox, onde

a lista inicializada comum array de objetos. Um exemplo


seria um vetor do tipo String[ ] .
JComboBox(Vector list)- Cria um ComboBox, onde a
lista inicializada com um vetor. Neste caso utilizada a
classe Vector que representa um vetor de tamanho
varivel e que pode conter qualquer tipo de objeto, sendo
pois de grande flexibilidade
Programao Orientada a Objetos
Flvio de Oliveira Silva

280

140

INTERFACE
GRFICA - JComboBox

Mtodos principais
public void setSelectedIndex(int anIndex)

Ajusta qual elemento da lista est selecionado. O primeiro


elemento possui o ndice 0 e um ndice igual a 1, indica
que nenhum elemento est selecionado.
public void setEditable(boolean aFlag) Permite
que o Combo Box seja editvel, ou seja, possvel
acrescentar itens lista.
public void addItem(Object anObject) Adiciona
um novo item lista
public Object getSelectedItem()- Retorna o objeto
atualmente selecionado
Programao Orientada a Objetos
Flvio de Oliveira Silva

281

INTERFACE GRFICA - JComboBox

Eventos principais
ActionListener;ItemListener
ActionListener Disparado quando feita um
interao com a lista de itens ou ento quando < ENTER>
pressionado em um combo editvel.
public void addActionListener(ActionListener l)

Programao Orientada a Objetos


Flvio de Oliveira Silva

282

141

INTERFACE GRFICA - JComboBox

ItemListener Disparado quando o item selecionado


alterado. Quando um elemento j selecionado novamente
selecionado, nenhum evento disparado. Quando a seleo
sai de um item e vai para outro, dois eventos so disparados.
public void addItemListener(ItemListener
aListener)

Programao Orientada a Objetos


Flvio de Oliveira Silva

283

JComboBox Exemplo

public class JComboBoxSample extends JFrame{


protected JComboBox cmbMetodo;
protected String[] aMetodos = {"Juros
Simpes", "Juros Compostos"};
protected String sMetodoCalculo;
...
//Cria o combo Box e inicializa a lista com
os elementos do array
cmbMetodo = new JComboBox(aMetodos);
//Tratamento eventos
EventHandler handler = new EventHandler();
cmbMetodo.addActionListener(handler);
cmbMetodo.addItemListener(handler);
class EventHandler implements
ActionListener, ItemListener{
Programao Orientada a Objetos
Flvio de Oliveira Silva

284

142

JComboBox Exemplo

public void actionPerformed(ActionEvent e){


...
if ((obj ==
txtPrazo)||(obj==btnCalcular)||(obj ==
cmbMetodo))
setTxtValor(dTotal);
}
public void itemStateChanged(ItemEvent e){
if (e.getSource() == cmbMetodo){
sMetodoCalculo =
(String)cmbMetodo.getSelectedItem();
}
}
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

285

INTERFACE
GRFICA - JList

Consiste de uma lista de itens onde possvel a seleo


de um ou mais itens. Caso a lista tenha vrios itens
barras de rolagens devem ser acrescentadas ao
componente.

Construtores principais
JList()- Cria um lista de seleo vazia.
JList(ListModel dataModel)- Cria uma lista onde os
elementos esto contidos em um objeto que implementa a
interface ListModel. Um exemplo a classe
DefaultListModel. Este construtor deve ser utilizado

quando se deseja adicionar ou remover itens da lista um


vetor de objetos. Um exemplo seria um vetor do tipo String[ ] .

Programao Orientada a Objetos


Flvio de Oliveira Silva

286

143

INTERFACE GRFICA - JList

JComboBox(Vector list)- Cria um ComboBox, onde a

lista inicializada com um vetor. Neste caso utilizada a


classe Vector que representa um vetor de tamanho
varivel e que pode conter qualquer tipo de objeto, sendo
pois de grande flexibilidade

Mtodos principais
public int getSelectedIndex()- Retorna o ndice o
primeiro elemento selecionado. Caso nenhum elemento
esteja selecionado retorna 1.
public int[] getSelectedIndices()- Retorna um
vetor com o nmero dos ndices de todos os elementos
selecionados
Programao Orientada a Objetos
Flvio de Oliveira Silva

287

INTERFACE GRFICA - JList

public void setSelectedIndex(int anIndex)


Ajusta qual elemento da lista est selecionado. O primeiro
elemento possui o ndice 0 e um ndice igual a 1, indica
que nenhum elemento da lista est selecionado.
public Object getSelectedValue()- Retorna o objeto

atualmente selecionado.
public void setSelectionMode(int
selectionMode)- Ajusta o modo de seleo da lista.
Este modo de seleo pode ser: SINGLE_SELECTION (apenas
um item por vez; SINGLE_INTERVAL_SELECTION (Um
intervalo com vrios itens pode ser selecionado)
MULTIPLE_INTERVAL_SELECTION (Vrios intervalos com
vrios itens podem ser selecionados).
Programao Orientada a Objetos
Flvio de Oliveira Silva

288

144

INTERFACE
GRFICA - JList

Eventos Principais
ListSelectionListener Ao utilizar esta interface a lista

ser notificada cada vezv que ouver uma alterao nos itens
selecionados na lista
public void addListSelectionListener(
ListSelectionListener listener)
MouseListener Permite que o componente seja
notificado sempre que eventos de
Mouse (clique; etc.) ocorrem sobre elementos da lista.
public void addMouseListener(MouseListener l)

Programao Orientada a Objetos


Flvio de Oliveira Silva

289

INTERFACE GRFICA - JList


JList - Exemplo

Programao Orientada a Objetos


Flvio de Oliveira Silva

290

145

INTERFACE
GRFICA - JTextArea

Consiste de uma rea que contm multiplas linhas de


texto, onde possvel a edio deste texto utilizando
mouse e teclado. No caso de vrias linhas barras de
rolagens devem ser acrescentadas.

Construtores principais
JTextArea()- Cria uma rea de texto
JTextArea(String text, int rows, int
columns)- Cria uma rea de texto que inicializada com a

string Text e que possui um nmero especificado de linhas


(row s) e colunas (columns)

Mtodos principais
public void setFont(Font f)- Ajusta a fonte de texto
que ser utilizada para mostrar o texto.
Programao Orientada a Objetos
Flvio de Oliveira Silva

291

INTERFACE GRFICA - JTextArea

public void setEditable(boolean b)- Permite que o


texto seja editvel.
public void setText(String t)- Ajusta o texto
contido no componente.
public String getSelectedText()- Retorna o texto
dentro do componente que est selecionado.
public void setLineWrap(boolean wrap)- Caso o
valor de w rap seja true permite que o texto seja quebrado
em vrias linhas, quando o tamanho do mesmo for maior que
a largura do componente.

Eventos
MouseListener; KeyListener
public void addMouseListener(MouseListener l)
public void addKeyListener(KeyListener l)
Programao Orientada a Objetos
Flvio de Oliveira Silva

292

146

INTERFACE
GRFICA - JTextArea

Para adicionar barras de rolagens (JSCrollPane) a um


rea de texto o seguinte cdigo deve ser utilizado.
//Cria texta area com 10 linha e 15 colunas
txaEditor = new JTextArea(10,15);
//Cria as barras de rolagens. A classe
//JSCrollPane fornece uma vista do componente
//juntamente com as barras de rolagens
JScrollPane scrTextArea = new
JScrollPane(txaEditor);
//A fim de exibir o componente necessrio
//adicionar o mesmo ao container, porm neste
//caso adicionado a vista do componente com
//as barras de rolagens
getContentPane().add(scrTextArea);
Programao Orientada a Objetos
Flvio de Oliveira Silva

293

JTextArea - Exemplo

public class JTextAreaSample extends JFrame{


protected JTextArea txaObservacoes;
...
public JTextAreaSample(){
...
//Cria a rea de texto
txaObservacoes = new JTextArea(3,80);
//Adiciona barras de rolagens rea de
texto
JScrollPane TxtAreaScrollPane = new
JScrollPane(txaObservacoes);
pnlObservacoes.add(TxtAreaScrollPane);
...
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

294

147

JTextArea - Exemplo

class EventHandler implements ActionListener{


public void actionPerformed(ActionEvent e){
...
if (obj == btnCalcular){
String sObs;
//Recupera o texto da rea de texto
sObs = txaObservacoes.getText();
...
}
}
}

}
Programao Orientada a Objetos
Flvio de Oliveira Silva

295

INTERFACE GRFICA - Menus

Para se trabalhar com menus, vrias classes devem ser


utilizadas:

JMenuBar Barra de menus. Normalmente uma janela


ou possui apenas um objeto deste tipo. Uma barra de
menus possui vrios objetos da classe Jmenu. Para
adicionar uma barra de menu a uma janela deve ser
utilizado o mtodo: public void
setJMenuBar(JMenuBar menubar)

JMenu Consiste de uma rea que mostrada assim


logo que clicada. Este objeto o menu propriamente
dito. Um menu contm vrios objetos da classe
JMenuItem. Caso um objeto seja classe seja adicionado
a outro objeto da classe JMenu cria-se um sub-menu.

JMenuItem Este objeto representa uma opo do


menu.
Programao Orientada a Objetos
Flvio de Oliveira Silva

296

148

INTERFACE
GRFICA - Menus

Construtores principais
JMenuBar() Cria uma barra de menu
JMenu(String s) Cria um menu, cujo nome dado pela

string s
JMenuItem(String text, int mnemonic) Cria um
item de menu, cujo nome dado pela string s e utiliza uma
tecla de atalho indicada pelo inteiro mnemonic

Mtodos principais
public JMenu add(JMenu c) Adiciona um menu a um
objeto JMenuBar
public JMenuItem add(JMenuItem menuItem)
Adiciona um item de menu a um objeto da classe JMenu
Programao Orientada a Objetos
Flvio de Oliveira Silva

297

JAVA INTERFACE GRFICA - Menus

Eventos
Os menus trabalham com eventos da mesma forma que os
Objetos da classe JButton (botes)
ActionListener Aes e cliques em itens de menu. A cada
item do menu (JMenuItem) deve ser associada uma ao
diferente atravs do mtodo:
public void addActionListener(ActionListener l)

Programao Orientada a Objetos


Flvio de Oliveira Silva

298

149

INTERFACE
GRFICA - Menus

Exemplo

JMenu

JMenuItem

JMenuBar

JMenuItem

JMenu

JMenuItem
JMenuItem
...
JMenuItem

Programao Orientada a Objetos


Flvio de Oliveira Silva

299

Menus - Exemplo

public class JMenuSample extends JFrame{


JMenuBar menuBar; JMenu menu, submenu;
JMenuItem menuItem, menuItemSimulacao,
mnuItmSobre;
public JMenuSample(){
menuBar = new JMenuBar();
setJMenuBar(menuBar);
menu = new JMenu("Operacoes");
menu.setMnemonic(KeyEvent.VK_O);
menuBar.add(menu);
menuItemSimulacao = new
JMenuItem("Simulao", KeyEvent.VK_S);
menu.add(menuItemSimulacao);
submenu = new JMenu("Outras Opes");
menuItem = newJMenuItem("Configuraes...");
Programao Orientada a Objetos
Flvio de Oliveira Silva

300

150

Menus - Exemplo

menuItem = new JMenuItem("Propriedades...");


submenu.add(menuItem);
menu.add(submenu);
//Um segundo menu ser criado
menu = new JMenu("Ajuda"); menuBar.add(menu);
menuItem = new JMenuItem("Ajuda do
aplicativo"); menu.add(menuItem);
mnuItmSobre = new JMenuItem("Sobre...");
menu.add(mnuItmSobre);
//Eventos
menuItemSimulacao.addActionListener(handler);
mnuItmSobre.addActionListener(handler);
...
}
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

301

CRIANDO UMA APPLET

Uma Applet um aplicativo grfico, criado na


linguagem java, que pode ser executado em um
navegador (Browser).

Possibilita um aumento das capacidades da


WWW uma vez que permite:
Animaes
Imagens com som
Efeitos grficos
Programas interativos, como jogos
Possibilitam a criao de conexes de rede
com o host de origem
Programao Orientada a Objetos
Flvio de Oliveira Silva

302

151

CRIANDO
UMA APPLET

public void init() - o primeiro mtodo


executado e executado apenas uma vez.
public void start() - executado toda vez
que o applet aparece no browser.
public void paint() - executado toda vez
que o applet aparece no browser. Recebe
umainstncia da classe Graphics. (Applet)
public void stop() - executado toda vez
que o applet passa a no ser exibido pelo browser.
public void destroy() - executado quando
o browser no precisa mais do applet.
Os mtodos acima podem ser especializados
conforme a necessidade no sendo obrigatria sua
presena.

Programao Orientada a Objetos


Flvio de Oliveira Silva

303

CRIANDO UMA APPLET

Sequncia de mtodos chamados pela Applet

Chama a Applet
mtodo init()

r de ixa a pg
wse
i na
o
r
B

Applet inicia a
mtodo start()
execuo
Incializa informaes
mtodo paint()
Bro
ina
wse
r re-v is i ta a pg

mtodo stop()

Programao Orientada a Objetos


Flvio de Oliveira Silva

mtodo destroy()

304

152

CRIANDO UMA APPLET

As applets podem ser criadas a partir da classe


Applet (java.applet.Applet) ou ento a
partir da classe JApplet
A classe JApplet (javax.swing.JApplet 
XPDHVSHFLDOL]DRGDFODVVH$SSOHWHSHUPLWH
DXWLOL]DRGRVFRPSRQHQWHV6:,1*SDUDD
FULDRGDLQWHUIDFHFRPXVXULR
7RGRVRVFRPSRQHQWHVHUHFXUVRVYLVWRVDW
DTXLSDUDDFULDRGHLQWHUIDFHGHXVXULR
SRGHPVHUXWLOL]DGRVSDUDDFULDRGHDSSOHWV
-$SSOHWV LQFOXVLYHPHQXV
Programao Orientada a Objetos
Flvio de Oliveira Silva

305

A CLASSE JApplet
Mtodos principais

public Container getContentPane() Recupera o


container principal da Applet
public URL getCodeBase() Recupera a URL onde a
applet est sendo executada, este mtodo pode ser utilizado
para carregar arquivos, de imagens, por exemplo.
Image image = getImage(getCodeBase(), "imgDir/ a.gif");
public void showStatus(String msg) Permite
mostrar na barra de status do nagevador uma mensagem de
texto.
public AudioClip getAudioClip(URL url, String
name) Retorna um objeto AudioClip(arquivo de som) que
pode pode ser executado. O arquivo se encontra na URL
especificada e possui o nome indicado pela String.
Programao Orientada a Objetos
Flvio de Oliveira Silva

306

153

A CLASSE JApplet
public Container getContentPane() Recupera o
container principal da Applet
public URL getCodeBase() Recupera a URL onde a
applet est sendo executada, este mtodo pode ser utilizado
para carregar arquivos, de imagens, por exemplo.
Image image = getImage(getCodeBase(), "imgDir/ a.gif");
public void showStatus(String msg) Permite
mostrar na barra de status do nagevador uma mensagem de
texto.
public AudioClip getAudioClip(URL url, String
name) Retorna um objeto AudioClip(arquivo de som) que
pode pode ser executado. O arquivo se encontra na URL
especificada e possui o nome indicado pela String.
Programao Orientada a Objetos
Flvio de Oliveira Silva

307

A CLASSE JApplet
public String getParameter(String name)
Retorna uma string que contm o valor de um parmetro que
foi passado para a applet atravs do cdigo HTML. O nome do
parmetro deve informado para o mtodo.
public Image getImage(URL url, String name)
Retorna um objeto do tipo Image que poder ser visualizado
na tela. O argumento URL equivale ao endereo do arquivo e
o argumento String representa seu nome.

Programao Orientada a Objetos


Flvio de Oliveira Silva

308

154

EXIBINDO UMA APPLET

A applet chamada a partir de um arquivo


HTML. Para isto utilizada a tag < applet>
Exemplo:
< html>
< applet code= AppletSample.class
width= 640
height= 240>
< / applet>
< / html>

O utilitrio AppletViewer(.exe), fornecido


juntamente com J2SDK, permite a visualizao
de applets independente do navegador

Programao Orientada a Objetos


Flvio de Oliveira Silva

309

EXIBINDO UMA APPLET


possvel passar parmetros para uma applet dentro
de um arquivo HTML. Isto pode ser feito da seguinte
forma:
/ / Cdigo HTML que chama a applet
< APPLET>
< APPLET CODE= "AudioApplet.class" WIDTH= 50 HEIGHT= 50>
< 3$5$01$0(= Arquivo VALUE= "AudioCom.au">
...
< / APPLET>
/ / Cdigo para recuperar os parmetros
this.getParameter("Arquivo") retorna o valor "AudioCom.au
Programao Orientada a Objetos
Flvio de Oliveira Silva

310

155

O QUE UMA APPLET NO PODE FAZER

Uma Applet no pode carregar bibliotecas ou


definir mtodos nativos (usam keyword
native)

Uma applet no pode ler ou escrever arquivos


no cliente que a est executando
No pode iniciar outros programas
No tem acesso a certas propriedades do
sistema
As restries de segurana acima no se
aplicam caso a applet seja carregada a partir do
sistema de arquivos local em um diretrio que
esteja presente na varivel CLASSPATH
Programao Orientada a Objetos
Flvio de Oliveira Silva

311

CRIANDO UMA APPLET Cdigo bsico

import java.applet.Applet;
import java.awt.Graphics;
public class AppletApp extends Applet{
public void paint (Graphics g){
g.drawString("AppletApp - derived from
Applet class",25,25);
}
}
//Utilizando a classe JApplet (Swing) como base
import javax.swing.JApplet;
import java.awt.Graphics;
public class JAppletApp extends JApplet{
public void paint (Graphics g){
g.drawString("JAppletApp - derived from
JApplet class",25,25);
}
Programao Orientada a Objetos
}
Flvio de Oliveira Silva
312

156

CRIANDO UMA APPLET Exemplo 2

import javax.swing.*;
import java.awt.*;
import java.net.*;
public class AppletVeiculo extends JApplet {
private int iPasso;
private final String sPasso= " Passo ";
private final String sMsg = "Executando
mtodo ";
private JPanel pnlBackGround;
private Container c;
String sMessage;
//continua...

Programao Orientada a Objetos


Flvio de Oliveira Silva

313

CRIANDO UMA APPLET Exemplo 2

public void init(){


iPasso = 1;
sMessage=sMsg + " INIT: " +sPasso +iPasso;
this.showStatus(sMessage);
System.out.println(sMessage);
iPasso++;
//Cria o Painel
pnlBackGround = new JPanel();
//Recupera o container
Container c = getContentPane();
}
//continua...
Programao Orientada a Objetos
Flvio de Oliveira Silva

314

157

CRIANDO UMA APPLET Exemplo 2


public void start(){
sMessage = sMsg +" START: "+sPasso+iPasso;
this.showStatus(sMessage );
System.out.println(sMessage);
URL urlCodeBase;
urlCodeBase = this.getCodeBase();
sMessage = "Codebase: " +
urlCodeBase.toString();
this.showStatus(sMessage);
System.out.println(sMessage);
iPasso++;
//Adiciona um painel vermelho ao container
Container c = getContentPane();
//continua...
Programao Orientada a Objetos
Flvio de Oliveira Silva

315

CRIANDO UMA APPLET Exemplo 2

c.setLayout(new BorderLayout());
//Ajusta a cor do Painel
pnlBackGround.setBackground(Color.RED);
//adiciona painel ao container
c.add(pnlBackGround,BorderLayout.CENTER);

}
public void paint(){
sMessage = sMsg+" PAINT: "+sPasso + iPasso;
this.showStatus(sMessage);
System.out.println(sMessage);
iPasso++;
}
//continua...
Programao Orientada a Objetos
Flvio de Oliveira Silva

316

158

CRIANDO UMA APPLET Exemplo 2

public void stop(){


sMessage = sMsg +" STOP: "+ sPasso +iPasso;
this.showStatus(sMessage);
System.out.println(sMessage);
iPasso++;
}
public void destroy(){
sMessage = sMsg+" DESTROY: "+sPasso+iPasso;
this.showStatus(sMessage );
System.out.println(sMessage );
iPasso++;
}

Programao Orientada a Objetos


Flvio de Oliveira Silva

317

JAVA JDBC

JDBC JAVA DATABASE CONNECTIVITY


Permite o acesso a banco de dados
Uma das formas de acesso utilizando o driver
JDBC-ODBC que permite a conexo atravs de
um DRIVER OBDC
O ODBC (Open Database Connectivity) um
padro para acesso aos banco de dados mais
utilizados no mercado: SQLSERVER; ORACLE;
MYSQL; POSTGRES; MS ACCESS;
COMO FUNCIONA
TIPOS DE DRIVERS
COMO UTILIZAR
Programao Orientada a Objetos
Flvio de Oliveira Silva

318

159

JAVA
JDBC

COMO FUNCIONA

Programao Orientada a Objetos


Flvio de Oliveira Silva

319

JAVA
JDBC

1.

2.

Os drivers baseados na tecnologia JBDC so


divididos em quatro tipos ou categorias.
Os drivers do tipo 1, podem ser utilizados sempre
que no houver um driver especfico para um
determinado banco de dados
JDBC-ODBC + ODBC driver: Java acessa o banco
atravs de drivers ODBC. O driver deve ser
carregado em cada cliente que realiza acesso ao
banco.
Driver Java com API-Nativa: Neste caso as
chamadas JDBC so convertidas diretamente em
chamadas para a API dos banco de dados. Neste
caso tambm necessrio que um cdigo binrio
especfico esteja presente no cliente
Programao Orientada a Objetos
Flvio de Oliveira Silva

320

160

JDBC TIPOS DE DRIVERS


3.

4.

Driver Java Puro, JDBC-Net : Este driver traduz


chamadas JDBC em chamadas para um protocolo
de Rede/ DBMS independente que em seguida
traduzido para o DBMS por um servidor. Este
Middleware permite que cliente java puros se
conectem com diferentes BD
Protocolo Nativo Driver Java Puro: Neste caso
as chamadas JDBC so convertidas diretamente
para o protocolo utilizado pelo DBMS, permitindo
uma chamada direta do cliente para o servidor. A
maioria destes drivers proprietrio.

Programao Orientada a Objetos


Flvio de Oliveira Silva

321

JDBC COMO UTILIZAR

OS seguintes passos so necessrios para utilizar a


tecnologia JDBC-ODBC
1. CRIANDO A CONEXO ODBC COMO BD
2. CARREGAR O DRI VER
3. CRI AR A CONEXO
4. CRI AR COMANDOS SQL ( STATEMENTS)
5. PROCESSAR COMANDOS
6. FI NALI ZAR A CONEXO COM O BANCO
DE DADOS
Os passos de 2 a 6, so executados diretamente no
cdigo java.
Programao Orientada a Objetos
Flvio de Oliveira Silva

322

161

JDBC CRIANDO A CONEXO COM O BD

Para utilizar os drivers do tipo 1, inicialmente


necessrio carregar o driver na mquina do
cliente, onde o aplicativo java ser utilizado.
Existem scripts para a instalao de drivers
ODBC. No windows a instalao de um driver
basicamente necessita de modificaes no
registro e a utilizao de Dlls especficas para
cada banco de dados.
No windows atravs do painel de controle
Fontes de dados OBDC possvel criar novas
conexes para os mais diversos banco de dados.

Programao Orientada a Objetos


Flvio de Oliveira Silva

323

JDBC CRIANDO A CONEXO COM O BD

Abaixo mostrado como criar uma fonte de dados


ODBC

Programao Orientada a Objetos


Flvio de Oliveira Silva

324

162

JDBC CRIANDO A CONEXO COM O BD

necessrio informar o nome da fonte de dados e


a localizao do banco de dados. Neste caso est
sendo utilizando o banco de dados Ms Access

Programao Orientada a Objetos


Flvio de Oliveira Silva

325

JDBC CRIANDO A CONEXO COM O BD

Ao clicar no boto Avanado... (mostrado na tela


anterior) possvel configurar o Nome de Logon e
senha utilizada pelo banco de dados

Programao Orientada a Objetos


Flvio de Oliveira Silva

326

163

JDBC CARREGANDO O DRIVER

O primeiro passo para trabalhar com o JBDC


carregar o driver
Inicialmente o driver deve ser carregado. No caso do
JDBC-ODBC isto feito da seguinte forma:
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver") ;
O cdigo acima deve estar dentro de um bloco
try/ catch.
A chamada acima cria uma instncia do driver e
registra o mesmo juntamente como DriverManager
Para a utilizao do JBDC necessrio o pacote:
import java.sql.* ;
Programao Orientada a Objetos
Flvio de Oliveira Silva

327

JDBC CRIANDO A CONEXO

Em seguida deve ser criada a conexo com o banco


de dados. Para isto utilizado o mtodo
getConnection da classe DriverManager.
connection = DriverManager.getConnection(sBdName,
sUserName, sPassword);
Quando o driver carregado uma instncia da classe
DriverManager criada.
A conexo retornada pelo mtodo j est aberta e
pronta para ser utilizada.

Programao Orientada a Objetos


Flvio de Oliveira Silva

328

164

JDBC Exemplos: Passo 2 e Passo 3

...
final String sBdName = "jdbc:odbc:JdbcDatasource";
protected Connection connection;
final String sUserName = "anonymous";
final String sPassword = "guest";
//Cria a conexo com o banco de dados
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connection = DriverManager.getConnection
(sBdName, sUserName, sPassword);
}
catch (ClassNotFoundException clex){
...
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

329

JDBC CRIANDO COMANDOS SQL

Um comando SQL consiste em um objeto da classe


Statement.
O primero passo para executar um comando criar
um objeto da classe Statement. Isto deve ser feito a
partir da conexo criada anteriormente:
statement = connection.createStatement( ) ;
Para executar um SELECT deve ser utilizado o
mtodo executeQuery(), conforme mostrado abaixo:

public ResultSet executeQuery(String sql)


throws SQLException

Para realizar uma modificao (INSERT; DELETE;


UPDATE) no banco deve ser utilizado o mtodo
public int executeUpdate(String sql)
throws SQLException
Programao Orientada a Objetos
Flvio de Oliveira Silva

330

165

JDBC Exemplo: Passo 4

...
//Cria um comando SQL
Statement statement;
//Cria um ResultSet
ResultSet resultset;
try{
statement = connection.createStatement();
resultset = statement.executeQuery(sSqlCommand);
//displayResultSet(resultset);
statement.close();
}
catch (SQLException sqlex){
...
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

331

JDBC PROCESSANDO COMANDOS

Comandos o tipo SELECT retornam um objeto da


classe ResultSet.
Este objeto representa uma tabela e mantm um
cursor apontando para uma linha de dados, alm de
informaes sobre os campos da tabela.
Inicialmente o cursor est posicionado antes da
primeira linha. Para obter o primeiro registro
necessrio utilizar o mtodo
public boolean next() throws
SQLException
Para obter informaes sobre a estrutura da tabela
(nome; tipo e nmero de campos) deve ser utilizado
um objeto do tipo ResultSetMetaData.
Programao Orientada a Objetos
Flvio de Oliveira Silva

332

166

JDBC PROCESSANDO COMANDOS

A figura abaixo mostra um esquema do ResultSet


Para obter todos os dados de um ResultSet
necessrio percorrer todas as linhas, obtendo a
informao de todas as colunas daquela linha

Programao Orientada a Objetos


Flvio de Oliveira Silva

333

JDBC PROCESSANDO COMANDOS

Mtodos para manipulao do cursor


public boolean next() throws
SQLException Move prxima linha
public boolean previous() throws
SQLException Move para a linha anterior
public boolean isLast() throws
SQLException Verifica se a linha a ultima

Para obter o ResultSetMedaData o seguinte mtodo


do ResultSet deve ser utilizado:
public ResultSetMetaData getMetaData()
throws SQLException
Programao Orientada a Objetos
Flvio de Oliveira Silva

334

167

JDBC PROCESSANDO COMANDOS

A partir do ResulSetMetaData possvel obter o


nmero, o tipo e o nome das colunas da tabela:
public int getColumnCount()
throws SQLException Recupera o nmero de
colunas do ResultSet
public int getColumnType(int column)
throws SQLException Recupera o tipo de dado
contido na coluna.
public String getColumnName(int column)
throws SQLException Recupera o nome da
Coluna
Os tipos das colunas so representados por um
objeto da classe Types.
Programao Orientada a Objetos
Flvio de Oliveira Silva

335

JDBC Exemplo: Passo 5

...
//coloca o cursor no primeiro registro
boolean moreRecords;
//Como inicialmente o cursor esta antes da
//primeira linha, ento deve ser movido,
//inicialmente para a primeira
moreRecords = rs.next();
if (!moreRecords){
JOptionPane.showMessageDialog(null,"Fim dos
registros");
return;
}
//Vetor que ir conter campos(colunas)e as linhas
Vector colunas = new Vector();
Vector linhas = new Vector();
Programao Orientada a Objetos
Flvio de Oliveira Silva

336

168

JDBC Exemplo: Passo 5

//continua...
Vector linha;
try{
//obtem o nome dos campos da tabela
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount();
++i){
colunas.addElement(rsmd.getColumnName(i));
}
//obtem os dados de cada campo
do {
linha = getRowData(rs, rsmd);
linhas.addElement(linha);
} while (rs.next());
Programao Orientada a Objetos
Flvio de Oliveira Silva

337

JDBC
Exemplo: Passo 5
//continua...
//Adiciona tabela ao JFrame
table = new JTable(linhas,colunas);
JScrollPane scrollTable = new
JScrollPane(table);
getContentPane().add(scrollTable,
BorderLayout.CENTER);
//Reposiona os componentes no container
validate();
}
catch (SQLException sqlex){
JOptionPane.showMessageDialog(null,
sqlex.getMessage());
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

338

169

JDBC Exemplo: Passo 5

public Vector getRowData(ResultSet rs,


ResultSetMetaData rsmd) throws SQLException
{
Vector linhaAtual = new Vector();
for (int i = 1; i <= rsmd.getColumnCount();
++i){
switch (rsmd.getColumnType(i)){
case Types.VARCHAR:
linhaAtual.addElement(rs.getString(i));
break;
case Types.INTEGER:
linhaAtual.addElement(newLong(
rs.getLong(i)));
break;
//continua...
Programao Orientada a Objetos
Flvio de Oliveira Silva

339

JDBC
Exemplo: Passo 5
case Types.DOUBLE:
linhaAtual.addElement(newDouble(
rs.getDouble()));
break;
default:
JOptionPane.showMessageDialog(null,"Tipo
no suportado"+ rsmd.getColumnTypeName(i));
break;
}
}
return linhaAtual;
}
Programao Orientada a Objetos
Flvio de Oliveira Silva

340

170

JDBC FINALIZANDO A CONEXO

Aps o processamento a conexo com o banco de


dados, que foi criada inicialmente deve ser fechada.
Para isto utilizado o seguinte mtodo:
public void close() throws SQLException

Programao Orientada a Objetos


Flvio de Oliveira Silva

341

171