Prototypenbasierte Programmierung

Prototypenbasierte Programmierung

Prototypenbasierte Programmierung, auch als klassenlose Objektorientierung bekannt, ist eine Form der Objektorientierten Programmierung, die auf das Sprachelement der Klasse verzichtet. Objekte werden durch Klonen bereits existierender Objekte erzeugt. Alle bestehenden Objekte können Prototypen neuer Objekte sein. Beim Klonen werden alle Eigenschaften (Attribute und Methoden) des Prototyp-Objektes kopiert; das neue Objekt kann mit neuen Eigenschaften versehen und die kopierten verändert werden. Einige Sprachen kopieren die Objekte beim Klonen vollständig und es bleibt keine Verbindung zwischen dem Klon und seinem Prototypen; die meisten prototypenbasierten Sprachen verwenden aber ein spezielles Attribut (in JavaScript z. B. "prototype" genannt), über das eine Verbindung vom Klon zum Prototypen aufrechterhalten wird. Über diese Verbindung erben alle vom Prototypen geklonten Objekte auch nachträgliche Änderungen am Prototypen.

Objekte können als Assoziatives Array verstanden werden; die Schlüssel dieser Tabelle werden für gewöhnlich Slot genannt, wobei meist nicht zwischen Attributen (Daten) und Methoden (Operationen) des Objekts unterschieden wird: Methoden-Slots verweisen häufig nur auf außerhalb des Objektes liegenden Programmcode.

Inhaltsverzeichnis

Vor- und Nachteile

Prototypenbasierte Sprachen erlauben eine größere Flexibilität bei der Modellierung, da sie den Programmierer nicht zwingen, seine Objekte in eine statische, zur Compile-Zeit festgelegte Klassenstruktur zu bringen. Objekte bleiben zur Laufzeit strukturell veränderbar. Diese Flexibilität beinhaltet aber auch das Risiko einer schlechteren Wartbarkeit des Programms.

Viele Optimierungen, die der Compiler in klassenbasierten Sprachen bereits zum Zeitpunkt der Übersetzung vornehmen kann, lassen sich aufgrund der dynamischen Natur von prototypen-basierten Sprachen bei diesen nicht realisieren.

Beispiele

Das folgende Beispiel in der Programmiersprache JavaScript erzeugt zwei Objekte, object1 und object2, und stellt durch die Zeile child.prototype = object1; die Eltern-Kind-Beziehung zwischen den beiden Objekten her.

  var object1 = { a : 1, b : 2 };
  function child() {
    this.c = 3;
    this.d = 4;
  }
  child.prototype = object1;
  var object2 = new child();
  alert( object2.a ); // zeigt den Wert 1 an
  alert( object2.c ); // zeigt den Wert 3 an

Das zweite Beispiel, auch in der Programmiersprache JavaScript, erzeugt dieselben beiden Objekte, verwendet dabei aber das für die prototypenbasierte Programmierung typische Klonen. In ECMAScript 3, dem JavaScript zugrunde liegenden Standard, steht diese Funktion nicht automatisch zur Verfügung. Sie kann aber mit wenigen Zeilen Code selbst definiert werden.

  function clone( object ) {
    function F(){};
    F.prototype = object;
    return new F;
  }
  var object1 = { a : 1, b : 2 };
  var object2 = clone( object1 );
  object2.c = 3;
  object2.d = 4;
  alert( object2.a );
  alert( object2.c );

Seit ECMAScript 5 existiert für diese Aufgabe die vordefinierte Methode Object.create(), womit eine eigene Helferfunktion unnötig wird.

  var object1 = { a : 1, b : 2 };
  var object2 = Object.create( object1 );
  object2.c = 3;
  object2.d = 4;
  alert( object2.a );
  alert( object2.c );

Liste prototypenbasierter Programmiersprachen


Im Prinzip lässt sich in jeder Programmiersprache, die Zeiger unterstützt, prototypenbasiert programmieren. Für Ruby und Perl existieren vorgefertigte Module, die dies unterstützen.

Siehe auch

Quellen


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?
Synonyme:

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Methode (objektorientierte Programmierung) — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Vererbung (objektorientierte Programmierung) — Vererbung dargestellt mittels UML. Die abgeleitete Klasse hat die Attribute x und y und verfügt über die Methoden a und b (im UML Sprachgebrauch Operationen a und b). Die Vererbung (engl. Inheritance) ist eines der grundlegenden Konzepte der… …   Deutsch Wikipedia

  • Member — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Membervariable — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Objektorientierte Programmiersprache — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Objektorientierte Softwareentwicklung — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Objektorientiertes Programmieren — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • ECMAScript — JavaScript ist eine Skriptsprache, die hauptsächlich für das DOM Scripting in Web Browsern eingesetzt wird. Dabei ist unter JavaScript die Gesamtheit aus den Eigenschaften des Browsers (beziehungsweise Clients oder Scripting Hosts) sowie des… …   Deutsch Wikipedia

  • JavaSkript — JavaScript ist eine Skriptsprache, die hauptsächlich für das DOM Scripting in Web Browsern eingesetzt wird. Dabei ist unter JavaScript die Gesamtheit aus den Eigenschaften des Browsers (beziehungsweise Clients oder Scripting Hosts) sowie des… …   Deutsch Wikipedia

  • Java Script — JavaScript ist eine Skriptsprache, die hauptsächlich für das DOM Scripting in Web Browsern eingesetzt wird. Dabei ist unter JavaScript die Gesamtheit aus den Eigenschaften des Browsers (beziehungsweise Clients oder Scripting Hosts) sowie des… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”