Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Polimorsmo
Jefferson Ferreira Barbosa
jeffersonjpa@gmail.com
Joo Pessoa
2014
At
aqui...
Fundamentos
da
Linguagem
Java
Princpios
da
Orientao
a
Objetos
Denies
da
Linguagem
Construtores,
Encapsulamento
e
Sobrecarga
Herana
Hoje:
Polimorsmo
Polimorsmo
Polimorsmo
O
que
polimorsmo?
O
p o l i f o r m i s m o
d e r i v a
d a
p a l a v r a
Polimorphos,
que
signica
mulMforme
(Poli
=
muitas,
morphos
=
formas).
Ento,
para
uma
linguagem
de
programao,
isso
signica
que
pode
haver
vrias
formas
de
fazer
uma
"certa
coisa.
Polimorsmo
Polimorsmo
Denio
Polimorsmo
a
habilidade
dos
objetos
de
classes
diferentes
responderem
a
mesma
mensagem
de
diferentes
maneiras.
Ou
seja,
uma
chamada
de
mtodo
pode
ser
executada
de
vrias
formas
(ou
polimorcamente).
Polimorsmo
Denio
E
quem
dene
a
forma?
O
objeto
que
recebe
a
chamada
Por
exemplo:
Se
um
objeto
A
chama
o
mtodo
exe()
de
um
objeto
B,
ento
o
objeto
B
decide
a
forma
de
implementao
do
mtodo.
Mais
especicamente,
o
Mpo
do
objeto
B
que
determinar.
Polimorsmo
Exemplo
Um
dono
de
uma
fbrica
de
brinquedos
solicitou
que
seus
engenheiros
criassem
um
mesmo
controle
remoto
para
todos
os
brinquedos
de
sua
fbrica.
A
nica
restrio
era
que
cada
brinquedo
atendesse
aos
comandos
especcos
denidos
pelo
controle.
O
controle
remoto
teria
vrios
botes,
sendo
que
todos
eles
seriam
teis
para
todos
os
brinquedos.
Assim,
quando
o
usurio
clicasse
no
boto
mover,o
controle
enviaria
o
sinal
MOVER
para
todos
os
brinquedos
que
esMvessem
no
raio
de
dois
metros.
Polimorsmo
Exemplo
Representao:
Polimorsmo
Exemplo
mover();
mover();
Polimorsmo
mover();
10
Exemplo
Polimorsmo
11
Classicao
Polimorsmo
de
Sobrecarga
Ocorre
quando
os
mtodos
com
o
mesmo
nome,
na
mesma
classe,
possuem
comportamentos
diferentes,
tendo
diferentes
parmetros.
Exemplo:
Polimorsmo
12
Classicao
Polimorsmo
de
Sobreposio
a
redenio
de
mtodos
denidos
nas
superclasses
por
classes
descendentes.
Pessoa
-
salario
-
rg
-
nome
+getSalario()
Funcionario
Professor
+getSalario
Polimorsmo
13
Classicao
Sobreposio
Polimorsmo
14
Voltando
ao
exemplo...
Dado
o
exemplo
do
brinquedo,
a
nica
restrio
para
um
controle
remoto
to
versMl
seria
que
quando
criado
o
controle
remoto,
ele
receber
o
Mpo
de
brinquedo
que
ir
acionar.
Mas
como
fazer
isso?
Polimorsmo
15
Chamada Polimrca
Polimorsmo
16
Recapitulando...
Dena
comportamentos
com
Mpos
abstratos
e
use-os
no
polimorsmo.
Dena
implementaes
com
classes
e
use
superclasses
para
fatorar
implementaes
comuns.
Polimorsmo
17
Exerccio
1
Vamos
criar
as
classes
ControleRemoto,
Brinquedo,
Avio,
Carro
e
Navio
conforme
o
exemplo
apresentado.
Implementar
o
mtodo
mover
para
cada
uma
das
classes
criadas
acima
com
exeo
de
ControleRemoto.
Implementar
o
mtodo
ao
da
classe
ControleRemoto.
Polimorsmo
18
Exerccio
2
Dena
no
pacote
br.unipe.spi.banco,
a
classe
abstrata
ContaAbstrata
que
tem
os
mesmos
atributos
e
mtodos
de
Conta,
s
que
o
mtodo
debitar
abstrato
Altere
a
classe
Conta
para
herdar
da
classe
ContaAbstrata
e
implementar
o
mtodo
debitar
Modique
a
classe
Banco
para
que
seja
possvel
trabalhar
com
todos
os
Mpos
de
conta
da
aplicao
bancria.
Execute
a
classe
Programa
e
crie
um
teste
para
a
classe
Conta
Dena
a
classe
br.unipe.spi.banco.ContaImposto
que
herda
de
ContaAbstrata
e
tem
uma
constante
CPMF
que
armazena
o
imposto
a
ser
cobrado
quando
um
valor
for
debitado
na
ContaImposto
necessrio
alterar
as
classes
Poupanca
e
ContaEspecial
?
Altere
a
classe
Programa
para
testar
todas
as
classes
do
projeto
Polimorsmo
19