multimetodi
Funzionalità implementata in alcuni linguaggi di programmazione orientata agli oggetti che consente un polimorfismo su più di un argomento di un metodo. Il polimorfismo permette a oggetti diversi di eseguire in modo differente la stessa operazione. Accade talvolta che un’operazione coinvolga più di un oggetto e può essere utile definire un comportamento polimorfo che tenga conto del tipo di tutti gli oggetti coinvolti (per es., il calcolo dell’intersezione di due figure geometriche dipende ovviamente da entrambe le forme coinvolte). Alcuni linguaggi di programmazione come CLOS (Common ;lisp object system), Dylan (una versione semplificata di CLOS) o Nice prevedono un costrutto specifico, definito come multimetodo (multimethod o multiple dispatch), per gestire i suddetti casi. Un multimetodo consente l’implementazione del polimorfismo nel senso che diverse funzioni con lo stesso nome vengono distinte in base al tipo e numero dei loro parametri. In un linguaggio di programmazione orientato agli oggetti che non supporta la funzionalità dei multimetodi, l’invocazione di un metodo comporta un trattamento speciale per uno dei suoi argomenti, così da permettere l’individuazione corretta della parte di codice da eseguire (per es., l’argomento speciale può essere premesso al comando di chiamata della funzione, come accade in alcuni linguaggi). Nei linguaggi che dispongono di multimetodi, tutti gli argomenti sono invece trattati in modo simmetrico. Il metodo specifico da chiamare è scelto considerando i tipi di tutti i suoi argomenti e non deve necessariamente essere conosciuto al momento della compilazione. I multimetodi possono essere molto utili come funzioni globali (ossia non appartenenti a una classe particolare) per realizzare la funzionalità di messaggi di tipo generale: un tipico esempio è dato da una funzione che gestisce gli eventi in una GUI (Graphical user interface).
→ Programmazione, linguaggi di