Il polimorfismo è la capacità di cose diverse di apparire nella stessa forma in un determinato contesto. Si supponga per esempio di scrivere una funzione che restituisce il massimo fra due interi:
Se si prova a invocare la funzione max() per determinare il massimo tra due double, il compilatore segnalerà un errore. Nel caso dell' esempio, per determinare il massimo tra due double sarebbe necessario scrivere un' altra funzione:
Si noti che il corpo delle due funzioni è formalmente identico: quello che cambia è solo la dichiarazione. Un linguaggio di programmazione che supporta il polimorfismo fornisce al programmatore dei mezzi per evitare di dover scrivere metodi distinti in questo tipo di casi. Si possono distinguere quattro tipi di polimorfismo, classificati da Cardelli e Wegner.
coercion: gli argomenti di una funzione o di un operatore vengono trasformati implicitamente nel tipo applicabile;
overloading: la stessa funzione o gli stessi operatori possono essere applicati a tipi diversi, per esempio l' operatore somma "+" può essere ultilizato per sommare interi, duole ecc…..
parametrico: le funzioni o gli operatori sono parametrizzati secondo il tipo a cui possono essere applicati Negli esempi riportati sopra, al posto del tipo int, double,….si può utilizzare una variabile T, che può assumere valori int, double, ecc….
per inclusione: un metodo che può essere applicato a tutti gli oggetti inclusi nella classe che lo ammette. (questo tipo di polimorfismo è quello che sta alla base della programmazione orientata agli oggetti).
Nell' approccio orientato agli oggetti, che utilizza il polimorfismo per inclusione, nel caso dell' esempio: anziché definire tante funzioni diverse che restituiscano il massimo tra due oggetti di ciascun tipo, la programmazione ad oggetti preferisce definire la classe degli elementi su cui ha senso applicare il metodo max(). Una volta definita questa classe tutte le classi da essa derivate ne erediteranno i metodi.
Tutto quanto riportato in questa pagina è a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione è fondamentale per la continua crescita del sito.