Vereinfachte Aufrufmuster in Java (Vereinfachte Aufrufmuster in Java), Lektion, Seite 723218
https://www.purl.org/stefan_ram/pub/vereinfachte_aufrufmuster_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Aufrufmuster in Java 

Allgemeine Aufrufmuster

Aufrufe von Wertmethoden

Eine Wertmethode  ist eine Methode deren Rückgabespezifikation nicht  »void« ist.

Eine Stelle  ist der von einem Argument besetzte Platz eines Aufrufs oder der von einem Operanden besetzte Platz einer Anwendung eines Operators.

Der Aufruf einer Wertmethode kann überall als Besetzung einer Stelle verwendet werden, wo die Typregeln dies erlauben.

Ausgabeanweisung mit Aufruf einer Wertmethode
java.lang.System.out.println( java.lang.Math.random() );
Besetzung einer Stelle des Plusoperators durch einen Aufruf einer Wertmethode
java.lang.System.out.println( 1 + java.lang.Math.random() );
Besetzung einer Stelle der Methode »java.lang.Math.round« durch einen Aufruf einer Wertmethode
java.lang.System.out.println( java.lang.Math.round( java.lang.Math.random() )); 

Darüber hinaus kann der Aufruf einer Wertmethode auch als äußerster Ausdruck in eine Aufrufanweisung geschrieben werden. Dies ist aber nicht immer sinnvoll: Bei einer reinen Wertmethode gibt es ja keine Wirkung, so daß die ganze Anweisung wirkungslos wäre.

Aufruf einer Wertmethode als äußerster Ausdruck einer Aufrufanweisung
java.lang.Math.random();

Ein Wertmethodenaufruf kann auch als Argumentausdruck eines Wirkmethodenaufrufs  verwendet werden, um die Wirkung mitzubestimmen. Die Ausführung der folgenden Anweisung speichert einen Wert unter dem Namen »x« ab. Dies ist eine Wirkung. Welcher Wert genau abgespeichert wird, das wird durch die Methode »java.lang.Math.random()« festgelegt. Hier bestimmt die Wertmethode also die Wirkung einer Wirkmethode mit.

Aufruf einer Wirkmethode mit Wertmethodenaufruf als Argumentausdruck
java.lang.System.setProperty
( "x",
java.lang.String.valueOf( java.lang.Math.random() ));
Aussprachehinweis
property ˈprɑp ɚ ti

Aufrufe von Wirkmethoden

Eine Wirkmethode  ist eine Methode die laut Dokumentation eine Wirkung hat, also etwas verändert.

Eine reine Wirkmethode  ist eine Wirkmethode, deren Rückgabespezifikation »void« ist.

Falls eine Wirkmethode auch eine Wertmethode ist, dann gilt für sie alles, was schon im vorherigen Abschnitt zu Wertmethoden gesagt wurde.

Der Aufruf einer reinen  Wirkmethode kann aber nur als äußerster Ausdruck einer Aufrufanweisung verwendet werden.

Aufrufanweisung mit Aufruf einer reinen Wirkmethode
java.lang.Thread.dumpStack();

Ausdrücke ohne Wert (void-Ausdrücke) können nicht als Besetzungen verwendet werden.

Dies kann man auch als Typregel interpretieren. Wenn ein Parameter beispielsweise den Typ ›int‹ hat, so ist ein Argument vom „Typ ›void‹“ dafür nicht zulässig. (Es gibt in Java aber tatsächlich gar keine Typ ›void‹, so daß man „Typ ›void‹“ nur als informelle Sprechweise ansehen darf.)

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( java.lang.Thread.dumpStack() ); }}
transcript
Main.java:3: error: 'void' type not allowed here
{ java.lang.System.out.println( java.lang.Thread.dumpStack() ); }}
^
1 error

Vereinfachte Aufrufmuster

Für die folgenden Übungsaufgaben werden nun vereinfachte Aufrufmuster angenommen, die auch im weiteren Verlauf des Kurses oft nützlich sind.

Das vereinfachte Aufrufmuster für Methoden mit  Rückgabewert (Wertmethoden)

Aufrufregel Eine Methode mit  einem Rückgabewert wird in den runden Klammern hinter »println« aufgerufen. (Dieses ist nur eine vereinfachte Regel, die nur in Zweifelsfällen herangezogen werden sollte. Sie gilt nicht immer.)

Eine Wertmethode wird also in einer Ausgabeanweisung aufgerufen. Dabei wird der Aufruf der Wertmethode als Argument in die runden Klammern hinter »println« oder »print« geschrieben.

Ausgabeanweisung mit Aufruf einer Wertmethode
java.lang.System.out.println( java.lang.Math.random() );

Wenn der Aufruf einer Wertmethode als Ausdruck einer Aufrufanweisung geschrieben werden würde, dann würde der Wert ja verlorengehen. Dies motiviert es, ihn statt dessen mit einer Ausgabeanweisung auszugeben.

Das vereinfachte Aufrufmuster für Methoden ohne  Rückgabewert (void-Methoden)

Aufrufregel Eine Methode ohne  Rückgabewert wird vor einem Semikolon »;« aufgerufen.

Eine Methode mit der Rückgabespezifikation »void« wird also in einer Aufrufanweisung aufgerufen. Dabei wird der Aufruf jener Methode zum Aufruf der Aufrufanweisung, er stellt also den äußersten Ausdruck in jener Aufrufanweisung dar.

Aufrufanweisung mit Aufruf einer Wirkmethode
java.lang.Thread.dumpStack();
Aussprachehinweis
thread  θrɛd

Der Wert eines void-Ausdrucks kann gar nicht ausgegeben werden, da ein void-Ausdruck keinen Wert hat. Dies motiviert es, einen void-Ausdruck statt dessen mit einer Aufrufanweisung auszuwerten.

Übungsfragen

In diesem Übungsfragen und den folgenden Übungsaufgaben werden auch einige Methoden als Beispiele herangezogen, die sonst bei der Programmierung nur selten benötigt werden. Deswegen ist es nicht  wichtig, die hier vorgestellten Methoden genau zu verstehen oder sich die hier vorgestellten Methoden über diese Lektion hinaus zu merken. Die Verwendung von Methoden in diesen Übungen soll auch nicht  als Empfehlung zur Verwendung jener Methoden verstanden werden.

Für die folgenden Übungsfragen wird in dieser Lektion vorausgesetzt, daß – wie oben beschrieben – ein Wertaufruf in die Klammern hinter »println« geschrieben wird und ein Aufruf ohne Wert direkt vor einem Semikolon »;«.

?   »java.awt.dnd.DragSource.getDragThreshold()«

Ist die Methode »java.awt.dnd.DragSource.getDragThreshold()« eine Wertmethode?

Ausprache von “threshold ”: [ˈθrɛʃ.ˌhold.].

Sollte die Methode »java.awt.dnd.DragSource.getDragThreshold()« als Argument einer Ausgabeanweisung oder als Aufruf einer Aufrufanweisung aufgerufen werden?

Die Dokumentation von »java.awt.dnd.DragSource.getDragThreshold()« (vereinfacht)
java.awt.dnd
Klasse DragSource
static int getDragThreshold()
Ergibt den Schwellwert für die Verschiebegeste.

(Gedächtnisstütze: Eine Methode mit  einem Rückgabewert wird in den runden Klammern hinter »println« aufgerufen. Eine Methode ohne  Rückgabewert wird vor einem Semikolon »;« aufgerufen.)

?   »java.lang.System.exit(int)«

Ist die Methode »java.lang.System.exit(int)« eine Wertmethode?

Sollte die Methode »java.lang.System.exit(int)« als Argument einer Ausgabeanweisung oder als Aufruf einer Aufrufanweisung aufgerufen werden?

Die Dokumentation von »java.lang.System.exit(int)« (vereinfacht)
java.lang
Klasse System
static void exit( int e )
Beendet das Programm mit dem Ergebniswert e.

(Gedächtnisstütze: Eine Methode mit  einem Rückgabewert wird in den runden Klammern hinter »println« aufgerufen. Eine Methode ohne  Rückgabewert wird vor einem Semikolon »;« aufgerufen.)

?   »javax.swing.DebugGraphics.flashCount()«

Sollte die Methode »javax.swing.DebugGraphics.flashCount()« als Argument einer Ausgabeanweisung oder als Aufruf einer Aufrufanweisung aufgerufen werden?

Die Dokumentation von »javax.swing.DebugGraphics.flashCount()« (vereinfacht)
javax.swing
Klasse DebugGraphics
static int flashCount()
Ergibt die Anzahl der Blitze von Zeichenoperationen.

(Gedächtnisstütze: Eine Methode mit  einem Rückgabewert wird in den runden Klammern hinter »println« aufgerufen. Eine Methode ohne  Rückgabewert wird vor einem Semikolon »;« aufgerufen.)

?   »java.lang.System.gc()«

Sollte die Methode »java.lang.System.gc()« als Argument einer Ausgabeanweisung oder als Aufruf einer Aufrufanweisung aufgerufen werden?

Die Dokumentation von »java.lang.System.gc()« (vereinfacht)
java.lang
Klasse System
static void gc()
Bereinigt den Speicher.

(Gedächtnisstütze: Eine Methode mit  einem Rückgabewert wird in den runden Klammern hinter »println« aufgerufen. Eine Methode ohne  Rückgabewert wird vor einem Semikolon »;« aufgerufen.)

Übungsaufgaben

Für die folgenden Übungsaufgaben wird in dieser Lektion vorausgesetzt, daß ein Wertaufruf in die Klammern hinter »println« geschrieben wird und ein Aufruf ohne Wert direkt vor einem Semikolon »;«.

Einige der Methoden, die hier als Beispiele verwendet werden, sind zwar Wirkmethoden, aber sie haben oft keine sichtbaren Wirkungen. Es ist also kein  Fehler, wenn der Aufruf einer Wirkmethoden keinen erkennbaren Effekt hervorruft!

/   Selbständiges Schreiben von Programmen

Schreiben Sie in ein Programm, das die folgenden Bestandteile in der folgenden Reihenfolge enthält:

Das Programm sollte übersetzt und gestartet werden können und »alpha« ausgeben.

Die Dokumentation von »java.lang.System.exit(int)« (vereinfacht)
java.lang
Klasse System
static void exit( int e )
Beendet das Programm.
(Der Wert von e ist egal.)

(Gedächtnisstütze: Eine Methode mit  einem Rückgabewert wird in den runden Klammern hinter »println« aufgerufen. Eine Methode ohne  Rückgabewert wird vor einem Semikolon »;« aufgerufen.)

/   Selbständiges Schreiben von Programmen (1)

Schreiben Sie in ein Programm einen Aufruf der folgenden Methode. (Hier soll entweder eine Ausgabeanweisung oder eine Aufrufanweisung verwendet werden, je nachdem, was für den Aufruf dieser Methode sinnvoller ist. Diese Anweisung kann auch an den Anfang des Programms aus der vorherigen Übungsaufgabe eingefügt werden.)

Die Dokumentation von »java.awt.dnd.DragSource.getDragThreshold()« (vereinfacht)
java.awt.dnd
Klasse DragSource
static int getDragThreshold()
Ergibt den Schwellwert für die Verschiebegeste.

(Gedächtnisstütze: Eine Methode mit  einem Rückgabewert wird in den runden Klammern hinter »println« aufgerufen. Eine Methode ohne  Rückgabewert wird vor einem Semikolon »;« aufgerufen.)

Reserveaufgaben

/   Selbständiges Schreiben von Programmen (2)

Schreiben Sie in ein Programm einen Aufruf der folgenden Methode. (Hier soll entweder eine Ausgabeanweisung oder eine Aufrufanweisung verwendet werden, je nachdem, was für den Aufruf dieser Methode sinnvoller ist. Diese Anweisung kann auch an den Anfang des Programms aus der vorherigen Übungsaufgabe eingefügt werden.)

Vereinfachte Dokumentation von »java.lang.Thread.yield()«
java.lang
Class Thread
static void yield()
Das Programm macht eine sehr kurze Pause.

Aussprache von “yield”: /jild/.

(Gedächtnisstütze: Eine Methode mit  einem Rückgabewert wird in den runden Klammern hinter »println« aufgerufen. Eine Methode ohne  Rückgabewert wird vor einem Semikolon »;« aufgerufen.)

/   Selbständiges Schreiben von Programmen (3)

Schreiben Sie in ein Programm einen Aufruf der Methode »java.lang.Thread.activeCount«. (Hier soll entweder eine Ausgabeanweisung oder eine Aufrufanweisung verwendet werden, je nachdem, was für den Aufruf dieser Methode sinnvoller ist. Diese Anweisung kann auch an den Anfang des Programms aus der vorherigen Übungsaufgabe eingefügt werden.)

Dokumentation von »java.lang.Thread.activeCount()« (gekürzt, vereinfacht und übersetzt)
java.lang
Class Thread
Method Summary
public static int activeCount()
Ergibt die Anzahl der derzeit auf der Java-Maschine
laufenden Programme ("Threads").

(Gedächtnisstütze: Eine Methode mit  einem Rückgabewert wird in den runden Klammern hinter »println« aufgerufen. Eine Methode ohne  Rückgabewert wird vor einem Semikolon »;« aufgerufen.)

/   Selbständiges Schreiben von Programmen (4)

Schreiben Sie in ein Programm einen Aufruf der Methode »java.lang.System.gc()«. (Hier soll entweder eine Ausgabeanweisung oder eine Aufrufanweisung verwendet werden, je nachdem, was für den Aufruf dieser Methode sinnvoller ist. Diese Anweisung kann auch an den Anfang des Programms aus der vorherigen Übungsaufgabe eingefügt werden.)

Die Dokumentation von »java.lang.System.gc()« (vereinfacht)
java.lang
Klasse System
static void gc()
Bereinigt den Speicher.

(Gedächtnisstütze: Eine Methode mit  einem Rückgabewert wird in den runden Klammern hinter »println« aufgerufen. Eine Methode ohne  Rückgabewert wird vor einem Semikolon »;« aufgerufen.)

/   Selbständiges Schreiben von Programmen (5)

Schreiben Sie in ein Programm einen Aufruf der Methode »java.lang.Character.toLowerCase(int)«. (Hier soll entweder eine Ausgabeanweisung oder eine Aufrufanweisung verwendet werden, je nachdem, was für den Aufruf dieser Methode sinnvoller ist. Diese Anweisung kann auch an den Anfang des Programms aus der vorherigen Übungsaufgabe eingefügt werden.)

Die Dokumentation von »java.lang.Character.toLowerCase(int)« (vereinfacht)
java.lang
Klasse Character
static int toLowerCase( int c )
Ergibt die Kennzahl des kleinen Buchstabens zu c.

(Gedächtnisstütze: Eine Methode mit  einem Rückgabewert wird in den runden Klammern hinter »println« aufgerufen. Eine Methode ohne  Rückgabewert wird vor einem Semikolon »;« aufgerufen.)

/   Selbständiges Schreiben von Programmen (6)

Schreiben Sie in ein Programm einen Aufruf der Methode »javax.imageio.ImageIO.scanForPlugins()«. (Hier soll entweder eine Ausgabeanweisung oder eine Aufrufanweisung verwendet werden, je nachdem, was für den Aufruf dieser Methode sinnvoller ist. Diese Anweisung kann auch an den Anfang des Programms aus der vorherigen Übungsaufgabe eingefügt werden.)

(Bei einem korrekten Aufruf dieser Methode sollte man normalerweise keine Wirkung beobachten können.)

Die Methode »javax.imageio.ImageIO.scanForPlugins()« [Dokumentation, Method Summary ]
javax.imageio
Class ImageIO
static void scanForPlugins()
Sucht nach Programmerweiterungen. …

(Gedächtnisstütze: Eine Methode mit  einem Rückgabewert wird in den runden Klammern hinter »println« aufgerufen. Eine Methode ohne  Rückgabewert wird vor einem Semikolon »;« aufgerufen.)

/   Selbständiges Schreiben von Programmen (7)

Schreiben Sie in ein Programm einen Aufruf der Methode »javax.swing.DebugGraphics.flashCount()«. (Hier soll entweder eine Ausgabeanweisung oder eine Aufrufanweisung verwendet werden, je nachdem, was für den Aufruf dieser Methode sinnvoller ist. Diese Anweisung kann auch an den Anfang des Programms aus der vorherigen Übungsaufgabe eingefügt werden.)

(Gedächtnisstütze: Eine Methode mit  einem Rückgabewert wird in den runden Klammern hinter »println« aufgerufen. Eine Methode ohne  Rückgabewert wird vor einem Semikolon »;« aufgerufen.)

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 stefanram723218 stefan_ram:723218 Vereinfachte Aufrufmuster in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723218, slrprddef723218, 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/vereinfachte_aufrufmuster_java