No me concentraría en los objetos del mundo real, y tampoco me concentraría en los mensajes.
Más bien, un ejemplo que he usado es en gráficos, donde desea tener objetos que "saben dibujar ellos mismos".
Si está trabajando en C, por ejemplo, que no tiene OO incorporado, puede que le resulte conveniente almacenar punteros a funciones dentro de objetos de datos. Si lo haces, entonces estarás metiéndote en OOP.
No me gusta referirme a Alan Kay como si fuera Moisés repartiendo las tabletas. Más bien, él fue entrenado en matemáticas y bio, creo. Como matemático, probablemente tenía cierta familiaridad con Lambda Calculus, que era bastante abstracto, no relacionado con el hardware. En LC, podría decir que todo es un "objeto", como el número 0 y el número 1 son objetos que evalúan diferentes cosas cuando se les da un argumento. Eso lleva a Smalltalk bastante bien. La idea de "mensaje" es para que podamos evitar hablar de hardware. Podría decir que cuando llama a una función (o un método de un objeto) le está enviando un mensaje, y cuando regresa, le está enviando un mensaje a usted (oa su continuación). Esto se estableció como una forma de describir formas de comunicación entre programas que se ejecutan de forma asíncrona en un hardware separado. Eso está bien, pero para la programación ordinaria se está dejando llevar. Para obtener el valor de la idea OOP, no necesita negar la relevancia de la tarea concreta que está tratando de hacer, o negar la concreción del hardware que está ejecutando. Creo que enseñar sobre POO en términos de analogías artificiales lleva a las personas a pensar demasiado en el diseño de software en términos de estructura de datos, lo que lleva a un diseño excesivo, lo que conlleva a una gran cantidad de código y problemas de rendimiento masivos, que tengo que dedicar tiempo a limpiar se pone bastante mal.