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.

Polymorphism is a powerful concept that allows for writing flexible and decoupled code. The most common form in OOP is subtype polymorphism, which is enabled by inheritance and method overriding. When a subclass provides a specific implementation for a method that is already defined in its superclass, it is called overriding. A variable of the superclass type can refer to an object of any of its subclasses. When a method is called on this variable, the version of the method that gets executed is the one belonging to the object’s actual class, not the variable’s type. This decision is made at runtime, a process known as dynamic dispatch or late binding.

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()'.
  • implementing user interface event handlers
  • 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

Devido ao tráfego de bots de coleta de dados, atualmente superior a 40 mil por dia, este conteúdo é reservado aos membros da comunidade.
> Login < ou > Registrar < (100% gratuito) para acessar isso, assim como todo o restante do conteúdo e das ferramentas restritas.

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)

Princípios relacionados à invenção, inovação e tecnologia

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