# objekterzeugung



## Guest (14. Jun 2005)

Gruß,


Prinzipiell:
Habe eine Klasse Wald. In der Klasse Wald frage ich nach Baumarten. Das Problem ist nun, dass ich die Objekte gleich nach den Baumarten benennen möchte. 
Angenommen ich hätte eine ArrayList mit allen verschiedenen Baumarten - besteht dann eine Möglichkeit Objekte in derart anzulegen?

Beispiel:

```
Baumart ???? = new Baumart();
```

Vielen Dank für Eure Hilfe


----------



## Anselmus (14. Jun 2005)

hi,

du mußt schon objekte von deiner klasse machen. dh wenn deine klasse wald heißt, mußt du auch davon die objekte machen

etwas so:


```
Wald birke = new Wald();
```

aber poste am besten mal deinen code...


----------



## Guest (14. Jun 2005)

tja, 

ich habe noch keine Code, da ich nicht weiss wie ich das Problem lösen soll. Die Idee die ich hatte ist, dass ich alle Baumarten die ich habe in eine ArrayList speichere.
In dem Arraylist stehen aber nicht immer die gleichen Baumarten, da ich auch verschiedene Wälder habe.
Nun möchte ich (je nachdem welche Baumarten in diesem Wald gerade vorhanden sind) einzelne Objekte von Baumarten erzeugen.

Beispiel:
Wald1:
ArraList [Birke, Eiche]
Wald2:
Arraylist [Fichte, Tanne]

Kann ich einen "universellen Aufruf" machen, der mir offenhält, wie ich mein Objekt benenne?
Eben:

```
Fpr die Fragezeichen steht für Wald1 Birke und Eiche und für Wald2 Fichte und Tanne
  Baumart ???? = new Baumart();
  //Das Objekt Birke wird mit deren Attributen und Eigenschaften aus den darunterstehenden Mehtoden versorgt.
```

Ich weiß, dass sich das sehr komisch anhört, aber glaubt mir es hat seinen Sinn. Und wenn jemand die Idee hat einzelne Klassen zu definieren wie Birke oder Eiche - es gibt verdammt viele Baumarten.

danke


----------



## bygones (14. Jun 2005)

wenn die unterschiedlichen Baumarten unterschiedliche Eigenschaften bzw. untersch. Verhalten haben so ist es sinnvoll die Gemeinsamkeiten in eine Oberklasse zu vereinen und dann Unterklassen zu bilden.

Ansonsten ist es schnuppe wie du die Variablen benennst


----------



## Sky (14. Jun 2005)

Das hatten wir schon oft. Das geht so nicht. Du brauchst entweder eine eigene Klasse Birke oder Eiche, welche Du dann mit 
	
	
	
	





```
Birke b = new Birke();
```
 bzw. 
	
	
	
	





```
Baumart b = new Birke(); //Birke ist von Baumart abgeleitet.
```
 oder deine Klasse Baumart hat einen Parameter Baumname und Du kannst sagen: 
	
	
	
	





```
Baumart b= new Baumart("Eiche");
```
 den String "Eiche" speicherst Du in deinem Objekt und über eine entsprechende getter-Methode kannst Du darauf zugreifen.


----------



## Guest (14. Jun 2005)

wenn ich allderdings ein Objekt


```
Baumart b = new Baumart("Eiche");
```

anlege, so geht mir das Objekt b (in dem Fall Eiche) verloren, sobald ich eine Neue Baumart


```
Baumart b = new Baumart("Birke");
```

initialisiere (Glaub ich).
Gibt es eine Möglichkeit beide Baumarten zu behalten?


----------



## Sky (14. Jun 2005)

Dann packs doch direkt in deine ArrayList:


```
list.add( new Baumart("Eiche"));
list.add( new Baumart("Birke"));
```


----------



## Anselmus (14. Jun 2005)

oder du machst ne klasse Wald und ne klasse baum (die, wie meine vorredner schon sagten) variablen enthält (zb String baumart) oder unterklassen (zb Birke) hat.

in Wald kannst du dann  deine Bäume in ner Liste Speichern speichern...


```
import java.util.List;
import java.util.ArrrayList;

public class Wald{

...

List baumListe = new ArrayList();


public void machBaumartInDieList(Baum b){
baumListe.add(b);
}
...}
```

oder falls du java 5 benutzt geht das glaube ich auch so

```
ArrayList<Baum> baumList = new ArrayList<Baum();
```


----------

