Escolar Documentos
Profissional Documentos
Cultura Documentos
Orientado
a
Objetos
Centro
de
Inform-ca
Universidade
Federal
de
Pernambuco
Sistemas
de
Informao
Vinicius
Cardoso
Garcia
vcg@cin.ufpe.br
2011
Vinicius
Cardoso
Garcia
Agenda
Obje-vos,
princpios
e
padres
Herana
e
polimorsmo
Excees
Interfaces
e
classes
abstratas
Converso
e
genricos
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
Princpios de projeto OO
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
Abstrao
Decomposio
do
sistema
em
partes
fundamentais
descritas
por
uma
linguagem
simples
e
precisa
Tipos
Abstratos
de
Dados
(TAD)
O
que
cada
operao
faz,
mas
no
como
faz
Em
Java
um
TAD
pode
ser
expresso
por
uma
interface
e
materializado
por
uma
classe
Encapsulamento
Os
diferentes
componentes
de
um
sistema
no
devem
revelar
detalhes
de
suas
respec-vas
implementaes
Oferece
liberdade
na
implementao
Restrio:
manter
a
interface
abstrata
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
Modularidade
Organizar
os
diferentes
componentes
do
sistema
Diviso
dos
componentes
do
sistema
em
unidades
funcionais
separadas
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
Organizao hierrquica
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
Padres
de
Projeto
Soluo
para
um
determinado
problema
de
projeto
de
sobware
epico
A-vidade
para
casa:
pesquisar
sobre
padres
de
projeto
Exemplos,
onde
e
como
podem
ser
u-lizados
Benehcios,
vantagens
e
desvantagens
Erich
Gamma,
Richard
Helm,
Ralph
Johnson,
John
Vlissides.
Design
Pajerns:
Elements
of
Reusable
Object-Oriented
Sobware.
1
ed.
Estados
Unidos
da
Amrica:
Addison-Wesley,
1995.
ISBN
0-201-63361-2
Algoritmos
e
Estrutura
de
Dados
Projeto
Orientado
a
Objetos
2011
Vinicius
Cardoso
Garcia
Herana
Projeto
de
classes
genricas
que
podem
ser
especializadas
em
classes
mais
par-culares
Reuso
de
cdigo
Classe
base
ou
superclasse
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
10
Polimorsmo
Muitas
formas,
ou
seja,
a
habilidade
de
uma
varivel
de
objeto
assumir
diferentes
formas
Sobrecarga
Mesmo
mtodo
com
diferentes
formas
Algoritmos
e
Estrutura
de
Dados
Projeto
Orientado
a
Objetos
2011
Vinicius
Cardoso
Garcia
11
12
Herana
em
Java
Especializao
Renando
uma
classe
genrica
em
subclasses
especcas
Relao
do
-po
um
com
a
superclasse
Pode-se
usar
sobrecarga
de
mtodos
Extenso
Reu-lizao
do
cdigo
escrito
para
as
superclasses
Adio
de
mtodos
que
no
existem
na
superclasse
Em
Java,
a
classe
pode
estender
apenas
uma
nica
classe
(mesmo
que
no
use
a
clusula
extends
explicitamente)
->
herana
simples
Todas
as
classes
estendem
a
java.lang.Object
Algoritmos
e
Estrutura
de
Dados
Projeto
Orientado
a
Objetos
2011
Vinicius
Cardoso
Garcia
13
Renamento
Adiciona
cdigo
(comportamento)
Todos
os
construtores
usam
::
encadeamento
de
construtores
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
14
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
15
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
16
Progresso aritm1ca
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
17
Progresso geomtrica
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
18
Progresso Fibonacci
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
19
Diagrama
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
20
Teste
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
21
EXCEES
Algoritmos
e
Estrutura
de
Dados
Projeto
Orientado
a
Objetos
2011
Vinicius
Cardoso
Garcia
22
Lanando
excees
Lanadas
por
trechos
de
cdigo
que
detectam
alguma
condio
inesperada
Tambm
podem
ser
lanadas
pelo
ambiente
de
execuo
Java
Capturada
por
trechos
de
cdigo
ou
o
programa
encerrado
Instanciar
o
objeto
de
exceo
no
momento
em
que
ela
est
para
ser
lanada
throw
new
excep%on_type(param0,
param1,
...,
paramN-1)
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
23
Capturando
excees
Deve
exis-r
pelo
menos
uma
clusula
catch
nally
opcional
e
executado
indiferentemente
se
as
excees
forem
lanadas
ou
capturadas
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
24
Capturando excees
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
25
26
Implementando
interfaces
Interface
de
Programao
da
Aplicao
(API)
Exemplo:
Inventrio
de
an-guidades
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
27
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
28
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
29
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
30
Exemplo:
mistura
Classes
projetadas
para
proporcionar
funcionalidades
adicionais
a
classes
existentes
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
31
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
32
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
33
CONVERSES
E
GENRICOS
Algoritmos
e
Estrutura
de
Dados
Projeto
Orientado
a
Objetos
2011
Vinicius
Cardoso
Garcia
34
Converso
Ampliadas
Corre
quando
um
-po
T
conver-do
para
um
-po
ampliado
U
T
e
U
so
classes
e
U
uma
superclasse
de
T
T
e
U
so
interfaces
e
U
uma
superinterface
de
T
T
uma
classe
que
implementa
uma
interface
U
Reduzidas
Ocorre
quando
um
-po
T
conver-do
para
um
-po
reduzido
S
T
e
S
so
classes
e
S
uma
subclasse
de
T
T
e
S
so
interfaces
e
S
uma
subinterface
de
T
T
uma
interface
implementada
pela
classe
S
Algoritmos
e
Estrutura
de
Dados
Projeto
Orientado
a
Objetos
2011
Vinicius
Cardoso
Garcia
35
Excees
de
converso
Operador
instanceof
que
permite
testar
se
uma
varivel
refere-se
a
um
objeto
de
uma
certa
classe
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
36
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
37
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
38
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
39
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
40
Genricos
Tipo
que
no
denido
em
tempo
de
compilao,
mas
especicado
em
tempo
de
execuo
Denio
da
classe
em
termos
de
um
conjunto
de
parmetros
de
@po
que
podem
ser
u-lizados
Abstrair
os
-pos
de
variveis
internas
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
41
Genricos
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
42
Genricos
Para
restringir
o
-po
do
parmetro,
usa-se
clusula
extends
Podemos declarar uma varivel referindo uma instncia de PersonPairDirectory, que armazene objetos do -po Student
Para esta instncia, o mtodo ndOther retorna Student, logo, o comando abaixo est correto
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
43
Elementos
armazenados
em
um
arranjo
no
podem
ser
uma
varivel
de
-po
ou
-po
parametrizado
Um
arranjo
denido
como
um
-po
parametrizado
seja
inicializado
com
um
arranjo
no
paramtrico
recm
criado
No
100%
seguro,
gera
um
warning
Algoritmos e Estrutura de Dados Projeto Orientado a Objetos 2011 Vinicius Cardoso Garcia
44