4. Objekte Inhaltsverzeichnis 6. Referenzieren von Objekten

5. Inhalt von Objekten

Jedes Objekt enthält den kompletten Satz der Objektvariablen seiner Klasse (und ihrer Oberklassen). Bei der Erzeugung jedes Objekts wird vom Operator new auf der Halde so viel Speicherplatz belegt, wie viele (und wie große) Objektvariablen vereinbart worden sind[1]. Jedes Objekt einer Klasse hat also immer dieselbe Größe und dieselbe Struktur (d.h. denselben Inhalt, die globalen Variablen der Klasse).

Die Objektvariablen werden mit ihren Namen und aktuellen Werten (falls bekannt) in den Objekten dargestellt:

Abbildung7: Inhalt von Objekten

Manchmal ist es wichtig zu unterscheiden, welche Variablen aus der Unterklasse und welche aus der Oberklasse (evtl. aus einem Trait) stammen. Dann kann das Objekt aufgeteilt werden:

Abbildung 8: Objekt mit geerbten Attributen

In vielen Fällen werden Objekte von Klassen erzeugt, deren Programmtext nicht vorliegt oder nicht relevant ist (z.B. von Standardklassen), die aber vermutlich bestimmte Variablen enthalten, um bestimmte Werte zu speichern. Dann darf über die Objektstruktur spekuliert werden; die Objektvariablen haben dann keinen Namen.

Beispielsweise kann die Auswirkung der Programmzeile (innerhalb einer Methode)

var i: Integer = 5 // [2]

folgendermaßen[3] dargestellt werden:

Abbildung 9: Objektvariable ohne Namen

Wenn sich die obige Programmzeile in der Klasse außerhalb einer Methode befindet, dann ist die Variable i global; sie ist die Objektvariable einer Klasse, z.B. EineKlasse:

Abbildung 10: Globale Referenz

Die dritte Möglichkeit ist, dass sich die Programmzeile in einem Modul (object) außerhalb der Methoden befindet; dann liegt die Variable im Modulbereich:

Abbildung11: Globale Referenz im Modulbereich

4. Objekte Inhaltsverzeichnis 6. Referenzieren von Objekten

[1] zusätzlich auch Platz für Verwaltungsinformation, wie z.B. eine Referenz auf die Klasse

[2] Scala’s Int ist ein Wertetyp, während java.lang.Integer ist ein Referenztyp; in diesem Aufsatz setzen wir dafür überall import java.lang.Integer voraus

[3] ebenso für Konstanten (val)


Version: 5. Dezember 2010

© Prof. Solymosi, 2010, Beuth-Hochschule für Technik Berlin