- Objekt (Programmierung)
-
Ein Objekt bezeichnet in der objektorientierten Programmierung (OOP) ein Exemplar eines bestimmten Datentyps oder einer bestimmten Klasse (auch „Objekttyp“ genannt). In diesem Zusammenhang werden Objekte auch als „Instanzen einer Klasse“ bezeichnet. Objekte sind also konkrete Ausprägungen („Instanzen“) eines Objekttyps.
Inhaltsverzeichnis
Pragmatische Definition in C
In C gibt es eine sehr pragmatische Definition, was dort als Objekt gilt:
object
region of data storage in the execution environment, the contents of which can represent values
Note: When referenced, an object may be interpreted as having a particular type; see 6.3.2.1– ISO/IEC 9899:1999: §3.14
C gilt allerdings nicht als objektorientierte Programmiersprache. Die Konzepte der objektorientierten Softwareentwicklung, wie Vererbung, Polymorphie und Kapselung fehlen im Sprachkern und müssen über selbstdefinierte Funktionen nachgebaut werden. Hierfür existieren verschiedene Bibliotheken von Drittanbietern. Sofern ausschließlich über diese Funktionen auf ein Objekt zugegriffen wird, erfüllt es die Kriterien eines Objektes aus OO-Sicht
Eigenschaften
Jedes Objekt hat einen Zustand, ein Verhalten und eine Identität. Der Zustand des Objektes setzt sich aus seinen Eigenschaften (Attribute) und Verbindungen zu anderen Objekten zusammen. Das Verhalten des Objektes wird durch die Menge seiner Methoden beschrieben. Die Identität unterscheidet ein Objekt von anderen Objekten, auch wenn diese anderen Objekte den gleichen Zustand und das gleiche Verhalten haben.[1]
Durch Konstruktion (siehe auch Konstruktoren und Destruktoren) wird aus einer Klasse ein Objekt oder Exemplar (Instanz) erzeugt. Diese Instanz besitzt dann zur Laufzeit seinen eigenen Datentyp, Eigenschaften und Methoden.
Beispiel
Der Quelltext zum Objekttyp (die Klasse) „Buch“ mit der identifizierenden Eigenschaft „Inventarnummer“ (im Falle einer Bibliothek und als einzelne Instanz) enthält die zugehörigen Eigenschaften (Inventarnummer, Ausleihstatus, Beschaffungsdatum, ...) und die Beschreibung zur Bearbeitung der Eigenschaften (die Methoden, wie z. B. die Veränderung des Ausleihstatus im Falle einer Ausleihe durch einen Kunden).
Ein Objekt ist dann eine reale Ausprägung der Klasse, also ein bestimmtes Buch, wie z. B. mit der Inventarnummer 4711. Objektorientierte Programmiersprachen erlauben die gleichzeitige Koexistenz verschiedener Objekte, also ein Buch mit der Nummer 4711 und 1234.
Realisierung in C
Der Zustand eines Objektes (im Sinne der o.g. Definition) ist durch die Werte seiner Attribute vollständig bestimmt. Unbenannte Attribute sowie Füllbits und -bytes (Padding) tragen dabei nichts zum definierten Zustand des Objektes bei, ihr Inhalt ist undefiniert.
C kennt keine Methoden. Diese müssen über Funktionen, die einen Zeiger auf das Objekt als ersten Parameter bekommen, nachgebildet werden. Polymorphie wird über Funktionszeiger, die als Attribute im Objekt gespeichert werden, realisiert.
Die eindeutige Identität eines Objektes wird durch seine Adresse definiert. Somit muss jedes Objekt eine eigene Adresse haben. Dies wird sichergestellt, indem jede Datenstruktur mindestens 1 Byte Speicher belegt. Wird die Adresse eines Objektes im Programm jedoch nicht benötigt und kann der Compiler dies erkennen, ist es möglich, dass für dieses Objekt kein Speicher reserviert wird, da die Semantik des Programmes sich hierdurch nicht ändert.
Unterschied zwischen Entität und Objekt
Der Begriff „Objekt“ ist in der Programmierung mit dem Begriff „Entität“ verwandt. Die Begriffe Entität(styp) und Objekt(typ) gelten in ihrer jeweiligen Welt, der Welt der Datenmodellierung und der Welt der Objektorientierten Programmierung. Sie entsprechen einander, sind aber nicht identisch oder synonym. So hat z. B. Objekt eine Reihe ihm eigener Funktionen, Eigenschaften und Methoden, was bei einer Entität nicht der Fall ist. Anders ausgedrückt: Objekttyp = programmtechnische Repräsentation des Entitätstyps plus zugehörige Bearbeitungsfunktionen.
Einzelnachweise
- ↑ Heide Balzert: Lehrbuch der Objektmodellierung: Analyse und Entwurf. Spektrum Akademischer Verlag, Heidelberg 1999, ISBN 3-8274-0285-9, S. 18.
Wikimedia Foundation.