Un lenguaje basado en objetos es un lenguaje de programación que proporciona una construcción para encapsular el estado y el comportamiento como un objeto . Un lenguaje que también admite herencia o subtipificación se clasifica como orientado a objetos . [1] Aunque orientado a objetos parece un superconjunto de basado en objetos, se utilizan como alternativas mutuamente excluyentes, en lugar de superponerse. [ cita requerida ] Ejemplos de lenguajes estrictamente basados en objetos (que admiten una característica de objeto pero no herencia o subtipificación) son las primeras versiones de Ada [2] , Visual Basic 6 (VB6) y Fortran 90 .
Algunos clasifican la programación basada en prototipos como basada en objetos, aunque admite la herencia y la subtipificación, aunque no a través de un concepto de clase . En cambio, un objeto hereda su estado y comportamiento de un objeto de plantilla . Un lenguaje de uso común con soporte para programación basada en prototipos es JavaScript .
Ada 83 en sí no se considera generalmente orientado a objetos; más bien, según 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.