Objektbasierte Programmiersprache
Der Begriff objektbasierte Programmiersprache kann im technischen Sinne verwendet werden, um jede Programmiersprache zu beschreiben, die die Idee der Kapselung von Zuständen und Methoden innerhalb von Objekte verwenden. Objektbasierte Programmiersprachen müssen Vererbung oder Subtypisierung nicht unterstützen; Programmiersprachen, die beides unterstützen, werden als objektorientiert bezeichnet. Objektbasierte Programmiersprachen, die Vererbung oder Subtypisierung nicht unterstützen, werden im Allgemeinen nicht als echte objektorientierter Programmiersprachen gesehen.[1]
Beispiele objektorientierter Programmiersprachen sind Simula, Smalltalk, C++ (dessen Objekte auf Simula basieren), Objective-C (dessen Objekte auf Smalltalk basieren), Eiffel, Xojo (früher REALbasic), Python, Ruby, Java, Visual Basic .NET, und C#. Beispiele objektbasierter, aber nicht objektorientierter Sprachen sind frühe Versionen von Ada, Visual Basic und JavaScript. Diese Sprachen unterstützen die Definition von Objekten als Datenstruktur, weisen aber keinen Polymorphismus oder Vererbung auf.
Faktisch wird der Begriff „objektbasiert“ in der Regel für solche objektbasierte Sprachen verwendet, die nicht objektorientiert sind, obwohl eigentlich alle objektorientierten Programmiersprachen per definitionem auch objektbasiert sind. Stattdessen werden „objektbasiert“ und „objektorientiert“ als sich gegenseitig ausschließend definiert.
Manchmal wird das Adjektiv „objektbasiert“ auf prototypenbasierte Sprachen angewendet.
Sowohl objektbasierte als auch objektorientierte Sprachen (egal ob klassenbasiert oder prototypenbasiert) können statisch typisiert sein. Statisch-überprüfende prototypenbasierte Sprachen können schwierig sein, weil sie oft erlauben, dass das Verhalten der Objekte dynamisch erweitert werden kann und sogar ihr Elternteil (von dem sie erben) sich während der Laufzeit verändert.[2]
Einzelnachweise
- S Barbey, M. Kempe, and A. Strohmeier.: Object-Oriented Programming with Ada 9X. In: Swiss Federal Institute of Technology in Lausanne Software Engineering Laboratory (Hrsg.): Draft Technical Report. 1993. Abgerufen am 15. Dezember 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.“
- Peter Wegner: Dimensions of Object-Based Language Design. In: OOPSLA’87 Conference Proceedings. 22, Nr. 12, Dezember 1987, S. 168–182.