Wert (Programmierung): Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
=Definition (für nicht-objektorientierte [[Programmierung|Programmier-Paradigmas]])=
=Definition (nach [[Benutzer:Kowa|Kowarschick]])=
Ein '''Wert''' ist ein [[Daten|Datum]] (Einzahl von Daten), das folgende Merkmale aufweist:
Ein '''Wert''' ist (im Sinne der meisten [[Programmierung|Programmier-Paradigmas]]) ein [[Daten|Datum]] (Einzahl von Daten), 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 existiert dauerhaft, d.h., er wird weder erzeugt, noch kann er zerstört oder verändert werden.
Zeile 10: Zeile 10:
*Für jeden Wert kann es eine Menge von [[Anfragemethode]]n geben, mit deren Hilfe spezielle Eigenschaften des Wertes ermittelt werden können.
*Für jeden Wert kann es eine Menge von [[Anfragemethode]]n geben, mit deren Hilfe spezielle Eigenschaften des Wertes ermittelt werden können.


=Definition (für das [[Objektorientierte Programmierung|objektorientierte Programmier-Paradigma]])=
=Definition im Sinne der [[Objektorientierte Programmierung|Objektorientierten Programmierung]] (nach [[Benutzer:Kowa|Kowarschick]])=
Ein '''Wert''' ist im Sinne der [[Objektorientierte Programmierung|Objektorientierten Programmierung]] ein [[Objekt]],  
Ein '''Wert''' ist im Sinne der [[Objektorientierte Programmierung|Objektorientierten Programmierung]] ein [[Objekt]],  
das folgende Merkmale aufweist:
das folgende Merkmale aufweist:
Zeile 28: Zeile 28:
=Bemerkungen=
=Bemerkungen=


==Bedeutung von "systemweit"==
==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
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“.
objektorientiertes Datenbanksystem bedeutet ''systemweit''dagegen  „über alle beteiligten Datenbanken hinweg solange die zugehörigen Datenbanken existieren“.


==Datentyp==
==Datentyp==

Version vom 4. Oktober 2006, 14:22 Uhr

Definition (nach Kowarschick)

Ein Wert ist (im Sinne der meisten Programmier-Paradigmas) ein Datum (Einzahl von Daten), 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 zu jedem Zeitpunk t für einen Wert w noch einen oder mehrere Wertnamen wnamen(w,t) geben. Diese sind im Gegensatz zum WID i.Allg. veränderlich, wiederverwendbar und nicht notwendigerweise systemweit eindeutig. Mit Hilfe eines Namens kann ein Wert daher 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 im Sinne der Objektorientierten Programmierung (nach Kowarschick)

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

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