Ich würde mich nicht auf die Objekte der realen Welt konzentrieren und ich würde mich auch nicht auf die Nachrichten konzentrieren. Ein Beispiel, das ich verwendet habe, sind Grafiken, in denen Sie Objekte haben möchten, die "wissen, wie man sich selbst zeichnet".
Wenn Sie beispielsweise in C arbeiten, in dem OO nicht integriert ist, empfiehlt es sich möglicherweise, Zeiger auf Funktionen in Datenobjekten zu speichern. Wenn Sie dies tun, keilen Sie sich in die OOP ein.
Ich beziehe mich nicht gerne auf Alan Kay, als ob er Moses wäre, der die Tabletten übergibt. Ich glaube eher, dass er in Mathematik und Bio ausgebildet wurde. Als Mathematiker hatte er wahrscheinlich eine gewisse Vertrautheit mit Lambda Calculus, der ziemlich abstrakt war und nichts mit Hardware zu tun hatte. In LC könnte man sagen, dass alles ein "Objekt" ist - wie die Nummer 0 und die Nummer 1 sind Objekte, die bei der Angabe eines Arguments zu unterschiedlichen Dingen ausgewertet werden. Das führt ziemlich gut zu Smalltalk. Die Idee von "message" ist, dass wir vermeiden können, über Hardware zu sprechen. Sie könnten sagen, wenn Sie eine Funktion (oder eine Methode eines Objekts) aufrufen, senden Sie ihr eine Nachricht, und wenn sie zurückkehrt, sendet sie Ihnen eine Nachricht (oder Ihrer Fortsetzung). Dies wurde verwendet, um Wege zur Kommunikation zwischen Programmen zu beschreiben, die asynchron auf separater Hardware ausgeführt werden. Das ist gut, aber für gewöhnliche Programmierung wird es hinreißend. Um den Wert der OOP-Idee zu ermitteln, müssen Sie weder die Relevanz der konkreten Aufgabe, die Sie ausführen möchten, noch die Konkretheit der Hardware, auf der Sie ausgeführt werden, leugnen. Ich denke, dass das Unterrichten über OOP in Form von erfundenen Analogien dazu führt, dass die Leute zu viel über Software-Design in Bezug auf die Datenstruktur nachdenken. Dies führt zu einem Überdesign, zu aufgeblähtem Code und massiven Leistungsproblemen, bei denen ich Zeit aufräumen muss es wird schlimm genug.