Wert (Programmierung)

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg

Definition (nach Kowarschick)

Ein Wert ist (im Sinne der meisten Programmier-Paradigmas) etwas, das folgende Merkmale aufweist:

  • Ein Wert existiert dauerhaft, d.h., er wird weder erzeugt, noch kann er zerstört oder verändert werden.
  • Ein Wert w hat einen unveränderlichen, systemweit eindeutigen und nicht anderweitig verwendbaren Wertidentifikator (WID) wid(w), mit dem er jederzeit eindeutig identifiziert werden kann.
  • Neben dem Identifikator kann es für einen Wert noch einen oder mehrere Wertnamen geben. Diese sind im Gegensatz zum WID i.Allg. veränderlich, anderweitig wiederverwendbar und nicht notwendigerweise systemweit eindeutig. Mit Hilfe eines Namens kann ein Wert nur unter bestimmten Bedingungen zu bestimmten Zeiten eindeutig identifiziert werden.
  • Für jeden Wert kann es eine Menge von Anfragemethoden geben, mit deren Hilfe spezielle Eigenschaften des Wertes ermittelt werden können.

Definition nach Kowarschick in Sinne der Objektorientierten Programmierung

Ein Wert ist im Sinne der Objektorientierten Programmierung ein Objekt, das folgende Merkmale aufweist:

  • Ein Wert existiert dauerhaft, d.h., er wurde „zu Anbeginn der Zeit“ erzeugt und wird erst „zum Ende der Zeit“ zerstört. Es gibt also keine Konstruktoren und Destruktoren für Werte.
  • Der Zustand eines Wertes kann nicht verändert werden.
  • Jeder Wert hat zu jedem Zeitpunkt mindestens einen Wertnamen.
  • Für jeden Wert kann es eine Menge von Anfragemethoden geben, mit deren Hilfe spezielle Eigenschaften des Wertes ermittelt werden können. Modifikationsmethoden gibt es für Werte jedoch nicht.

Bemerkungen

Fehlende Definition

Man beachte: In der obigen Definition wurde der Begriff Wert eigentlich nicht definiert. Es wurden lediglich die Merkmale aufgeführt, die ein Wert haben muss.

Diese Art der Definition wird vor allem in der Mathematik häufig verwendet (z.B. bei der Definition des Begriffes Punkt) und hat sich als sehr brauchbar erwiesen.

Bedeutung von "systemweit"

Der in der Definition verwendete Beriff systemweit ist nicht eindeutig definiert, sondern hängt von der jeweiligen Systemumgebung ab. Bei einem einfachen Programmlauf eines JAVA-Programms beispielsweise bedeutet systemweit für ein Wert "während der Lebensdauer des Programms (die endet spätestens mit dem Programmende) innerhalb der Laufzeitumgebung des Programms". Für ein verteiltes objektorientiertes Datenbanksystem bedeutet systemweit dagegen "über alle beteiligten Datenbanken hinweg solange die zugehörigen Datenbanken existieren".

Datentyp

Der Begriff Datentyp wird meist in einem Atemzug mit dem Begriff Wert genannt. Ein Datentyp beschreibt eine Menge von Werten, für die bestimmte Funktionen definiert sind.

Man beachte, dass die obige Definition ohne den Begriff Datentyp auskommt.

Beispiele

Die natürliche Zahl 75 ist ein typischer Wert, genauer gesagt, ein typischer Wertname. Mögliche Wertnamen, die alle denselben Wert bezeichnen, sind:

  • 75
  • +75
  • 075 (wenn führende Nullen ignoriert werden) oder 0113 (wenn eine führende Null ausdrückt, dass die Zahl in oktaler Schreibweise dargestellt wird)
  • 0x4b (hexagesimale Darstellung)
  • etc.

Der zugehörige Wertidentifikator hängt vom verwendeten Programmiersystem ab.
Beispiele:

Ein weiteres Beispiel ist der Buchstabe K. Auch dieser Wert hat verschiedene Wertnamen:

  • K
  • \x04b
  • \113
  • etc.

Der zugehörige Wertidentifikator hängt wiederum vom verwendeten Programmiersystem ab.
Beispiele:

Es fällt auf, dass die möglichen Wertidentifikatoren dieser beiden Werte teilweise übereinstimmen. Zum Beispiel ist der Wertidentifikator der Small-Integer-Zahl 75 gleich dem UTF-16-Code des Buchstaben K. Dies widerspricht jedoch der Forderung nach „systemweiter Eindeutigkeit“ des Wertidentifikators.

Viele Programmiersysteme erzwingen diese Eindeutigkeit, indem sie z.B. jeden Wertidentifikator um einen eindeutigen Typidentifikator erweitern. Es gibt allerdings auch Sprachen, wie z.B. C++, die aus Performanzgründen die systemweite Eindeutigkeit von Wertidentifikatoren nicht automatisch erzwingen. Das hat zur Folge, dass zur Laufzeit eines Programms zwei unterschiedliche Werte in bestimmten Situationen nicht mehr unterschieden werden können (z.B. nachdem diese Werte in eine Liste oder in ein Array eingefügt wurden).

Siehe auch