Skip to content

Latest commit

 

History

History
126 lines (87 loc) · 2.48 KB

introducao.org

File metadata and controls

126 lines (87 loc) · 2.48 KB

Introdução

1 Visão Geral

Código capaz de operar sobre tipos diferentes

Grau de Polimorfismo do Sistema de Tipos
Reutilização de Código

Existem vários tipos de polimorfismo

  • Coerção
  • Sobrecarga
  • Paramétrico
  • Inclusão

2 Conceitos Relacionados

Sistema de Tipos

Verificação de Tipos

  • Garante a compatibilidade entre operandos e operadores
  • Pode ser estática ou dinâmica

Tipos Compatíveis

  • Adequados para a operação de um determinado operador
  • Operandos são convertidos implicitamente

Inferência de Tipos

3 Tipagem Estática

Verificação de tipo feita na compilação

Vantagens

  • Geração de código mais confiável
  • Depuração simplificada
  • Maior legibilidade

Desvantagens

  • Menor redigibilidade
  • Menor reuso de código

4 Tipagem Dinâmica

Verificação de tipo feita na execução

Vantagens

  • Flexibilidade
  • Redigibilidade
  • Reuso de código
    (defun segundo (l)
       (car (cdr l)))
    
    (segundo (1 2 3))
    (segundo ("abacate" "pessego" "banana"))
        

Desvantagens

  • Menor eficiência
  • Redução de legibilidade
  • Maior consumo de memória

5 Sistema de Tipos \small Mono versus Polimórfico

Monomórfico

  • Elementos da linguagem devem ter tipos específicos
  • Mais simplicidade
  • Nenhum reuso de código
  • Exemplos: Pascal e Modula-2

Polimórfico

  • Algoritmos que atuam sobre vários tipos diversos
  • Tipos de Dados e Subprogramas polimórficos
  • Exemplos: Ada, ML, C++, Java, Objective-C, …

6 Definições

Possibilidade de criar código sobre tipos distintos

Propriedade de um sistema de tipos

  • Permite escrever abstrações uniformes sobre tipos diversos

Sistema de Tipos Polimórfico
→ Elementos da linguagem podem assumir vários tipos

7 Tipos de Polimorfismo

./img/tipos-polimorfismo.pdf

Adhoc – somente sobre abstrações de controle

Universal – sobre abstrações de dados e de controle