Mensagens versus Ações

 

Considere a existência de duas pessoas, identificadas nas figuras que se seguem como Emissor e Receptor. Quando o Emissor envia uma mensagem para o Receptor a situação esperada é que o Receptor compreenda esta mensagem e passe a executar uma ação em resposta a esta mensagem.

Pode ocorrer , contudo, que a mensagem não seja reconheciada pelo Receptor, ou seja, que o  Receptor não conheça nenhuma ação que lhe permita atender à solicitação do Emissor. Neste caso há uma situação de conflito (erro) pois o receptor não sabe como tratar a mensagem.

A comunicação dos objetos na Programaçao Orientada a Objetos procura imitar este modelo de interação entre os . Note que a mensagem

Para exemplificar, considere a interação com o objeto/Ator caneta do Mundo dos Atores conforme descrita a seguir:

Um estado qualquer da caneta.
É enviada a mensagem anda: para a a caneta, sendo o número 50 passado como argumento da mensagem.

Em resposta a esta mensagem, a caneta executa a ação de mesmo nome (#anda: é uma das ações primitivas da caneta), resultando num deslocamento de  50 unidades para frente (na direção para onde ela está apontando).

É enviada a mensagem gira: para a a caneta, sendo o número -45 passado como argumento da mensagem.

Em resposta a esta mensagem, a caneta executa a ação de mesmo nome (#gira: é uma das ações primitivas da caneta), resultando giro de 45 gráus no sentido anti-horário.

Na Programação Orientada a Objetos toda computação é ativada pelo envio de mensagens aos objetos. Em resposta a esta mensagem  o objeto executa uma ação correspondente. Esta ação é descrita por meio de um método específico que realiza esta computação.

Considere, agora, o comando "caneta desenhaCasa". Sua execução vai gerar uma situação de erro pois a caneta não conhece (não faz parte de seu comportamento) nenhuma ação que lhe possibilite responder à mensagem #desenhaCasa. A figura que se segue mostra esta situação de erro. Note que no topo da janela aparece o motivo: A "Caneta" não entende "desenhaCasa".