Вы находитесь на странице: 1из 23

Polimorfismo

Tiago Alves de Oliveira

Tiago Alves de Oliveira

Polimorfismo

O poliformismo deriva da palavra polimorfo, que significa multiforme, ou


que pode variar a forma.
Para a POO, polimorfismo a habilidade de objetos de classes diferentes
responderem a mesma mensagem de diferentes maneiras. Ou seja,
vrias formas de responder mesma mensagem.

Tiago Alves de Oliveira

Polimorfismo

Tiago Alves de Oliveira

Polimorfismo

Vejamos o seguinte 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 especficos
definidos pelo controle.

Tiago Alves de Oliveira

Polimorfismo

Tiago Alves de Oliveira

Polimorfismo

Assim quando o brinquedo recebe o sinal MOVER, ele se move de acordo


com a sua funo.

Para o avio, mover significa VOAR;


Para o barco significa NAVEGAR, e
Para o automvel CORRER.

Observe que os brinquedos respondem ao mesmo sinal de formas diferentes.

Tiago Alves de Oliveira

Polimorfismo

O Polimorfismo permite que diferentes objetos (avio, barco, automvel)


respondam uma mesma mensagem (mover) de formas diferentes (voar,
navegar e correr).

Tiago Alves de Oliveira

Polimorfismo

Tipos de polimorfismo
O Polimorfismo pode ser classificado de trs maneiras:

Polimorfismo de Sobrecarga
Polimorfismo de Sobreposio
Polimorfismo de Incluso

Tiago Alves de Oliveira

Polimorfismo

Polimorfismo de Sobrecarga

Permite que um mtodo de determinado nome tenha comportamentos distintos, em


funo de diferentes parmetros que ele recebe. Cada mtodo difere no nmero e
no tipo de parmetros.

Tiago Alves de Oliveira

Polimorfismo

Veja no exemplo uma aplicao prtica do uso do polimorfismo de sobrecarga.

10

Tiago Alves de Oliveira

Polimorfismo

A sobrecarga e os construtores

O polimorfismo de sobrecarga normalmente acontece sobre os mtodos


construtores, pois comum para uma classe ter vrias maneiras de instanci-la.

O programa abaixo ilustra um exemplo de polimorfismo de sobrecarga nos


construtores da classe Pessoa.

11

Tiago Alves de Oliveira

Polimorfismo

Observe que so declarados 3 construtores e todos eles tm o mesmo nome da classe. Entretanto,
cada um deles recebe um nmero diferente de parmetros.

12

Tiago Alves de Oliveira

Polimorfismo

Polimorfismo de Sobreposio

13

a redefinio de mtodos em classes descendentes. Ou seja, um mtodo de uma


classe filha com o mesmo nome de um mtodo de uma classe me ir sobrepor esse
ltimo.
Vejamos o exemplo.

Tiago Alves de Oliveira

Polimorfismo

O polimorfismo de sobreposio em Java

Considere que a classe Brinquedo possui como descendentes as classes Carro,


Avio e Barco, conforme ilustra a Figura.

Observe que as classes filhas sobrepem o mtodo mover() da classe Brinquedo.

14

Tiago Alves de Oliveira

Polimorfismo

15

Vejamos ento como


ficam essas classes
codificadas em Java.

Tiago Alves de Oliveira

Polimorfismo

Considerando o mtodo mover() de cada classe filha, como poderamos


chamar o mtodo mover() do brinquedo (classe) correto? Ou seja, como o
ControleRemoto saber que mtodo mover ele deve chamar se ele tem
disponvel trs tipos de mover diferentes (um para cada brinquedo)?

16

Tiago Alves de Oliveira

Polimorfismo

Vamos ver inicialmente como fica a implementao do Controle Remoto.

17

Tiago Alves de Oliveira

Polimorfismo

O programa mostra como fica a classe Principal que instancia um objeto


controleRemoto e um objeto carro para ser controlado automaticamente.

18

Foi criado um brinquedo do tipo Carro, e o ControleRemoto.


Foi enviado o objeto carro para o objeto controleRemoto atravs da chamada ao seu
construtor.
Assim, quando acionado o comando controleRemoto.mover(), ser chamado o
mtodo mover() do carro.
Tiago Alves de Oliveira

Atividade

Implemente as classes da hierarquia da classe Figura Geometrica mostrada na


Figura abaixo em Java, aplicando o polimorfismo de sobreposio para o
mtodo desenha().
Em seguida, crie uma classe Principal com um mtodo main que cria um
objeto de cada uma das classes e chama seus respectivos mtodos desenha().

19

Tiago Alves de Oliveira

Polimorfismo

Polimorfismo de Incluso

No exemplo visto anteriormente, em que na classe Principal, foi criado um objeto


do tipo Carro e outro do tipo ControleRemoto, utilizou-se o polimorfismo de
incluso.

Isso foi feito substituindo a classe Brinquedo pela classe Carro dentro da classe
ControleRemoto.

20

Tiago Alves de Oliveira

Polimorfismo

Veja a Figura.

21

Tiago Alves de Oliveira

Polimorfismo

Observe que a classe ControleRemoto est relacionada com a classe


Brinquedo, pois possui um atributo do tipo Brinquedo.
Mas, como as classes Carro, Avio e Barco so do tipo Brinquedo, elas
podem substituir a classe Brinquedo em qualquer mtodo que a utilize.
A capacidade do objeto (brinquedo) do tipo Brinquedo da classe
ControleRemoto de receber qualquer um objeto de subclasses da classe
Brinquedo que caracteriza o polimorfismo de incluso.

22

Tiago Alves de Oliveira

Trabalho

Faa um exemplo prtico para apresentar os seguintes conceitos em Java.

23

Static
Interface, Implements e Abstract

Tiago Alves de Oliveira

Вам также может понравиться