Object-based language
An object-based language is a programming language that provides a construct to encapsulate state and behavior as an object. A language that also supports inheritance or subtyping is classified as object-oriented.[1] Even though object-oriented seems like a superset of object-based, they are used as mutually exclusive alternatives, rather than overlapping.[citation needed]
Examples of object-based languages; lacking full object-oriented support; are early versions of Ada[2], Visual Basic 6 (VB6), and Fortran 90. These support an object feature but not polymorphism or inheritance.
Some classify prototype-based programming as object-based even though it supports polymorphism or inheritance albeit not via a class concept. Instead objects inherit their code and data from template objects. A commonly used language with prototype-based programming support is JavaScript;
Object-oriented language | Object-based language |
---|---|
Object-oriented languages support all of the features of object-oriented programming (OOP): abstraction, encapsulation, inheritance, polymorphism | Object-based languages support a subset of the features of OOP, such as polymorphism or inheritance.[citation needed] |
Examples: C++, C#, Java, etc. | Examples: Visual Basic (pre-.NET)[citation needed] |
References
- ^ Wegner, Peter (December 1987). "Dimensions of object-based language design" (PDF). In Meyrowitz, Norman (ed.). Conference proceedings on Object-oriented programming systems, languages and applications - OOPSLA '87. Vol. 22. pp. 168–182. doi:10.1145/38765.38823. ISBN 0897912470. S2CID 819420.
- ^ Barbey, S.; Kempe, M.; Strohmeier, A. (1993). "Object-Oriented Programming with Ada 9X". Draft Technical Report. Swiss Federal Institute of Technology in Lausanne Software Engineering Laboratory. Retrieved 15 December 2013.
Ada 83 itself is generally not considered to be object-oriented; rather, according to the terminology of Wegner [Weg 87], it is said to be object-based, since it provides only a restricted form of inheritance and it lacks polymorphism.