Tôi sẽ không tập trung vào các đối tượng trong thế giới thực và tôi cũng sẽ không tập trung vào tin nhắn. Thay vào đó, một ví dụ tôi đã sử dụng là trong đồ họa, nơi bạn muốn có các đối tượng "biết cách tự vẽ".
Ví dụ: nếu bạn đang làm việc trong C, không tích hợp OO, bạn có thể thấy thuận tiện khi lưu trữ các con trỏ tới các chức năng bên trong các đối tượng dữ liệu. Nếu bạn làm như vậy, thì bạn đang bước vào OOP.
Tôi không muốn nhắc đến Alan Kay như thể anh ta là Moses đang đưa những chiếc máy tính bảng xuống. Thay vào đó, anh ấy đã được đào tạo về toán và sinh học, tôi tin thế. Là một người giỏi toán, có lẽ anh ta đã quen với Lambda Tính, một thứ khá trừu tượng, không liên quan đến phần cứng. Trong LC, bạn có thể nói mọi thứ là một "đối tượng" - giống như số 0 và số 1 là các đối tượng đánh giá các thứ khác nhau khi đưa ra một đối số. Điều đó dẫn đến Smalltalk khá độc đáo. Ý tưởng về "thông điệp" là để chúng ta có thể tránh nói về phần cứng. Bạn có thể nói khi bạn gọi một hàm (hoặc một phương thức của một đối tượng) bạn đang gửi nó một tin nhắn và khi nó trả về, nó sẽ gửi một tin nhắn cho bạn (hoặc để bạn tiếp tục). Điều đó đã được đưa vào như một cách mô tả các cách để giao tiếp giữa các chương trình chạy không đồng bộ trên phần cứng riêng biệt. Tốt rồi, nhưng đối với chương trình thông thường, nó sẽ được mang đi. Để có được giá trị của ý tưởng OOP, bạn không cần phải từ chối mức độ liên quan của nhiệm vụ cụ thể mà bạn đang cố gắng thực hiện hoặc từ chối tính cụ thể của phần cứng bạn đang chạy. Tôi nghĩ rằng việc dạy về OOP theo cách tương tự có thể khiến mọi người nghĩ về thiết kế phần mềm quá nhiều về cấu trúc dữ liệu, dẫn đến thiết kế quá mức của nó, dẫn đến sự phình to mã hóa và các vấn đề hiệu năng lớn, mà tôi phải dành thời gian để dọn dẹp khi nó đủ tệ