Prototypenbasierte ProgrammierungPrototypenbasierte Programmierung, auch als klassenlose Objektorientierung bekannt, ist eine Form der objektorientierten Programmierung, die auf das Sprachelement der Klasse verzichtet. Objekte werden nicht durch Instanziierung einer Klasse, sondern durch Klonen bereits existierender Objekte erzeugt. Bei diesem Klonen werden alle Eigenschaften (Attribute und Methoden) des Prototyp-Objektes kopiert, sie können aber überschrieben werden, und das neue Objekt kann mit neuen Eigenschaften versehen werden. Alle bestehenden Objekte können Prototypen neuer Objekte sein. Einige Sprachen kopieren die Objekte beim Klonen vollständig und es bleibt keine Verbindung zwischen dem Klon und seinem Prototyp; die meisten prototypenbasierten Sprachen verwenden aber ein spezielles Attribut, über das eine Verbindung vom Klon zum Prototyp aufrechterhalten wird. Über diese Verbindung erben alle vom Prototyp geklonten Objekte auch nachträgliche Änderungen am Prototyp. Die Objekte können als assoziatives Array verstanden werden; die Schlüssel dieser Tabelle werden für gewöhnlich Slot genannt, wobei meistens nicht zwischen Attributen (Daten) und Methoden (Operationen) des Objekts unterschieden wird: Methoden-Slots verweisen häufig nur auf außerhalb des Objektes liegenden Programmcode. Vor- und NachteilePrototypenbasierte Sprachen erlauben eine größere Flexibilität bei der Modellierung, da sie den Programmierer nicht zwingen, seine Objekte in eine statische, zur Compilezeit 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 prototypenbasierten Sprachen bei diesen nicht realisieren. BeispielDas folgende Beispiel in ECMAScript 5 erzeugt zuerst ein Objekt var object1 = { a : 1, b : 2 };
Zum Klonen gibt es in ECMAScript 5 eine vordefinierte Funktion var object2 = Object.create( object1 );
Diesem neuen Objekt können nun weitere Attribute zugeordnet werden object2.c = 3;
object2.d = 4;
Das geklonte Objekt hat nun vier Attribute:
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. |
Portal di Ensiklopedia Dunia