Polimorfismo de C++

    “Polimorfismo: é a capacidade de criar código capaz de operar (ou pelos menos, aparentar operar) sobre valores de tipos distintos.”


Polimorfismo do tipo Adhoc:

    Ocorre quando um mesmo símbolo ou identificador é associado a diferentes trechos de código que atuam sobre diferentes tipos. Há dois tipos de Adhoc:

  • Coerção: Conversão implícita de tipos, ou seja, quem faz a conversão é a própria linguagem, assim se tem um Aumento à redigibilidade, porém Sacrifica a confiabilidade. A Coerção pode ser por 3 tipos:
  1. Ampliação (operação segura): tipo de maior conjunto := tipo de menor conjunto.

double = int >> double x = 1;

  1. Estreitamento (operação Não segura, pois há perdas): tipo de menor conjunto  :=   tipo de maior conjunto.

int = double >> int x = 3.14;

  1. Nem por Ampliação e Nem por Estreitamento:

int (todos os valores)  =  unsigned int  (apenas os valores absolutos);

  • Sobrecarga: Ocorre quando um mesmo operador pode ser usado para designar duas ou mais operações distintas. Em C++ há  sobrecarga nos operadores e subprogramas da biblioteca padrão e o Programador pode sobrecarregar alguns operadores.

 

 

Polimorfismo do tipo Universal:

    Uma mesma implementação pode atuar sobre elementos diferentes. Há dois tipos de Universal:

  • Paramétrico: Permitem construir abstrações de dados e controle que atuam uniformemente sobre diversos tipos. O C++ implementa polimorfismo paramétrico através de gabaritos, que fazem o compilador gere uma instância separada da classe. Os gabaritos em C++ fornecem um mecanismo sofisticado para a criação de código genérico polimórfico. Em particular, por meio da técnica Curiously Recurring Template Pattern é possível implementar uma forma de polimorfismo estático que imita a sintaxe para substituir as funções virtuais.

Exemplo de Template:

 

  • Inclusão: É característico de LPs OO. Se baseia no uso de uma hierarquia de tipos para criar abstrações de dados e controle.

 

 

 

Herança:

    A ideia consiste em definir novas classes a partir das já existentes, aproveitando suas características. 

 

  • Em C++ é possível de forma direta a Herança Múltipla. Uma classe necessite herdar de duas ou mais classes:

 

 

Fontes:

https://pt.wikipedia.org/wiki/Polimorfismo

https://progcmaismais.blogspot.com.br/2011/02/20-c-heranca-de-classes.html#more

https://progcmaismais.blogspot.com.br/search/label/20%20-%20Polimorfismo

07_Polimorfismo.pdf (1,1 MB)

Polimorfismo de ponteiros.docx (19,3 kB)