Алан Кэй в двух письмах 2003 года объяснил, что на самом деле значил придуманный им термин «object-oriented programming». Он придумал его примерно в 1967 году, вдохновившись Sketchpad, Simula, архитектурой ARPAnet, Burroughs B5000, а также биологией и математикой. Свою идею он так и сформулировал: «Это объектно-ориентированное программирование».
Объекты Кэй представлял как биологические клетки или отдельные компьютеры в сети. Они могут общаться только через сообщения (messaging) — это было с самого начала. Главная цель — избавиться от данных. В B5000 уже была попытка этого через аппаратуру. Кэй хотел, чтобы всё было сообщениями, а данные — лишь ещё одним токеном сообщения. Наследование он сознательно не встроил изначально, потому что ему не нравилось, как это сделано в Simula, и он хотел сначала лучше разобраться. Полиморфизм — термин, навязанный позже Петером Вегнером, Кэй предпочитал слово «genericity» для описания обобщённого поведения.
Финальное определение Кэя короткое: OOP — это только messaging, локальное хранение и защита состояния-процесса (local retention and protection and hiding of state-process) и предельно позднее связывание всего (extreme late-binding of all things). Он считал, что так можно делать в Smalltalk и LISP.
Во втором письме Кэй разделил два направления, которые пошли от Simula. Его собственный путь — био/сетевой, без разделения данных и процедур, где объект — это не данные. Он привёл к Smalltalk. Второй путь — абстрактные типы данных (ADT) — получил гораздо большее распространение в CS-истеблишменте. Те, кто разделял его взгляд на объекты как не-данные, были в меньшинстве: Карл Хьюитт, Дейв Рид и ещё несколько человек из ARPA-сообщества, участвовавших в разработке ARPAnet/Internet, где базовой единицей был целый компьютер. Кэй с иронией заметил, что даже в 70–80-е многие пытались обойтись Remote Procedure Call вместо настоящих объектов и сообщений.
Итог: для Алана Кэя объектно-ориентированное программирование никогда не сводилось к классам, наследованию или инкапсуляции как самоцели. В основе лежала передача сообщений между независимыми сущностями, локальное хранение и защита состояния, а также предельно позднее связывание.