Lernpfad:Würfelspiel in Java/Mit Objektreferenzen arbeiten: Unterschied zwischen den Versionen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
{{Navigation/Lernpfad|Komplexe Rechenoperationen|Klassendokumentation mit Javadoc}}
{{Navigation}}
 
== Mit Objektreferenzen arbeiten ==
== Mit Objektreferenzen arbeiten ==
Die Kommunikation zwischen Objekten stellt eine der zentralen Konzepte der
Die Kommunikation zwischen Objekten stellt eine der zentralen Konzepte der

Version vom 29. Juni 2018, 15:17 Uhr

Mit Objektreferenzen arbeiten

Die Kommunikation zwischen Objekten stellt eine der zentralen Konzepte der Objektorientierten Programmierung dar. Kommunikation bedeutet, dass ein Objekt Methoden eines anderen Objektes aufruft oder auf dessen Attribute zugreift.

Solche Zugriffe erfordern es also, dass das aufrufende Objekt das aufzurufende Objekt kennt. Es braucht also eine Referenz auf das andere Objekt.

Objektreferenzen können auf verschiedene Weisen im aufrufenden Objekt vorhanden sein.

Referenzen als Attribut

public class Motorroller {
	public Motorroller() {
	}
}

public class Besitzer {
	private Motorroller meinRoller;

	private Besitzer( Motorroller pRoller ) {
		meinRoller = pRoller;
	}
}

Referenzen als Parameter

Manchmal soll eine Referenz nicht permanent als Attribut gespeichert werden. In solchen Fällen kann die Referenz auf Objekte auch als Parameter einer Methode übergeben werden.

public class Motorroller {
	private int tankfuellung = 0;
	public void tanken( int pMenge ) {
		tankfuellung = tankfuellung + pMenge;
	}
}

public class Tankstelle {
	// pRoller ist eine Referenz auf ein Motorroller-Objekt
	public void motorrollerTanken( Motorroller pRoller, int pMenge ) {
		pRoller.tanken(pMenge);
	}
}

Referenz auf das aktuelle Objekt

Möchte man das aktuelle Objekt (also das Objekt, dessen Methode gerade ausgeführt wird) als Referenz übergeben, benutzt man in Java das Schlüsselwort this.

Taucht innerhalb einer Methode ein unbekannter Variablenname auf, dann geht der Interpreter automatisch davon aus, dass auf ein Attribut des aktuellen Objektes zugegriffen werden soll. Es wird also intern this benutzt:

public class Motorroller {
	private int tankfuellung = 0;
	public void tanken( int pMenge ) {
		// Diese Zeile bewirkt exakt dasselbe wie ...
		tankfuellung = tankfuellung + pMenge;
		// ... diese Zeile.
		this.tankfuellung = this.tankfuellung + pMenge;
	}
}