"Chiamare un metodo" e "inviare un messaggio" sono semplicemente due termini di due comunità diverse per la stessa cosa.
Quando Alan Kay ha inventato il termine "Orientamento agli oggetti", è stato strongmente ispirato da ciò che in seguito sarebbe diventato ARPANet e poi Internet: macchine indipendenti ("oggetti") con la loro memoria privata ("variabili d'istanza") che comunicano tra loro inviando messaggi.
Quindi, nel gergo di Smalltalk e dei suoi successori, gli oggetti derivati e cugini (Self, Ruby, Python, ECMAScript / JavaScript, Objective-C, Java, ...) inviano messaggi ad altri oggetti e quegli oggetti "rispondono" a quel messaggio comunque lo ritengono opportuno. La reazione più comune è invocare un metodo con lo stesso nome (cioè se si invia il messaggio foo
a bar
, il risultato sarà che verrà invocato il metodo foo
di bar
), ma un oggetto può anche inoltrare il messaggio a un altro oggetto o rispondere con un valore precalcolato (variabile di istanza) o ignorarlo in modo evidente.
Nel gergo di Simula e della sua famiglia, questo è chiamato "chiamare un metodo" e il processo di decidere cosa fare in risposta è chiamato "dispacciamento virtuale." Nella famiglia C ++, è chiamato "chiamare una funzione virtuale" e "ricerca vtable".
Ma è tutto più o meno lo stesso.
Personalmente preferisco la metafora della messaggistica, perché evidenzia l'incapsulamento (quando invii un messaggio a qualcuno, non hai idea di cosa faccia con il messaggio, l'unica cosa che puoi osservare è la risposta), e perché evoca le analogie di consegnare il messaggio a qualcun altro ecc.