# Objekte an andere Klassen/Methoden übergeben?



## it-girl (26. Jul 2011)

Hallo zusammen,

wahrscheinlich ist das eine ganz einfache, dumme Fragen, aber ich checks grad echt nimmer 

Also ich schreibe gerade an einem Programm, das mir eine Baumstruktur graphisch darstellen soll. Die Knoten kann ich - theoretisch - alle erzeugen, also es ging mal und dann habe ich meine eine große Klasse dann mal in mehrere kleine aufgeteilt (Wartbarkeit und so) und die Knoten-Objekte dann eben nicht mehr innerhalb der Klasse übergeben, sondern halt dann in andere Klassen. Ich vermute, dass das der Grund ist, warum es mir nun keinen Graph mehr anzeigt, das Programm aber trotzdem keine Fehler wirft :noe: 
Könnte das was damit zu tun haben? Und wenn ja, warum kann ich keine Objekte an andere Klassen übergeben?

Bitte helft mir, ich komm hier grad echt nicht weiter ;(

Danke schon mal für eure Antworten!

LG
it-girl


----------



## tuttle64 (26. Jul 2011)

it-girl hat gesagt.:


> Und wenn ja, warum kann ich keine Objekte an andere Klassen übergeben?




Zunächst zur Begriffsklärung: Eine Klasse ist ein Blueprint und kann keine Objekte empfangen, höchstens eine Instanz dieser Klasse ist in der Lage, ein Objekt zu übernehmen! Somit lautet die Antwort zu Deiner Frage: nein! Natürlich kann man Objekte an eine Instanz einer anderen Klasse übergeben. Die fremde Klasse kann dann das Objekt verändern d.h. neue Knoten hinzufügen etc. Was sich nicht ändern lässt, ist die Referenz des Objekts. Poste doch auszugsweise etwas von Deinem Code, dann wird es auch konkret.


----------



## it-girl (26. Jul 2011)

Also kann ich aber dem Konstruktor oder einer Methode der Klasse ein Objekt übergeben?
Muss ich dazu in der einen Klasse eine Instanz der anderen Klasse erzeugen, der ich das Objekt übergeben will oder reicht es, wenn ich einfach nur eine Variable dafür deklariere (zB 
	
	
	
	





```
Klasse2 klasse2;
```
)?

Noch eine ähnliche Frage:
Wenn ich aus Klasse1 auf eine Methode oder eine Variable der Klasse2 zugreifen will, muss ich dazu die Klasse2 in Klasse1 instanziieren, also 
	
	
	
	





```
Klasse2 klasse2 = new Klasse2();
```
, oder reicht hier eine Deklaration wie oben?


----------



## RySa (26. Jul 2011)

Naja, wenn wir schon so pindelig sein wollen, dann kann man keine Objekte an eine Instanz einer anderen Klasse übergeben, sondern nur die Referenz zu diesen Objekten.

Je nach dem, was du da in deinem Code hast, kann es sein, dass du irgendwo, statt die Referenz zu übernehmen, ein neues Objekt erzeugst oder umgekehrt. Poste am besten einfach mal die Abschnitte, wo die "Knoten" deklariert,initialisiert und übergeben werden. Also alles was mit den Knoten zu tun hat. Dann wird dir sicherlich einer helfen.

EDIT: Du kannst so etwas machen

```
public Class Klasse2 {

   Klasse1 klasse1;

   public Klasse2(Klasse1 klasse1){
      this.klasse1 = klasse1;
      //weiterer Code
   }
   //Methoden etc
}
```
Und dann z.B je nach dem wo do die Objekte erzeugst dann so etwas:

```
public Class Test {

   public static void main(String agrs[]) {
      Klasse1 klasse1 = new Klasse1();
      Klasse2 klasse2 = new Klasse2(klasse1);
   }
}
```

Somit hast du die Möglichkeit innerhalb der klasse2 das Objekt der Klasse1 (also klasse1 in dem Fall) zu Verändern (also in so fern, dass du auf die public Methoden und Variablen zugreifen kannst).

Wenn du dir aber innerhalb der Klasse2 ein neues Objekt erstellst, mit  new Klasse1() ist das nicht mehr das Objekt, dass du verändern wolltest, sondern ein neues.


----------



## jgh (26. Jul 2011)

```
public class Klasse1 {

	private String einString = "it-girl";

	public void printEinString() {
		System.out.println(einString);
	}

	public String getEinString() {
		return einString;
	}
}
```

billige, einfach Java-Klasse mit einer Instanzvariablen vom Typ 
	
	
	
	





```
String
```
 , dem Namen [c]einString[/c] mit dem Inhalt 
	
	
	
	





```
it-girl
```
, einer passende Getter-Methode dafür und der Methode [c]printEinString()[/c]

Eine andere Klasse, die als Übergabe die Klasse1 bekommt, bzw. eine Referenz darauf.


```
class EineAndereKlasse {
	private String einString = "out-girl";
	private Klasse1 klasse1;

	public EineAndereKlasse(Klasse1 klasse1) {
		this.klasse1 = klasse1;
	}

	public void printEinString() {
		System.out.println(einString);
	}

	public Klasse1 getKlasse1() {
		return klasse1;
	}

	public String getEinString() {
		return einString;
	}
}
```

Wenn du jetzt auf die 
	
	
	
	





```
printEinString()
```
-Methode der 
	
	
	
	





```
Klasse1
```
aus 
	
	
	
	





```
EineAndereKlasse
```
 zugreifen willst...brauchst du so ein Konstrukt:

```
Klasse1 klasse1 = new Klasse1();
		EineAndereKlasse eineAndereKlasse = new EineAndereKlasse(klasse1);
		eineAndereKlasse.getKlasse1().printEinString();
//oder auch
eineAndereKlasse.klasse1.printEinString();
```


----------



## it-girl (27. Jul 2011)

Vielen Dank euch! :toll:
Ich habe es hinbekommen 

LG
it-girl


----------

