|
|
Ein Objekt ist in der objektorientierten Programmierung ein Softwaregebilde mit individuellen Merkmalen. Es definiert sich über seine Identität, seinen Zustand und sein Verhalten (Bonmot: "Ist was, hat was, kann was"). Der Zustand eines Objekts wird durch Instanzvariablen, sein Verhalten durch Methoden implementiert. In objektorientierten Programmen bilden Objekte die Einheiten der Datenkapselung. Oft werden sie verwandt, um Dinge der realen Welt zu modellieren.
In klassischen objektorientierten Sprachen sind alle Objekte Instanzen von Klassen. Durch die Definition einer Klasse sind die Merkmale all derjenigen Objekte festgelegt, die aus dieser einen Klasse als Instanzen hervorgehen können. Objekte, die als Instanzen von von einer Basisklasse abgeleiteten Klassen erzeugt wurden, können auch wie Instanzen dieser Basisklasse verwendet werden.
In rein objektorientierten Sprachen wie Smalltalk sind, der Philosophie alles ist ein Objekt folgend auch elementare Typen wie Ganzzahlen (Integer) durch Objekte repräsentiert. Auch Klassen selbst sind hier Objekte, die wiederum Instanzen von Metaklassen sind. Viele Sprachen, unter anderem C++ und Java folgen allerdings nicht der reinen Lehre der Objektorientierung; daher sind dort elementare Typen keine vollwertigen Objekte, sondern müssen auf Methoden und Struktur komplett verzichten.
In den letzten Jahren zeichnet sich eine interessante Weiterentwicklung der klassischen, klassenbasierten OO ab, die objektbasierte OO. Konsequentes Weiterdenken der alles ist ein Objekt-Philosophie führte zu der Erkenntnis, daß eigentlich keine Klassen erforderlich sind, um objektorientierte Programmierung zu betreiben. Es reicht prinzipiell aus, Prototypen, also bereits vorhandene Objekte zu klonen (zu duplizieren) und ihr Verhalten, ihre Struktur oder ihren Zustand zu verändern. Die wohl einflussreichste Sprache auf diesem Gebiet ist Self, die verbreiteste JavaScript.