Was ist ein unveränderliches Objekt?
Bei der objektorientierten Programmierung ist ein unveränderliches Objekt ein Objekt, dessen Eigenschaften nach seiner Erstellung nicht mehr geändert werden können. Im Gegensatz dazu sind die meisten Objekte veränderbare Objekte, sodass einige oder alle ihrer Eigenschaften nach der Erstellung frei geändert werden können. Eine Vielzahl von Computersprachen kann unveränderliche Objekte erstellen, darunter Java, C ++, Erlang, Tcl und Scala.
Ein unveränderliches Objekt kann auf zwei Arten erstellt werden: durch Erstellen einer Klasse, die per Definition unveränderlich ist, oder durch explizites Deklarieren eines ansonsten veränderlichen Objekts als unveränderlich. Die Methode zum Erstellen einer unveränderlichen Klasse hängt von der verwendeten Computersprache ab. Unabhängig von der Sprache darf eine unveränderliche Klasse keine Methoden haben, die ihre internen Daten ändern können, und keine Möglichkeit, Methoden so zu ändern, dass sie ihre internen Daten ändern, dh überschrieben oder überladen werden. Dies ist der kompliziertere der beiden Ansätze. Um ein unveränderliches Objekt aus einem ansonsten veränderlichen Objekt zu erstellen, kann man andererseits häufig ein Schlüsselwort anwenden, um das Objekt als unveränderlich zu kennzeichnen.
Beispielsweise hängt die Erstellung unveränderlicher Objekte in Java stark vom Schlüsselwort "final" ab. Eine schnelle Möglichkeit, eine Klasse in Java unveränderlich zu machen, besteht darin, die Klasse sowie alle ihre Methoden und Datenelemente als final zu deklarieren. Eine ähnliche Strategie kann auch in C ++ mit dem Schlüsselwort "const" verwendet werden. Diese Ansätze sind jedoch je nach Klasseninhalt möglicherweise nicht die besten. Im Allgemeinen können Objekte in der Regel durch sorgfältige Pflege ihrer internen Daten unveränderlich gemacht werden.
Das Erstellen eines unveränderlichen Objekts mithilfe eines Schlüsselworts wie im obigen Beispiel ist häufig viel einfacher als das Schreiben einer gesamten Klasse, um unveränderlich zu sein. Dieser Ansatz birgt jedoch auch Gefahren. Wenn ein unveränderliches Objekt auf diese Weise explizit festgelegt wird, muss der Programmierer sicherstellen, dass zuerst alle geeigneten Eigenschaften und Daten in das Objekt integriert wurden. Es kann gefährlich sein, sich auf ein unvollständiges Objekt zu verlassen, insbesondere wenn eine wichtige Information fehlt.
Wenn ein Objekt veränderbar ist, aber unveränderliche Daten ordnungsgemäß erstellt werden müssen, müssen die unveränderlichen Daten initialisiert werden, bevor das veränderbare Objekt erstellt werden kann. Unveränderliche Objekte sind immer unveränderlich, egal ob Datenwerte oder große Objekte, und müssen immer als solche behandelt werden. Im Allgemeinen kann ein unveränderliches Objekt nach seiner Erstellung nicht mehr veränderlich gemacht werden, obwohl es manchmal als veränderliche Objekte kopiert werden kann. In der Regel kann davon ausgegangen werden, dass ein unveränderliches Objekt und alle seine Kopien ebenfalls unveränderlich sind, wodurch Daten- oder Speicherprobleme vermieden werden können.