Programação
Orientada à
Objetos
Aula 11 – Polimorfismo
Polimorfismo
♦ Origem da palavra?
O termo polimorfismo é originário do grego e
significa “muitas formas”.
Poli = muitas
Morphos = formas
Polimorfismo – O que é?
♦ A POO diz que Polimorfismo nada mais é
que uma referência de uma classe abstrata a
uma classe concreta, também é a
capacidade de um operador executar a
ação operada dependendo do tipo do
operando.
♦ Em outras palavras, várias formas de fazer
várias coisas.
Polimorfismo – O que é?
Polimorfismo – O que é?
Polimorfismo – O que é?
Polimorfismo

Conceito chave de polimorfismo:
◦ Cada objeto sabe fazer a coisa certa em resposta
à mesma chamada de método!
Vantagens do Polimorfismo

Projeto e implementação de sistemas que são facilmente
extensíveis
◦ Novas classes podem ser adicionadas a partes gerais do
programa com pouca ou nenhuma modificação
◦ Através da utilização do Polimorfismo é possível trazer
clareza ao código, diminuir linhas do mesmo e ainda é
possível inserir aplicações flexíveis.

O que é necessário alterar no programa quando uma nova
classe é gerada?
Vantagens do Polimorfismo

Resposta:
◦ As partes do programa que exige conhecimento
direto das novas classes adicionadas
Mais de Polimorfismo

Para utilizar polimorfismo, os objetos devem
executar as mesmas ações (métodos),
mesmo que com comportamento diferente
Mais de Polimorfismo


OO oferece uma capacidade que exige que classes não
relacionadas implementem um conjunto de métodos
comuns?
Em outras palavras:
◦ Há como forçar que a implementação de uma ação
comum a classes de objetos diferentes sejam
implementadas nessas classes?
◦ Ex: mover para Macaco, Pássaro e Peixe
12
Formas de Polimorfismos
 Sobrescrita
(overriding): mesma função
mas comportamentos diferentes.
 Sobrecarga(overloading):
nome de uma
função usado mais de uma vez com
diferentes tipos de parâmetros.Ex:
operação soma com dois parâmetros
reais e outra com parâmetros inteiros.
13
Sobrescrita (overriding)

Recurso da linguagem onde uma impleemntação
específica é provida pela subclasse de algum
método já provido pela superclasse.

A implementação da subclasse substitui a
implementação da classe pai.

Métodos sobrescritos DEVEM possuir a mesma
assinatura (tipo de retorno, nome do método,
tipos e quantidade de parâmetros).
14
Sobrescrita (overriding)
15
Sobrescritas de função
Capacidade de um objeto responder com
diferentes comportamentos uma mesma solicitação
Exemplo:
Suponha um método que receba um objeto ContaEmBanco e
que neste método seja solicitado a ativação do método Sacar.
O comportamento do objeto vai ser diferente em função do
objeto real:
1 - ContaEspecial permite que o saldo fique negativo
2 - ContaComum não
O comportamento do objeto será relativo ao
objeto real a qual é feita a referência
16
Sobrecarga(overloading)
 Em
orientação a objetos, uma
sobrecarga refere-se aos métodos de
uma classe, sendo que os mesmos
podem ser sobrecarregados em relação
aos seus nomes, podendo diversos
métodos possuir o mesmo nome, porém a
os tipos de dados da lista de parâmetros
deve ser divergente, conforme pode ser
observado na Figura 3.
17
Sobrecarga(overloading)

No exemplo presente na Figura 3, pode-se observar
a repetição da declaração do método
escreverNome(), porém nota-se também a
diferenciação de seus parâmetros (ora sem
parâmetros, ora um texto, ora um número).

Esta situação deixa clara a existência de
comportamentos diferentes para um único serviço.

Esta diferenciação deve ser controlada na classe
que implementa os métodos, podendo ainda o
método invocado chamar outro método de mesmo
nome (porém com lista de parâmetros diferente).
18
Sobrecarga de função
Atribui a um único operador a capacidade de agir de
diferentes formas em função dos parâmetros recebidos
Exemplo:
Na classe ContaEmBanco, o método Depositar possui
duas implementações diferentes:
1 - uma para depósitos em dinheiro
2 - outra para depósitos em cheque
O serviço escolhido depende do parâmetro
enviado junto à ativação do serviço
(cheque ou dinheiro)
Sobrecarga de Construtores:
•
•
Podemos definir mais de que um construtor
seguindo as mesmas regras de sobrecarga
de métodos.
A partir do momento em que definimos um
construtor diferente do default, o
compilador não irá mais aceitar o construtor
default.
Resumo (Sobrecarga x
Sobreposição)
 Sobrecarga


Métodos com mesmo nome, mas
assinaturas diferentes
Não necessita herança
 Sobreposição


(sobrescrita)
Métodos com mesmo nome e assinatura
Necessita de herança
21
Exercícios

O que é polimorfismo em POO? Quais são seus
benefícios?

Qual a diferença entre herança e polimorfismo?

Qual a diferença entre sobrecarga e sobrescrita?

De exemplos práticos (reais) de aplicação de
uma sobrecarga e de uma sobrescrita.
Download

POO Aula 12- Polimorfismo