7.4.1 Objektorientierte Programmierung

Die Grundidee bei derObjektorientierten Programmierung (OOP) ist es, dass die Erstellung eines Computerprogramms an die reale Welt angelehnt ist,indem Strukturen in Objekten modellieren und organisieren werden. Dabei steht ein Objekt im Code oftmals für einen Gegenstand in der realen Welt.

Klassen und Objekte

Abstrahiert man weiter, fällt auf, dass es im Code sowie in der realen Welt oft viele gleiche Objekte/Gegenstände gibt, die gleiche Eigenschaften und Verhalten aufweisen. Diese Eigenschaften können natürlich unterschiedliche Ausprägungen besitzen (z. B. Farbe, Gewicht). Führt man jedoch die wichtigsten Eigenschaften des Gegenstands zusammen, kann ein Modell abgeleitet werden - also etwas, was die Ausprägung des einzelnen Gegenstands beschreibt.

Was in der realen Welt über ein Modell/Bauplan erfolgt, wird in der OOP mit Klassen umgesetzt. Klassen beschreiben alle Eigenschaften und Verhalten (Methoden) eines Objekts. Auf Basis einer Klasse können dann ein oder mehrere Objekte erzeugt werden.

Was in der realen Welt über ein Verhaltensmodell auf Gegenstände abgebildet werden kann, erfolgt in der OOP mittels Klassen. So beschreibt eine Klasse alle Eigenschaften und Verhalten (Methoden), die ein konkretes Objekts dann annehmen kann. Auf Basis einer Klasse können dann ein oder mehrere Objekte erzeugt werden.

Klassen ermöglichen zudem die Bildung von Vererbungshierarchien. Dadurch können die Eigenschaften und Methoden einer bestehenden Klasse in eine Unter- oder Kindklasse vererbt werden. Die neue Klasse kann den Code der übergeordneten Klasse verwenden und um eigene Eigenschaften oder Methoden erweitern.

Klassen und Objekte

Unterschiedliche Objekte einer Klasse haben immer gleiche Eigenschaften (name, standort, matrikelNummer) und Verhaltensweisen (besuchtVorlesung, bestehtPraktikum), aber beim Instanzieren des Objekts erhalten die Eigenschaften eines Objekts ihre unterschiedlichen Ausprägungen ("Ute", "Emden", 720121)


Objekte in JavaScript

In JavaScript können Objekte auf folgende Arten erstellt werden:

  1. Direkte Erstellung von Objekten mit object literals (wird häufig genutzt).
  2. Instanzierung einer Klasse, die mit einer Konstruktor-Funktion erstellt wurde (wird inzwischen eher seltener genutzt).
  3. Instanzierung einer Klasse, die mit dem Schlüsselwort class definiert wurde (seit ES6/JavaScript 2015 und inzwischen gängige Praxis).

Das Schlüsselwort class bietet eine verbesserte Syntax für Klassen. Zuvor wurden Klassen über Konstruktor-Funktionen definiert. JavaScript unterstützt insgesamt drei Arten, um Objekte zu erstellen.


Objektverarbeitung durch die prototype chain

Aus einer Klasse können beliebig viele Objekte erstellt werden, die zwar die gleichen Eigenschaften, aber unterschiedliche Werte besitzen. Anders als in vielen OOP-Sprachen wird in JavaScript nicht jedes Mal eine Kopie als eigenständiges Objekt erzeugt. Stattdessen basiert die Verarbeitung auf einer Verkettung von Referenzen, die als prototype chain bezeichnet wird. Ohne hier ins Detail zu gehen, lässt sich festhalten, dass JavaScript keine Klassen-Funktionalität im klassischen Sinn bietet. Dennoch stellt die prototype chain eine leistungsfähige und flexible Grundlage für die Arbeit mit objektorientierten Konzepten dar.

Im nächsten Abschnitt werden zunächst Objekte ohne Klassen behandelt. Danach folgen die beiden Möglichkeiten zur Objekterstellung über Klassen.