Polimorfismo

Nella programmazione orientata agli oggetti, il polimorfismo (dal greco che significa "avere più forme") è la caratteristica di essere in grado di assegnare un significato o un utilizzo diverso a qualcosa in contesti diversi - in particolare, per consentire a un'entità come una variabile, una funzione o un oggetto per avere più di una forma. Esistono diversi tipi di polimorfismo.

1) Una variabile con un determinato nome può avere forme diverse e il programma può determinare quale forma della variabile utilizzare al momento dell'esecuzione. Ad esempio, una variabile denominata USERID può essere un numero intero (numero intero) o una stringa di caratteri (forse perché il programmatore desidera consentire a un utente di immettere un ID utente come numero di dipendente - un numero intero - o con un nome - una stringa di caratteri). Dando al programma un modo per distinguere quale forma viene gestita in ogni caso, entrambi i tipi possono essere riconosciuti e gestiti.

2) Una funzione denominata può anche variare a seconda dei parametri che viene fornita. Ad esempio, se viene fornita una variabile che è un numero intero, la funzione scelta sarebbe quella di cercare una corrispondenza con un elenco di numeri di dipendenti; se la variabile fosse una stringa, cercherebbe una corrispondenza con un elenco di nomi. In entrambi i casi, entrambe le funzioni sarebbero note nel programma con lo stesso nome. Questo tipo di polimorfismo è talvolta noto come sovraccarico.

In C ++, ad esempio, l'operatore noto come segno più (+) - che è effettivamente una semplice funzione con nome - può essere assegnato per operare su due oggetti in modo tale da sommarli insieme (forse la forma più comune dell'operazione +) oppure, come nella ricerca booleana, un + può indicare una "e" logica (il che significa che entrambe le parole separate dall'operatore + devono essere presenti affinché una citazione venga restituita). In un altro contesto, il segno + potrebbe significare un'operazione per concatenare i due oggetti o stringhe di lettere su entrambi i lati del segno +.

Ad un dato operatore può anche essere dato un altro significato se combinato con un altro operatore. Ad esempio, nel linguaggio C ++, un "++" che segue una variabile può significare "incrementare questo valore di 1". Il significato di un particolare operatore è definito come parte di una definizione di classe. Poiché il programmatore può creare classi, il programmatore può anche definire come gli operatori lavorano per questa classe di oggetti; in effetti, il programmatore può ridefinire il linguaggio di elaborazione.

3) Polimorfismo può significare, come nel linguaggio ML, un tipo di dati "any", in modo tale che quando specificato per un elenco, un elenco contenente qualsiasi tipo di dati può essere elaborato da una funzione. (Ad esempio, se una funzione determina semplicemente la lunghezza di un elenco, non importa quali tipi di dati si trovano nell'elenco.)

4) In PHP, polimorfismo significa che se B è un discendente di A e una funzione può accettare A come parametro, può anche accettare B.