Definitions for Object-Orientation son, por supuesto, un huge can of worms, pero aquí son mis 2 centavos:
Para mí, Obj ect-Orientation se trata de objetos que colaboran mediante el envío de mensajes. Es decir, para mí, el rasgo más importante de un lenguaje orientado a objetos.
Si tuviera que aguantar una lista ordenada de todas las características que un lenguaje orientado a objetos debe tener, que se vería así:
- Objects sending messages to other objects
- todo es un objeto
- Late Binding
- Subtype Polymorphism
- herencia o algo similarmente expresiva, como Delegation
- Encapsulation
- Information Hiding
- Abstracción
Obviamente, esta lista es muy controvertido, ya que excluye a una gran variedad de idiomas que son ampliamente considerado como orientado a objetos, tales como Java, C# y C++, todo lo cual infringe los puntos 1, 2 y 3. Sin embargo, no hay duda de que esos lenguajes permiten la programación orientada a objetos (pero también lo hace el C) e incluso la facilitan (lo que C no hace). Por lo tanto, he llegado a llamar a los idiomas que satisfacen esos requisitos "puramente orientados a objetos".
Como lenguajes orientados a objetos arquetípicos, me gustaría llamar Self y Newspeak.
Ambos satisfacen los requisitos mencionados anteriormente. Ambos están inspirados y son sucesores del Smalltalk, y ambos realmente logran ser "más OO" en algún sentido. Las cosas que me gustan de Self y Newspeak son que ambas llevan el paradigma de envío de mensajes al extremo (Newspeak incluso más que Self).
En Newspeak, todo es un mensaje de enviar. No hay variables de instancia, ni campos, ni atributos, ni constantes, ni nombres de clase. Todos son emulados usando getters y setters.
En sí, hay no hay clases, solo objetos. Esto enfatiza lo que OO es realmente sobre: objetos, no clases.
Mensajes, el enlace en tiempo, y el polimorfismo son la misma cosa: un mensaje enlazados en tiempo es sólo una llamada de procedimiento, y si no puedes enviar los mismos mensajes a objetos de diferentes tipos, entonces ¿por qué ata tarde? La delegación, el encapsulado y todo es un objeto también se derivan de la transmisión de mensajes, de alguna manera. –