Objekte in Java (Objekte in Java), Lektion, Seite 723652
https://www.purl.org/stefan_ram/pub/objekte_in_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Objekte in Java 

Wir haben bisher schon Ausdrücke  behandelt, deren Typ ein Referenztyp ist. Solche Ausdrücke wurde von uns schon früher als Referenzausdrücke  vorgestellt.

Wir haben gesehen, daß diese Ausdrücke Methoden enthalten, und daß man eine Methode eines Ausdrucks aufrufen  kann, indem man einen Punkt ».« und einen Verbaufruf hinter den Ausdruck schreibt.

In dieser Lektion sollen jetzt die Werte von Referenzausdrücken  behandelt werden.

Die Programmbeispiele dieser Lektion sind oft wie schon in früheren Lektionen behandelt, aber wir erlernen jetzt weitere Begriffe zu ihrer Beschreibung.

Objekte

Der Begriff „Objekt“ bezeichnet ein Element des Laufzeitmodells.

Ein Objekt  ist ein Verzeichnis, das Einträge  enthält, nämlich Variablen  (die man auch Felder  nennt) und Methoden.

Die Einträge eines Objekts nennen wir auch Objekteinträge. Im einzelnen nennen wir die Variablen eines Objektes auch Objektvariablen  (Objektfelder ) und die Methoden eines Objektes Objektmethoden  (im Gegensatz zu den statischen Methoden).

Der Wert eines Ausdrucks  kann ein Objekt  sein; in diesem Sinne werden Objekte  im Quelltext  durch Ausdrücke  angegeben,

Jedes Objekt hat eine Klasse  (als Typ). Die nicht-statische Methoden  einer Klasse werden zu Methoden jedes Objekts  der Klasse. Insofern kann man sagen: nicht-statische Methoden sind Objektmethoden.

Der Wert eines Referenzausdrucks  ist ein normalerweise ein Objekt. (So wie eine int-Zahl normalerweise der Wert eines int-Ausdrucks ist.) Ein Referenzausdruck steht für ein Objekt.

Der Begriff „Objekt“ gehört zum Laufzeitmodell. Eingige andere Begriffe des Laufzeitmodells sind „Wert“, „Auswertung“, „Wirkung“ und „Ausführung“.

Sprechweisen für Objekte und ihre Ausdrücke

Ein Ausdruck, dessen Wert ein Objekt ist, nennt man auch manchmal einen Ausdruck für dieses Objekt  (ein Ausdruck, der für jenes Objekt steht) oder eine Ausdruck dieses Objekts ; Umgekehrt nennen wird das Objekt dann das Objekt dieses Ausdrucks  oder das hinter dem Ausdruck stehende Objekt  (sozusagen unter der Schreibfläche).

Aufrufe von Objektmethoden

Wenn eine Methode eines Referenzausdrucks aufgerufen wird, dann führt der Referenzausdruck die Methode normalerweise aus, indem er den Aufruf an sein Objekt weiterleitet. Das Objekt enthält dann die Methode und erledigt damit die eigentliche Arbeit.

Der Wert eines Zeichenfolgenliterals, wie »"123"«, ist ein Objekt, das unter anderem eine parameterlose Methode mit dem Namen »length« enthält, welche die Anzahl der Zeichen des Zeichenfolgenliterals ergibt.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ final java.lang.String s = "abc";
java.lang.System.out.println( s.length() ); }}
transcript
3

Im obenstehenden Programm wird die Methode »length()« des Ausdrucks »s« aufgerufen. Der Aufruf wird dann an das Objekt »"abc"« weitergeleitet. Jenes Objekt ergibt für den Aufruf »length()« den Wert »3«.

Weiterleitung eines Aufrufs
length() ------> Ausdruck s  ------> Objekt "abc"
<------ <------ Ergebnis 3

Man kann sich vorstellen, daß bei der Auswertung des Ausdrucks »s.length()« der Aufruf »length()« zuerst an den Ausdruck »s« geschickt wird. Da der Compiler bereits den Typ jenes Ausdrucks kennt, hatte er schon bei der Übersetzung geprüft, ob es im Typ jenes Ausdrucks, also in »java.lang.String«, überhaupt eine passende Methode gibt. Anschließend wird der Aufruf »length()« vom Ausdruck »s« an seinen Wert, also an das Objekt »"abc"« weitergeleitet. Das Objekt ermittelt dann das Ergebnis »3« und schickt dies an den Ausdruck »s« zurück, und schließlich ergibt sich so der Wert »3« als Wert des gesamten Ausdrucks »s.length()«.

Die Weiterleitung über einen Ausdruck findet aber auch ohne Variable statt.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( "abc".length() ); }}
transcript
3
Weiterleitung eines Aufrufs
length() ------> Ausdruck "abc"  ------> Objekt "abc"
<------ <------ Ergebnis 3

Weiterleitung

Wenn eine Methode eines Ausdrucks aufgerufen wird, dann wird der Aufruf zur Laufzeit an das Objekt weitergeleitet, welches hinter dem Ausdruck steht. Es muß also zur Laufzeit auch tatsächlich ein Objekt vorhanden sein, das hinter dem Ausdruck steht, um solch einen Aufruf auszuführen.

Redeweisen und Vorstellungen

Man nennt eine Methode, die mit einem Objekt als Wert des Kontext aufgerufen wird, auch eine Methode jenes  Objektes.

Beispielsweise sagt man, daß in »java.lang.System.out.println()« die Methode »println()« des  Objektes »java.lang.System.out« aufgerufen werde.

Wir stellen uns vor, daß eine Methode eines Objektes, in jenem Objekt enthalten  ist.

In UML  kann ein Objekt durch ein Rechteck  dargestellt werden: In der obersten Abteilung jenes Rechteckes kann der Name des Objektes, gefolgt von einem Doppelpunkt »:« und dem Typ des Objekts unterstrichen angegeben werden. Darunter können dann die Signaturen im Objekt befindlicher Methoden aufgelistet werden.

Ein Objekt mit Methoden (UML)
.--------------------------------------------.
| java.lang.System.out : java.io.PrintStream |
| ------------------------------------------ |
|--------------------------------------------|
| println() |
'--------------------------------------------'

Werte ⁺

Im Grundkurs hatten wir bereits einen Wert als „eine Zahl, eine Zeichenfolge oder einen Wahrheitswert“ definiert. Nun wird der Wertbegriff noch für Objekte erweitert.

Wir verstehen unter einem Wert  eine Zahl, eine Zeichenfolge, einen Wahrheitswert oder ein Objekt.

Eine Zahl, eine Zeichenfolge, einen Wahrheitswert nennen wir auch einen elementaren Wert.

Übungsaufgaben ⃗

Hinweise zum Aufruf einer Methode eines Ausdrucks ←

Wir halten noch einmal fest, wie man eine Methode eines Ausdrucks  aufruft: Man schreibt:

So kommt man zu einem Aufrufausdruck.

Hinweise zum Aufruf einer Methode eines Objektes ←

Um eine Methode eines Objektes  aufzurufen, ruft man die Methode eines Ausdrucks für das Objekt auf, Man schreibt also:

Hinweise zu Wirk- und Wertmethoden ←

Damit dieser Aufrufausdruck auch ausgewertet  wird, muß er an eine geeigneten Stelle eines Programm eingesetzt werden. (Hier bei spielt es dann eine Rolle ob es sich einen Ausdruck mit oder ohne Wert handelt.) Bei der Aufgabe soll

geschrieben werden.

/   Übungsaufgabe ⃗

Rufen Sie die Methode »length()« des Objekts »"abcde"« ohne  Deklaration einer Variablen direkt auf.

/   Übungsaufgabe ⃗

Rufen Sie die Methode »length()« des Objekts »"abcde"« auf, wobei der Bezeichner »o« als Kontext des Aufrufs verwendet 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 stefanram723652 stefan_ram:723652 Objekte in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723652, slrprddef723652, 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/objekte_in_java