Destruktor: Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 41: Zeile 41:
Diese (ebenfalls nicht-triviale) Technik hilft, viele Programmierfehler zu vermeiden. Sie
Diese (ebenfalls nicht-triviale) Technik hilft, viele Programmierfehler zu vermeiden. Sie
kann allerdings temporär zu Perfomanzeinbußen führen.
kann allerdings temporär zu Perfomanzeinbußen führen.
=Quelle=
*[[Kowarschick, W.: Multimedia-Programmierung (Web-Site)]]
*[[Kowarschick, W. (2002): Multimedia-Programmierung Objektorientierte Grundlagen]]
*[[Kowarschick, W. (2002): Skriptum zur Vorlesung Multimedia Softwareentwicklung II]]


=Siehe auch=
=Siehe auch=
Zeile 48: Zeile 54:
[[Kategorie:Objektorientierte Programmierung]]
[[Kategorie:Objektorientierte Programmierung]]
[[en:Destructor]]
[[en:Destructor]]
{{GlossarWiki-konformer Artikel}}

Version vom 4. Oktober 2006, 14:08 Uhr

Definition

Ein Destruktor ist eine spezielle Prozedur zur "Vernichtung" existierender Objekte.

Ein Destruktor führt bei Aufruf folgende Aufgaben durch:

  1. Optional: Aktivierung weiterer Finalisierungsmethoden; insbesondere können Beziehungen aufgelöst und weitere Objekte zerstört werden
  2. Optional: Löschung des Objektzustandes, d.h. Überschreibung des Speicherplatzes mit geeigneten Finalwerten (Datenschutz!)
  3. Freigabe des für den Objektzustand reservierten Speicherplatzes
  4. Markieren des Objektidentifikators als ungültig (oder Freigabe des Objektidentifikators)

Bemerkungen

Destruktor als Methode

Ein Destruktor kann einer Klasse als Modifikationsmethode zugeordnet sein. Ein derartiger Destruktor veringert bei jedem Aufruf die zugehörige Klassenextension um ein Objekt.

Es gibt aber auch Destruktoren, die keiner Klasse zugeordnet sind. Derartige Konstruktoren zerstören Objekte, die ebenfalls keiner Klasse zugeordnet sind.

Beziehungen

Beziehungen zu anderen Objekten können nicht nur vom Destruktor, sondern auch früher von anderen Prozeduren und Modifikationsmethoden gelöscht werden.

Löschung des Objektzustandes

Die Löschung des Objektzustandes durch Überschreiben des Speicherplatzes mit binären Nullen oder Zufallszahlen wird i. Allg. nicht direkt unterstützt. Das heißt, wenn dies aus Datenschutzgründen notwendig sein sollte, muss der Programmierer entsprechenden Code selbst schreiben.

Freigabe des Objektidentifikators

Aus Sicht der "reinen objektorientierten Lehre" sollte ein Objektidentifikator niemals wiederverwendet werden, insbesondere dann nicht, wenn es möglich ist, Objektidentifikatoren im Klartext abzuspeichern oder auszudrucken. Anderenfalls könnten außerhalb des eigentlichen Systems Verweise auf falsche Objekte existieren.

Allerdings werden vor allem in hauptspeicherbasierten Programmiersystemen (Java, C++ etc.) meist Hauptspeicher-Adressen als Objektidentifikatoren verwendet. In derartigen Systemen müssen Objektidentifikatoren wiederverwendet werden, da (realer oder virtueller) Hauptspeicher nicht unbegrenzt zur Verfügung steht.

In objektorientierten Datenbanksystemen werden dagegen Objektidentifikatioren meist nicht wiederverwendet. Aus Performanzgründen werden die Objektidentifikatoren dann allerdings temporär durch Hauptspeicheradressen ersetzt, wenn ein Objekt in den Hauptspeicher geladen wird. Diese (nicht-triviale) Optimierungstechnik heißt Pointer Swizzling.

Garbage Collection

Viele objeteorientierte Programmiersysteme unterstützen Garbage Collection, d.h. die automatische Zerstörung von Objekten, auf die nicht mehr zugegriffen werden kann. In derartigen System braucht der Programmierer Destruktoren nicht explizit zu programmieren.

Diese (ebenfalls nicht-triviale) Technik hilft, viele Programmierfehler zu vermeiden. Sie kann allerdings temporär zu Perfomanzeinbußen führen.

Quelle

Siehe auch

Konstruktor

Wikipedia:Konstruktoren und Destruktoren


Dieser Artikel ist GlossarWiki-konform.