Product Design, Manufacturing & Innovation Resources
Casa » Polimorfismo (programmazione)

Polimorfismo (programmazione)

1967
  • Christopher Strachey
Area di lavoro per la programmazione informatica che dimostra il polimorfismo con frammenti di codice.

(Immagine generata a solo scopo illustrativo)

Il polimorfismo, dal greco "molte forme", permette di trattare oggetti di classi diverse come oggetti di una superclasse comune. Consente un'unica interfaccia, come ad esempio un metodo Nome, da utilizzare per una classe generale di azioni. L'azione specifica è determinata dal tipo esatto dell'oggetto in fase di esecuzione. Ciò si ottiene spesso tramite l'override dei metodi.

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.

Ad esempio, si consideri una superclasse ‘Shape’ con un metodo ‘calculateArea()’. Sottoclassi come ‘Circle’ e ‘Rectangle’ possono ereditare da ‘Shape’ e fornire le proprie implementazioni specifiche di ‘calculateArea()’. Un programma può quindi avere un elenco di oggetti ‘Shape’, contenenti sia istanze di ‘Circle’ che di ‘Rectangle’. Quando si itera sull'elenco e si chiama ‘calculateArea()’ su ciascun elemento, la formula corretta verrà utilizzata automaticamente per ogni forma. Questo elimina la necessità di lunghe istruzioni "if-else" o "switch" per verificare il tipo di ogni oggetto, portando a un codice più pulito ed estensibile. Nuove forme possono essere aggiunte al sistema senza modificare il codice che le elabora.

UNESCO Nomenclature: 1203
- Informatica

Tipo

Sistema astratto

Interruzione

Incrementale

Utilizzo

Uso diffuso

Precursori

  • il concetto di puntatori di funzione in linguaggi come c
  • concetti di programmazione generica
  • ereditarietà, che fornisce la gerarchia di classi necessaria per il polimorfismo dei sottotipi
  • la necessità di sistemi software flessibili ed estensibili

Applicazioni

  • disegnare forme diverse (cerchio, quadrato) utilizzando una singola chiamata al metodo draw()
  • elaborazione di vari tipi di documenti (‘pdf’, ‘word’) con una funzione ‘print()’ generica
  • implementazione di gestori di eventi dell'interfaccia utente
  • raccolte generiche che possono contenere oggetti di tipi diversi ma correlati
  • framework di iniezione di dipendenza

Brevetti:

NA

Idee e potenziali innovazioni

A causa dell'eliminazione del traffico generato dai bot, che attualmente supera i 40.000 al giorno, questo contenuto è riservato ai membri della community.
> Accedi O > Registrati L'accesso a questo contenuto, così come a tutti gli altri contenuti e strumenti riservati, è (100% gratuito).

Argomenti correlati: polimorfismo, override, dispatch dinamico, binding dinamico, sottotipo, interfaccia, astrazione, programmazione orientata agli oggetti, override di metodi, runtime.

Contesto storico

Polimorfismo (programmazione)

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

(se la data è sconosciuta o non rilevante, ad esempio "meccanica dei fluidi", viene fornita una stima approssimativa della sua notevole comparsa)

Invenzioni, innovazioni e principi tecnici correlati

Le immagini a grandezza naturale e i download sono disponibili, 100% gratuitamente, solo per i membri registrati.

> Login <