Meßausdrücke in Java (Meßausdrücke in Java), Lektion, Seite 723710
https://www.purl.org/stefan_ram/pub/messausdruecke_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Abhängigkeiten von Auswertungen in Java 

Bisher haben wir uns nur damit beschäftigt, wie Argumentwerte  und Operanden  den Wert eines Aufrufs beeinflussen können. Jetzt werden wir sehen, daß der Wert eines Aufrufs auch noch von Zuständen  abhängen kann, die im Aufruf nicht ausdrücklich erwähnt werden.

Der Wert einer Auswertung eines Aufrufs kann vom Argumentwert abhängen. So ergibt der Methodenname »java.lang.System.getProperty« für das Argument »"path.separator"« unter Umständen ein anderes Ergebnis als für das Argument »"user.country"«

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( java.lang.System.getProperty( "path.separator" )); }}
Protokoll
;
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( java.lang.System.getProperty( "user.country" )); }}
transcript
DE
Aussprachehinweis
property ˈprɑp ɚ ti

Abhängigkeit einer Auswertung von der Umgebung

Bei manchen Aufrufen, wie etwa bei »java.lang.Double.sum( 2.0, 4.0 )« ist das Ergebnis bereits durch den Quelltext des Aufrufes, also durch die Methode und die Argumentwerte, bestimmt. Der Ausdruck »java.lang.Double.sum( 2.0, 4.0 )« hat immer  den Wert »6.0«.

Der Wert einer Auswertung kann aber auch noch der Umgebung abhängen, in der ein Programm läuft. Beispielsweise ergibt die Auswertung des Ausdrucks »java.lang.System.getProperty( "user.country" )« einen Wert, der davon abhängt, welches Land für den Rechner, auf dem das Programm läuft, eingestellt wurde.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( java.lang.System.getProperty( "user.country" )); }}
transcript
DE
transcript
US

Die Laufzeitumgebung  oder Ausführungsumgebung  enthält Eigenschaften (wie »user.country«) mit Werten (wie »DE«) und umgibt das Programm während seiner Ausführung.

(Die Eigenschaft »user.country« ist nicht unter jeder Java -Implementation schon beim Programmstart definiert. In diesem Fall erscheint »null« statt »DE«, und »user.country« kann dann im folgenden durch die stets definierte Eigenschaft »user.name« ersetzt werden.)

Der Wert eines Meßausdrucks  hängt von der Umgebung  (Welt) ab. Daher kann man aus diesem Wert dann Informationen über die Umgebung (Welt) entnehmen.

Der Begriff „Messen“ bezeichnet die Beeinflussung des Wertes einer Auswertung durch die Welt. Dadurch kann man dem Wert dann eine Information über die Welt entnehmen. Man kann statt „Messen“ auch von „Lesen“, „Einlesen“ oder „Aufnehmen“ sprechen.

Bestimmung des Ergebnisses eines Aufrufs

Aus einer Methode und Argumentwerten wird zunächst eine Inkarnation  hergestellt, die eine Operation  ergibt. Bei der Ausführung der Operation kommt es zu einer bestimmten Interaktion mit der Umgebung. Das Ergebnis ist dann durch die Methode, die Argumentwerte und die Ausführungsumgebung (und deren Interaktion mit der Operation) bestimmt.

Bestimmung eines Ergebniswertes
Methode         Argumentwerte
| |
'---------.---------'
|Inkarnation
|
v
Operation
|
|
Interaktion <--> Ausfuehrungsumgebung
|
v
Ergebnis
Methode
java.lang.System.getProperty(java.lang.String)
Argumentwerte
"user.country"
Inkarnation (Maschine)
java.lang.System.getProperty‹ «"user.country"»
Zustand der Umgebung bei der Ausführung der Aktion
...
user.country  DE
user.language de
...
Ergebnis
"DE"

Die Zustandsabhängigkeit

Dieselbe Inkarnation kann unterschiedliche Ergebnisse liefern, wenn sie mit einem unterschiedlichen Zustand kombiniert wird. Beispielsweise liefert die Ausführung der Inkarnation ›java.lang.System.getProperty‹ ← «"user.country"» auf einem Rechner in der Bundesrepublik im allgemeinen ein anderes Ergebnis als auf einem Rechner in den Vereinigten Staaten.

Das Ergebnis des Aufrufs einer bestimmten Methode hängt im allgemein also von den Argumentwerten und  dem Zustand des Rechners während des Ablaufs der Methode ab.

Ein Meßausdruck  ist ein Ausdruck, dessen Wert eine Information über die Umgebung seiner Auswertung enthält. (Eine Meßmethode  ist eine Methode, deren Aufruf ein Meßausdruck ist.)

Bei einer Messung  wird eine Information über die Umgebung also als Wert eines Ausdrucks ausgedrückt.

Dokumentation der Zustandsabhängigkeit

Ob und wie das Ergebnis einer Methode im Einzelnen von einem Zustand bei ihrer Ausführung abhängt, ist jeweils in der Dokumentation der Methode beschrieben.

Aufnehmen, Einlesen, Messen

Wenn das Ergebnis einer Aktion durch den Zustand des Rechners bei ihrer Ausführung beeinflußt werden kann, so enthält jener Wert Informationen über jenen Zustand. Wir bezeichnen solch eine Aktion daher auch als die Aufnahme  eines Wertes, Erhalten  eines Wertes, das Einlesen  eines Wertes oder als die Messung  eines Wertes. Beispielsweise kann man mit der Inkarnation ›java.lang.System.getProperty‹ ← «"user.country"» das Land messen (einlesen, aufnehmen), das für den Rechner eingestellt wurde.

Determinismus ⃗

Bei den Methoden, die nach dem Vorbild mathematischer Funktionen  gestaltet sind, ist der Wert des Aufrufs bereits durch die Methode und die Argumentwerte vollständig bestimmt, der Zustand spielt hier keine Rolle. Solche Methoden bezeichnet man auch als deterministisch, bei einer nicht-deterministischen Methode kann das Ergebnis auch noch durch den Zustand des Rechners während ihrer Ausführung beeinflußt sein.

Übungsaufgaben ⃗

/   Messen der Zeit ⃗

Geben Sie den Wert eines Aufrufs der Methode »java.lang.System.currentTimeMillis()« aus, um die aktuelle Zeit in Millisekunden seit 1970-01-01T00:00:00+01:00 zu erhalten. Wie groß ist der Wert ungefähr? Verändert sich der Wert, wenn das Programm etwas später erneut gestartet wird?

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723710 stefan_ram:723710 Meßausdrücke in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723710, slrprddef723710, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/messausdruecke_java