Nie skupiałbym się na obiektach z prawdziwego świata i nie skupiałbym się również na przesyłaniu wiadomości. Zamiast tego użyłem przykładu w grafice, w której chcesz mieć obiekty, które „potrafią się rysować”.
Jeśli pracujesz na przykład w C, który nie ma wbudowanego OO, wygodne może być przechowywanie wskaźników do funkcji wewnątrz obiektów danych. Jeśli tak, to wkraczasz do OOP.
Nie lubię odnosić się do Alana Kaya, jakby był Mojżeszem, który podaje tablice. Uważam, że był raczej szkolony z matematyki i bio. Jako matematyk prawdopodobnie znał Lambda Calculus, który był dość abstrakcyjny, niezwiązany ze sprzętem. W LC można powiedzieć, że wszystko jest „obiektem” - podobnie jak liczba 0 i liczba 1 są obiektami, które oceniają różne rzeczy po podaniu argumentu. To całkiem ładnie prowadzi do Smalltalk. Idea „wiadomości” polega na tym, że możemy uniknąć rozmowy o sprzęcie. Można powiedzieć, że gdy wywołujesz funkcję (lub metodę obiektu), wysyłasz jej wiadomość, a gdy ona powraca, wysyła wiadomość do ciebie (lub do kontynuacji). Zostało to przyjęte jako sposób opisania sposobów komunikacji między programami działającymi asynchronicznie na osobnym sprzęcie. W porządku, ale w przypadku zwykłego programowania jest to porywające. Aby uzyskać wartość idei OOP, nie musisz zaprzeczać trafności konkretnego zadania, które próbujesz wykonać, ani zaprzeczać konkretności sprzętu, na którym pracujesz. Myślę, że nauczanie o OOP w kategoriach wymyślonych analogii prowadzi ludzi do zbytniego myślenia o projektowaniu oprogramowania w kategoriach struktury danych, co prowadzi do jego nadprojektowania, co prowadzi do rozdęcia kodu i ogromnych problemów z wydajnością, które muszę poświęcić na sprzątanie, kiedy robi się wystarczająco źle.