POO - O polimorfismo

Agosto 2015

Definição do polimorfismo

A palavra polimorfismo vem do grego e significa que pode tomar várias formas. Esta característica é um dos conceitos essenciais da programação orientada para o objecto. Enquanto que a herança se refere às classes (e à sua hierarquia), o polimorfismo diz respeito aos métodos dos objectos.

Distinguem-se geralmente três tipos de polimorfismo:




Les différents types de polymorphisme




Vamos agora tentar definir mais precisamente tudo isto, mas é importante notar que existe muita confusão quando se trata de diferenciar todos os tipos de polimorfismo.

O polimorfismo ad hoc


O polimorfismo ad hoc permite ter funções do mesmo nome, com funcionalidades similares, em classes sem nenhuma relação entre elas (a não ser, claro, serem filhas da classe objecto). Por exemplo, a classe complexa, a classe imagem e a classe relação podem ter cada uma uma função “afixar”. Isto permitirá não ter de se preocupar com o tipo do objecto que temos se desejarmos mostrá-lo no ecrã.

O polimorfismo ad hoc permite assim definir operadores cuja utilização será diferente de acordo com o tipo dos parâmetros que lhes são passados. É por isso possível, por exemplo, sobrecarregar o operador + e fazê-lo realizar acções diferentes conforme se trate de uma operação entre duas totalidades (adição) ou entre duas cadeias de caracteres (concatenação).

O polimorfismo paramétrico


O polimorfismo paramétrico representa a possibilidade de definir várias funções do mesmo nome mas possuindo parâmetros diferentes (em número e/ou tipo). O polimorfismo paramétrico torna assim possível a escolha automática do bom método a adoptar em função do tipo de dado passado em parâmetro.

Assim, pode-se por exemplo definir vários métodos homónimos adição () efectuando uma soma de valores.

  • O método int addition (int, int) poderá dar a soma de duas totalidades
  • O método float addition (float, float) poderá dar a soma de dois flutuantes
  • O método char addition (char, char) poderá definir à vontade do autor a soma de dois caracteres
  • etc.

Chama-se assinatura ao número e tipo (estático) dos argumentos de uma função. É por conseguinte a assinatura de um método que determina qual será chamado.

O polimorfismo de herança

A possibilidade de redefinir um método em classes que são herdeiras de uma classe básica chama-se a especialização. É então possível chamar o método de um objecto sem estar a preocupar-se com o seu tipo intrínseco: trata-se do polimorfismo de herança. Isto permite fazer abstracção dos detalhes das classes especializadas de uma família de objecto, mascarando-o com um interface comum (que é a classe básica).

Imagine um jogo de xadrez que comporta os objectos rei, rainha, louco, cavaleiro, torre e peão, herdando cada um do objecto peça.
O método movimento () poderá, graças ao polimorfismo de herança, efectuar o movimento adequado em função da classe do objecto remetido no momento da chamada. Isto permitirá nomeadamente ao programa dizer peça.movimento sem ter de se preocupar com a classe da peça.

Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
Poo-o-polimorfismo .pdf

Veja também


OOP - Polymorphism
OOP - Polymorphism
OOP - Polimorfismo
OOP - Polimorfismo
OOP - Der Polymorphismus
OOP - Der Polymorphismus
POO - Le polymorphisme
POO - Le polymorphisme
OOP - Il polimorfismo
OOP - Il polimorfismo
Este documento, intitulado « POO - O polimorfismo »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.