Lenguaje basado en objetos - Object-based language

El término lenguaje basado en objetos puede usarse en un sentido técnico para describir cualquier lenguaje de programación que use la idea de encapsular el estado y las operaciones dentro de los objetos . Los lenguajes basados ​​en objetos no necesitan admitir herencia o subtipos , pero los que sí lo hacen también se denominan orientados a objetos . Los lenguajes basados ​​en objetos que no admiten herencia o subtipificación no se suelen considerar verdaderos lenguajes orientados a objetos.

Ejemplos de lenguajes orientados a objetos , en orden cronológico aproximado, incluyen Simula , Smalltalk , C ++ (cuyo modelo de objeto se basa en el de Simula), Objective-C (cuyo modelo de objeto se basa en el de Smalltalk), Eiffel , Xojo (anteriormente REALbasic), Python , Ruby , Java , Visual Basic .NET , C # y Fortran 2003 . Ejemplos de un lenguaje basado en objetos, pero no orientado a objetos, son las primeras versiones de Ada , Visual Basic (VB), JavaScript y Fortran 90 . Todos estos lenguajes admiten la definición de un objeto como estructura de datos, pero carecen de polimorfismo y herencia.

En la práctica, el término basado en objetos generalmente se aplica a aquellos lenguajes basados ​​en objetos que no también están orientados a objetos, aunque todos los lenguajes orientados a objetos también están basados ​​en objetos, por definición. En cambio, los términos OBJETO DE basan y orientado a objetos se utilizan normalmente como alternativas mutuamente excluyentes, y no como categorías que se solapan.

A veces, el término basado en objetos se aplica a los lenguajes de programación basados en prototipos , verdaderos lenguajes orientados a objetos que carecen de clases, pero en los que los objetos heredan su código y datos directamente de otros objetos de plantilla . Un ejemplo de un lenguaje de secuencias de comandos basado en prototipos de uso común es JavaScript .

Tanto los lenguajes basados ​​en objetos como los orientados a objetos (ya sean basados ​​en clases o basados ​​en prototipos) se pueden verificar de forma estática . La verificación estática de los lenguajes basados ​​en prototipos puede resultar difícil, porque estos lenguajes a menudo permiten que los objetos se extiendan dinámicamente con un nuevo comportamiento, e incluso que su objeto principal (del cual heredan) se cambie, en tiempo de ejecución .

Diferencia entre lenguajes orientados a objetos y basados ​​en objetos

Lenguaje orientado a objetos Lenguaje basado en objetos
Los lenguajes orientados a objetos admiten todas las características de la programación orientada a objetos (POO): abstracción , encapsulación , herencia , polimorfismo Los lenguajes basados ​​en objetos admiten un subconjunto de las características de la programación orientada a objetos, como el polimorfismo o la herencia.
Ejemplos: C ++ , C # , Java , etc. Ejemplos: Visual Basic (pre.NET)

Referencias