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 la herencia o la subtipificación no suelen considerarse 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 (antes 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 yFortran 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 . [1] [2]
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. [ cita requerida ] |
Ejemplos: C ++ , C # , Java , etc. | Ejemplos: Visual Basic (pre.NET) [ cita requerida ] |
Referencias
- ^ Wegner, Peter (diciembre de 1987). Meyrowitz, Norman (ed.). "Dimensiones del diseño de lenguaje basado en objetos" (PDF) . Actas de la conferencia OOPSLA'87 . 22 (12): 168-182.
- ^ Barbey, S .; Kempe, M .; Strohmeier, A. (1993). "Programación Orientada a Objetos con Ada 9X" . Borrador de Informe Técnico . Laboratorio de Ingeniería de Software del Instituto Federal Suizo de Tecnología en Lausana . Consultado el 15 de diciembre de 2013 .
En general, Ada 83 no se considera orientada a objetos; más bien, de acuerdo con la terminología de Wegner [Weg 87], se dice que está basado en objetos, ya que proporciona solo una forma restringida de herencia y carece de polimorfismo.