Deklaration

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Unter einer Deklaration versteht man in der Informatik das Bekanntmachen eines Namens im Programm. Mit der Deklaration können mehrere Eigenschaften dieses Namens festgelegt werden:

  • Worum handelt es sich? (z.B. Variable, Funktion, Datentyp, Klasse)
  • In welchem Bereich (Scope) ist dieser Name gültig?
  • Welche Art von Daten kann ich darin speichern (typisierte Variablen)
  • Wie sind die Daten zu diesem Namen strukturiert (Typ-Deklaration)

Die Deklaration ist ein Muss, auf sie kann nicht verzichtet werden. Einige Programmiersprachen erwecken den Eindruck, als müsse man nicht deklarieren. Tatsächlich ist es aber so, dass diese Sprachen Regeln formulieren, wie sie bislang unbekannte Namen deuten und einordnen, d. h. sie verfügen über eine Autodeklaration. Damit kann man gut fahren, oder böse über die Böschung kippen, wenn man die Regeln nicht exakt beachtet.

Ein Beispiel für eine Sprache mit Autodeklaration ist PHP. Undeklarierte Variablen ordnet es automatisch dem lokalen Scope zu. Für den Zugriff auf globale Variablen ist eine Deklaration mit global nötig, für das Einbinden einer Variablen in eine Closure braucht man use.

Nicht jede Programmiersprache unterstützt jede Art von Deklaration. Beispielsweise kennt JavaScript keine Deklaration eines Variablentyps, weil seine Variablen jeden Wert speichern können. Die Deklaration einer Datenstruktur (struct, union, Record) ist ebenfalls nicht vorgesehen. Eine Klassendeklaration ist mit dem class-Statement näherungsweise machbar.

Die Deklaration ist zu unterscheiden von der Definition oder Initialisierung. Der Begriff der Definition findet sich bei Funktionen und bezeichnet das Zuordnen eines Programmstücks zum deklarierten Namen. Bei einer Variablen spricht man eher von einer Initialisierung und meint damit die Zuweisung eines Anfangswertes an eine Variable.

Je nach verwendeter Programmiersprache ist es möglich, die Deklaration von der Definition oder Initialisierung zu trennen.

Beispiele in JavaScript
Deklaration und Initialisierung der Konstanten a
    const a = 7;
Deklaration und Definition der Funktion add7()
    function add7(x) {
        return 7 + x;
    }
Deklaration einer Variablen, ohne Initialsierung
    const b;
Definition einer Funktion ohne Deklaration, mit Zuweisung an eine Variable (anonyme Funktion)
    let add = function(t) { return t + 9; };

Es gibt auch Sprachen, wo man Funktionen deklariert, ohne sie sofort zu definieren. Dies geschieht beispielsweise in C, wenn man Bibliotheksfunktionen nutzt, oder wenn man eine Funktion vorab bekannt machen muss, weil man eine indirekte Rekursion programmiert (funcA ruft funcB auf, und funcB ruft funcA auf)