Closure

Die Bildung einer Abstraktion ist in A++ nicht ein absolutes, von Allem losgelöstes Ereignis. Eine Abstraktion erfolgt immer in einem bestimmten Kontext, der somit wesentlich zu der gebildeten Abstraktion gehört.

Die Lambda-Abstraktion wird zum Zeitpunkt ihrer Erzeugung mit ihrem Kontext oder ihrer Umgebung verbunden. Das Resultat dieser Verkapselung wird `Closure' genannt.

Eine Closure ist eine Art der Verkapselung wie wir sie in der Objekt-Orientierung finden. In der Objekt-Orientierung sind in einem Objekt Daten und Funktionen verkapselt.

Die Attribute des Objektes sind mit dessen Methoden gemäß ausdrücklicher Festlegung in der Klassendefinition oder im Aufbau des Konstruktors zu einer Einheit verbunden. Bei einer Closure dagegen erfolgt diese Verkapselung nicht durch willkürliche, ausdrückliche Definitionen, sondern alles, was zum textlichen Umfeld einer Funktion gehört wird automatisch in diese Verkapselung einbezogen.

Wir haben deshalb in `Programmierung pur' das Bild einer Muschel (engl. `clam') als Symbol für eine Closure gewählt.

Fundamentalbegriff 6 (Closure)   Eine Funktion wird eine “Closure” genannt, wenn sie mit der sie umgebenden Menge der Daten und Funktionen fest verkoppelt ist.

Die Variablen der geerbten Umgebung werden “freie Variable” und die Argumente der Funktion werden als “gebundene Variable” bezeichnet. Die in der Funktion definierten Variablen heißen “lokale Variable”.

Alle Variablen einer echten Closure haben unbegrenzte Lebensdauer.


Abbildung 1: Definition einer “closure”
\includegraphics[scale=1.00]{../../images/closure.eps}

Abbildung 2: Aufruf einer “closure”
\includegraphics[scale=1.00]{../../images/closure2.eps}



Georg Loczewski 2003-08-07