Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Objekt (Programmierung)

Ein Objekt in der Programmierung bezeichnet eine inhaltlich zusammengehörige Datenmenge: In der objektorientierten Programmierung wird eine Objektinstanz …

Inhalt5 Abschnitte
  1. 1. Grundbegriff und Bedeutung
  2. 2. Objekte in der objektorientierten Programmierung
  3. 3. Instanziierung und Beispiele
  4. 4. Objekte in C
  5. 5. Objekte im Semantic Web

Grundbegriff und Bedeutung

Ein Objekt bezeichnet in der Programmierung eine inhaltlich zusammengehörige Datenmenge. Die genaue Bedeutung hängt vom jeweiligen Bereich ab.

In der objektorientierten Programmierung ist ein Objekt meist eine konkrete Instanz einer Klasse. Zur Laufzeit wird dafür Speicher reserviert, in dem seine Daten und Methoden gespeichert werden. In nicht objektorientierten Sprachen wie C kann dagegen bereits ein reservierter Bereich des Datenspeichers als Objekt gelten. Im Semantic Web sind Objekte grundlegende Ressourcen, die über das Internet zugänglich und miteinander verknüpft sind.

Objekte in der objektorientierten Programmierung

Jedes objektorientierte Objekt besitzt drei grundlegende Merkmale:

  • Zustand: Er ergibt sich aus den Eigenschaften des Objekts, den sogenannten Attributen, und seinen Verbindungen zu anderen Objekten.
  • Verhalten: Es wird durch die Methoden bestimmt. Methoden sind die einem Objekt zugeordneten Bearbeitungsfunktionen.
  • Identität: Sie unterscheidet ein Objekt von allen anderen Objekten, selbst wenn diese denselben Zustand und dasselbe Verhalten besitzen.

In den meisten objektorientierten Programmiersprachen wird ein Objekt aus einer Klasse erzeugt. Eine Klasse ist eine allgemeine Beschreibung des Datentyps, der möglichen Attribute und der Methoden ihrer Objekte. Das konkrete Objekt wird auch Exemplar oder Instanz genannt und besitzt zur Laufzeit seine eigenen Eigenschaften und Methoden.

Manche objektorientierten Sprachen verwenden kein Klassenkonzept. Dort kann ein neues Objekt als Kopie eines vorhandenen Objekts entstehen und anschließend um Attribute oder Methoden erweitert werden. Objekte ohne Vorlage können teilweise direkt angelegt werden. In Lua lässt sich beispielsweise eine „Tabelle“ erzeugen, die Werte einfacher Datentypen, Funktionen oder weitere Tabellen enthalten kann.

Instanziierung und Beispiele

Instanziierung bezeichnet das Erzeugen eines konkreten Objekts einer bestimmten Klasse oder das Erzeugen einer Kopie eines bereits vorhandenen Objekts. In vielen Programmiersprachen wird dabei ein Konstruktor ausgeführt. Ein Konstruktor ist eine besondere Funktion, die ein neues Objekt einrichtet. Mit der entstandenen Instanz kann bis zu ihrer Zerstörung gearbeitet werden.

Beispiel Auto: Eine Klasse „Auto“ beschreibt allgemein, welche Eigenschaften ein Auto besitzt. Wird ein konkretes Auto mit den Angaben „Porsche, schwarz, Fahrzeugnummer 42“ erzeugt, ist dieses Objekt eine Instanz der Klasse „Auto“. Das Erzeugen dieses konkreten Autos ist die Instanziierung.

Beispiel Buch: Die Klasse „Buch“ kann in einer Bibliothek Attribute wie Inventarnummer, Ausleihstatus und Beschaffungsdatum sowie Methoden zur Bearbeitung dieser Daten enthalten. Eine Methode kann beispielsweise den Ausleihstatus ändern, wenn ein Kunde das Buch ausleiht. Ein bestimmtes Buch mit der Inventarnummer 4711 ist ein konkretes Objekt der Klasse. Gleichzeitig kann ein weiteres, eigenständiges Buchobjekt mit der Inventarnummer 1234 existieren.

Der verwandte Begriff Entität stammt aus der Datenmodellierung, etwa aus dem ER-Modell. Ein Entitätstyp besitzt Attribute, aber keine Methoden. Eine objektorientierte Klasse kann als programmtechnische Repräsentation eines Entitätstyps verstanden werden, die zusätzlich Bearbeitungsfunktionen in Form von Methoden enthält.

Objekte in C

C ist keine objektorientierte Programmiersprache. Nach ISO/IEC 9899:1999, § 3.14, ist ein Objekt eine „region of data storage in the execution environment, the contents of which can represent values“, also ein Bereich des Datenspeichers in der Ausführungsumgebung, dessen Inhalt Werte darstellen kann. Wird ein solches Objekt angesprochen, kann es als Objekt eines bestimmten Typs interpretiert werden.

Der Zustand eines C-Objekts wird vollständig durch die Werte seiner Attribute bestimmt. Unbenannte Attribute sowie Füllbits und Füllbytes, auch Padding genannt, gehören nicht zum definierten Zustand; ihr Inhalt ist undefiniert.

Im Sprachkern von C fehlen objektorientierte Konzepte wie Vererbung, Polymorphie und Datenkapselung. Sie können mithilfe selbst definierter Funktionen und Programmbibliotheken nachgebildet werden. Da C keine Methoden kennt, verwendet man dafür Funktionen, die als ersten Parameter einen Zeiger auf den reservierten Speicherbereich erhalten. Polymorphie, also unterschiedliches Verhalten über eine gemeinsame Schnittstelle, kann durch Funktionszeiger verwirklicht werden, die als Attribute im Objekt gespeichert sind.

Die Identität eines C-Objekts wird durch seine Speicheradresse festgelegt. Daher muss grundsätzlich jedes Objekt eine eigene Adresse besitzen, und jede Datenstruktur belegt mindestens 1 Byte Speicher. Benötigt das Programm die Adresse eines Objekts nicht und erkennt der Compiler dies, kann die tatsächliche Speicherreservierung entfallen, sofern sich dadurch die Semantik des Programms nicht ändert.

Objekte im Semantic Web

Das Semantic Web ist im Wesentlichen ein Framework für verteilte Objekte. Seine Schlüsseltechnologien sind das Resource Description Framework (RDF) und die Web Ontology Language (OWL). RDF beschreibt grundlegende Objekte beziehungsweise Ressourcen mit Namen, Eigenschaften, Attributen und Beziehungen. OWL ergänzt ein umfangreicheres, auf der Mengenlehre beruhendes Objektmodell mit zusätzlichen Möglichkeiten wie Mehrfachvererbung.

OWL-Objekte sind dynamischer als herkömmliche Objekte in objektorientierten Sprachen wie C#, C++ und Java. Klassische Programmobjekte werden normalerweise mit einfacher Vererbung in statische Hierarchien übersetzt. Ihre Typen und Klassen sind zur Übersetzungszeit bekannt; eine Instanz kann ihren Typ zur Laufzeit nicht ändern. Ein OWL-Individuum kann dagegen mehreren Klassen angehören, seine Klassenmitgliedschaft zur Laufzeit ändern und damit eine Instanz neuer oder anderer Klassen werden. Auch Klassen können zur Laufzeit erstellt oder verändert werden. Reasoner können OWL-Modelle zur Erstellungszeit oder zur Laufzeit klassifizieren und auf Konsistenz prüfen.

Auch Eigenschaften funktionieren unterschiedlich. In objektorientierten Sprachen werden sie für eine Klasse und deren Unterklassen definiert. Instanzen dürfen nur passende, korrekt typisierte Werte besitzen. In RDF und OWL sind Eigenschaften selbstständige Entitäten und können unabhängig von bestimmten Klassen existieren. Individuen können Werte für beliebige Eigenschaften besitzen; Bereichs- und Domäneneinschränkungen dienen der Typprüfung und Typinferenz.

Herkömmliche Klassen drücken Verhalten hauptsächlich durch imperative Funktionen und Methoden aus und können Bestandteile als privat kapseln. OWL-Klassen formulieren ihre Bedeutung ausdrücklich durch OWL-Anweisungen; zwingender Programmcode kann ihnen nicht angehängt werden. Alle Teile einer RDF- oder OWL-Datei sind öffentlich und von anderen Orten aus verlinkbar.

Ein besonders wichtiger Unterschied betrifft fehlendes Wissen. Programmierobjekte und die meisten Datenbanksysteme verwenden die Closed world assumption: Kann eine Aussage wegen fehlender Informationen nicht als wahr bewiesen werden, gilt sie als falsch. Semantic-Web-Objekte verwenden die Open world assumption: Ohne ausreichende Informationen bleibt eine Aussage unbekannt und kann wahr oder falsch sein; als falsch gilt sie erst, wenn entsprechende Informationen vorliegen.

RDF und OWL wurden für das Web und das Teilen von Domänenmodellen entwickelt. Solche Modelle stellen Wissen über einen Anwendungsbereich dar und unterstützen die Informationsintegration. Benannte RDF- und OWL-Ressourcen besitzen einen eindeutigen URI, über den auf sie verwiesen werden kann. Für ihre Darstellung gibt es eine auf XML basierende Standardserialisierung mit eindeutigen URIs für die Ressourcen. Herkömmliche Programminstanzen sind dagegen von außerhalb eines laufenden Programms nicht ohne Weiteres ansprechbar; ihre Modelle und Objekte können zwar beispielsweise in XML oder anderen Formaten serialisiert werden, sind dadurch aber nicht in gleicher Weise webbasiert.

Lernvideos zu Objekt (Programmierung)

Weiterlesen

Programmierung Beim Programmieren sind wesentliche Aspekte zur Softwarequalität zu berücksichtigen und durch die Gestaltung des Quellcodes umzusetzen. Siehe dazu als Beispiele … Objektorientierte Programmierung Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee besteht darin … Laufzeit (Informatik) Der Begriff Laufzeit (englisch runtime) beschreibt in der Informatik einerseits die Zeitdauer, die ein Programm, ausgeführt durch einen Rechner, … Datentyp Die Konkretisierung der Operationsmenge führt zu Abstrakten Datentypen beziehungsweise Algebraischen Strukturen. Mit der weiteren Konkretisierung der … Methode (Programmierung) Methoden (englisch method oder member function) sind in der objektorientierten Programmierung Unterprogramme in der Form von Funktionen oder Prozeduren, … Programmiersprache Bei deklarativen Programmiersprachen ist der Ausführungsalgorithmus schon vorab festgelegt und wird nicht im Quelltext ausformuliert/beschrieben, sondern es … C (Programmiersprache) C ist eine imperative und prozedurale Programmiersprache, die der Informatiker Dennis Ritchie in den frühen 1970er Jahren an den Bell Laboratories entwickelte. Internet Mit Social-Media-Plattformen wie Facebook, Twitter oder YouTube trat das bidirektionale Austauschen von Inhalten unter den Nutzern (sogenanntem user … Attribut (Programmierung) Ein Attribut (von lateinisch attribuere ‚zuteilen', ‚zuordnen'), auch Eigenschaft genannt, gilt im Allgemeinen als Merkmal, Kennzeichen, Informationsdetail … Klasse (Objektorientierung) Die Klasse dient als Bauplan für die Abbildung von realen Objekten in Softwareobjekte und beschreibt Attribute (Eigenschaften) und Methoden (Verhaltensweisen) … Johann Wolfgang von Goethe Die Leiden des jungen Werther, Wilhelm Meisters theatralische Sendung. 1961, 701 Seiten. Band 10: Romane und Erzählungen II. Wilhelm Meisters Lehrjahre … Entität (Informatik) Als Entität (auch Informationsobjekt genannt, englisch entity) wird in der Datenmodellierung ein eindeutig zu bestimmendes Objekt bezeichnet, …