Konstruktoren und Destruktoren

Konstruktoren und Destruktoren

Als Konstruktoren und Destruktoren (aus dem Englischen auch kurz ctor bzw. dtor genannt) werden in der Programmierung spezielle Prozeduren bzw. Methoden bezeichnet, die beim Erzeugen und Auflösen von Objekten und Variablen aufgerufen werden. Konstruktoren können mit Parametern versehen werden, während Destruktoren in der Regel argumentfrei sind. Konstruktoren haben per Definition implizit eine Referenz vom eigenen Typ als Rückgabewert, während Destruktoren keinen bzw. einen leeren Typ als Rückgabewert haben.

Durch Konstruktoren und Destruktoren bleibt der Anschein der Atomarität der Erstellung bzw. des Abbaus gewahrt. Gleichzeitig können bereits bei der Deklaration durch Übergabe von bestimmten Parametern die Regeln zur Erstellung und Auflösung von Variablen des betreffenden Typs formuliert werden.

Konstruktoren und Destruktoren kommen sowohl in der Objektorientierten als auch in der prozeduralen Programmierung vor.

Inhaltsverzeichnis

Konstruktoren

Die Aufgabe von Konstruktoren ist, Objekte in einen definierten Anfangszustand zu bringen und so benötigte Ressourcen zu reservieren, insofern diese zum Zeitpunkt der Objekterstellung bereits bekannt sind. Konstruktoren werden dadurch gekennzeichnet, dass sie denselben Namen wie der zugehörige Datentyp und implizit den Datentyp zurückgeben. Aufgrund dieses impliziten Rückgabetyps muss dieser in der Regel nicht angegeben werden. Einige Sprachen, wie C++, gehen dabei einen Schritt weiter und verbieten die Angabe eines Rückgabetyps.

In der Objektorientierten Programmierung können Konstruktoren wie normale Methoden überladen werden.

Konstruktortypen

nullary constructor [1] ist ein Konstruktor ohne Parameter:

   MyClass ()

In Java wird eine Klasse, die keinen expliziten Konstruktor hat, implizit mit einem parameterlosen Konstruktor (default constructor [2]) versehen.

Ein copy constructor dient der Erzeugung einer Objektkopie und hat den eigenen Objekttyp als Parameter (vergleiche flache Kopie vs. tiefe Kopie):

   MyClass (MyClass object)

Ein forwarding constructor (auch constructor forwarding genannt) gibt die Parameter an einen anderen Konstruktor weiter und verwendet Standardwerte für die fehlenden Parameter. Dies ist insbesondere für Programmiersprachen relevant, die keine Standardwerte unterstützen (z. B. Java, C#). Dieses Konstrukt ist zu unterscheiden von einer Initialisierungsliste, in der wirklich Werte gesetzt werden, während der forwarding constructor nur Werte weitergibt.

 Object(int value) : this(value, 0)
 Object(int value1, int value2)

Destruktoren

Destruktoren sind in der Regel dafür verantwortlich vom Objekt benutzte Ressourcen freizugeben. 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, in C++ beispielsweise bei der Template-Klasse auto_ptr.

Unterschied zur Finalisierung

Programmiersprachen wie Java oder Python und die Entwicklungsplattform .NET 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 dürfen beispielsweise Finalisierer im Allgemeinen nicht auf andere Objekte verweisen, da es sein kann, dass diese bereits abgebaut wurden.

Siehe auch

Literatur

  • Bjarne Stroustrup: Die C++ Programmiersprache. 4. aktualisierte und erweiterte Auflage. Addison-Wesley, 2000, ISBN 3-8273-1660-X

Einzelnachweise

  1. nullary constructor in der englischsprachigen Wikipedia
  2. default constructor in der englischsprachigen Wikipedia

Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Constructor — Als Konstruktoren und Destruktoren werden in der Programmierung spezielle Prozeduren bezeichnet, die beim Erzeugen und Zerstören von Objekten oder Variablen aufgerufen werden. Konstruktoren bringen die Objekte in einen definierten Anfangszustand …   Deutsch Wikipedia

  • Destruktor — Als Konstruktoren und Destruktoren werden in der Programmierung spezielle Prozeduren bezeichnet, die beim Erzeugen und Zerstören von Objekten oder Variablen aufgerufen werden. Konstruktoren bringen die Objekte in einen definierten Anfangszustand …   Deutsch Wikipedia

  • Konstruktor — Als Konstruktoren und Destruktoren werden in der Programmierung spezielle Prozeduren bezeichnet, die beim Erzeugen und Zerstören von Objekten oder Variablen aufgerufen werden. Konstruktoren bringen die Objekte in einen definierten Anfangszustand …   Deutsch Wikipedia

  • Methode (Programmierung) — Der Begriff Methode (Eng. method oder member function, zu deutsch auch Mitgliedsfunktion) wird in der Programmierung allgemein als Sammelbegriff sowie auch synonym unter anderem für Funktionen und Prozeduren verwendet. Speziell in der… …   Deutsch Wikipedia

  • Member — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Membervariable — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Methode (objektorientierte Programmierung) — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Objektorientierte Programmiersprache — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Objektorientierte Softwareentwicklung — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Objektorientiertes Programmieren — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”