Product Design, Manufacturing & Innovation Resources
Lar » Polimorfismo (programação)

Polimorfismo (programação)

1967
  • Christopher Strachey
Computer programming workspace demonstrating polymorphism with code snippets.

(Imagem gerada apenas para fins ilustrativos)

Polimorfismo, do grego "muitas formas", permite que objetos de diferentes classes sejam tratados como objetos de uma superclasse comum. Isso possibilita uma única interface, como um método O nome será usado para uma classe geral de ações. A ação específica é determinada pelo tipo exato do objeto em tempo de execução. Isso geralmente é obtido por meio da sobrescrita de métodos.

O polimorfismo é um conceito poderoso que permite escrever código flexível e desacoplado. A forma mais comum em Programação Orientada a Objetos O polimorfismo de subtipo é possibilitado pela herança e pela sobrescrita de métodos. Quando uma subclasse fornece uma implementação específica para um método já definido em sua superclasse, isso é chamado de sobrescrita. Uma variável do tipo da superclasse pode se referir a um objeto de qualquer uma de suas subclasses. Quando um método é chamado nessa variável, a versão do método executada é a pertencente à classe real do objeto, e não ao tipo da variável. Essa decisão é tomada em tempo de execução, um processo conhecido como despacho dinâmico ou ligação tardia.

Por exemplo, considere uma superclasse `Shape` com um método `calculateArea()`. Subclasses como `Circle` e `Rectangle` podem herdar de `Shape` e fornecer suas próprias implementações específicas de `calculateArea()`. Um programa pode então ter uma lista de objetos `Shape`, contendo instâncias de `Circle` e `Rectangle`. Ao iterar pela lista e chamar `calculateArea()` em cada elemento, a fórmula correta será usada automaticamente para cada forma. Isso elimina a necessidade de longas instruções `if-else` ou `switch` para verificar o tipo de cada objeto, resultando em um código mais limpo e extensível. Novas formas podem ser adicionadas ao sistema sem modificar o código que as processa.

UNESCO Nomenclature: 1203
Ciência da Computação

Tipo

Sistema abstrato

Interrupção

Incremental

Uso

Uso generalizado

Precursores

  • o conceito de ponteiros de função em linguagens como C
  • conceitos genéricos de programação
  • herança, que fornece a hierarquia de classes necessária para o polimorfismo de subtipos
  • a necessidade de sistemas de software flexíveis e extensíveis

Aplicações

  • Desenhar diferentes formas (círculo, quadrado) usando uma única chamada do método `draw()`.
  • Processamento de vários tipos de documentos ('pdf', 'word') com uma função genérica 'print()'.
  • implementando interface do usuário manipuladores de eventos
  • coleções genéricas que podem conter objetos de tipos diferentes, mas relacionados.
  • frameworks de injeção de dependência

Patentes:

NA

Ideias de Inovação Potencial

  • pluggable data serialization formats (e.g., json, xml, protobuf) using a common interface
  • generic device drivers in an operating system for different hardware
  • strategy design pattern for interchangeable algorithms
  • universal rendering pipelines in graphics engines that handle different material types
  • middleware systems that process various types of network requests
  • financial transaction processors handling different payment methods (credit card, paypal, crypto)
  • a/b testing frameworks that can swap out different user interface components
  • data processing pipelines that can connect to various data sources (databases, apis, files)
  • robotic control systems that can operate different types of actuators through a unified api
  • interchangeable cryptographic algorithm providers in a security framework
Relacionado a: polimorfismo, sobrescrita, despacho dinâmico, ligação tardia, subtipo, interface, abstração, programação orientada a objetos, sobrescrita de métodos, tempo de execução.

Contexto histórico

Polimorfismo (programação)

1956
1960
1967
1967
1970
1970
1970
1953
1960
1960
1967
1970
1970
1970
1970

(Caso a data seja desconhecida ou irrelevante, por exemplo, "mecânica dos fluidos", é fornecida uma estimativa aproximada de seu surgimento notável)

10º ano aniversário

Imagens em tamanho real e downloads estão disponíveis apenas, 100% gratuitos, para membros registrados.