Das Kefk Network Wiki befindet sich im Testbetrieb.
Konstruktoren und Destruktoren
Aus Kefk.
Mit Konstruktoren und Destruktoren werden in der Programmierung spezielle Prozeduren bezeichnet, die bei der Erzeugung und Zerstörung von Variablen aufgerufen werden.
Der Konstruktor wird bei der Erzeugung der Variablen aufgerufen. Er wird dazu verwendet, die Variable in einen definierten Anfangszustand zu versetzen. Dieser Vorgang nennt sich auch Initialisierung. Dabei besteht in der Regel die Möglichkeit, unterschiedliche Initialisierungsvarianten mittels der Aufrufparameter des Konstruktors auszuwählen. Im Konstruktor werden auch Vorbedingungen (siehe Design by Contract) geprüft, um sicherzustellen, dass bei der Erstellung die so genannte Invariante erfüllt wird.
Der Destruktor wird dagegen bei der Zerstörung der Variablen aufgerufen, und erledigt ggf. Aufräumarbeiten.
Durch Konstruktoren und Destruktoren bleibt der Anschein der Atomizität der Erstellung bzw. des Abbaus gewahrt, während am Punkt der Deklaration die Möglichkeit gegeben wird, die Regeln zur Erstellung und Auflösung von Variablen des betreffenden Typs auszuformulieren.
Typische Anwendungsfälle für Konstruktoren und Destruktoren sind die Belegung und Wiederfreigabe von Systemressourcen, so etwa Netzwerkverbindungen. In manchen Programmiersprachen können Konstruktoren und Destruktoren auch dazu verwendet werden, um für die Variable erforderlichen Speicherplatz anzufordern (im Konstruktor) oder wieder freizugeben (im Destruktor).
Konstruktoren und Destruktoren finden auch bei der objektorientieren Programmierung häufige Anwendung.
Programmiersprachen wie C++ garantieren die Ausführung von Destruktoren, wann immer der Gültigkeitsbereich der Variablen verlassen wird (siehe RAII). Deshalb werden mitunter Konstruktoren und Destruktoren eingesetzt, deren einziger Zweck die Sicherstellung korrekter Ressourcenbilanz im gegebenen Kontext ist.
Programmiersprachen wie Java oder Python verwenden das zu Destruktoren alternative Konzept der Finalisierung, bei der Aufräumarbeiten nicht zum frühest möglichen Zeitpunkt, sondern erst mit dem nächsten Lauf der automatischen Speicherbereinigung (engl. Garbage-Collection) durchgeführt wird. Die Prozedur, die dies erledigt, nennt sich Finalisierungsroutine oder Finalisierer. Finalisierer haben im Vergleich mit Destruktoren einige Einschränkungen. So können z. B. Finalisierer im Allgemeinen nicht auf andere Variablen verweisen, da es sein kann, dass diese bereits abgebaut wurden.
