# Probleme mit Objekten



## Royd_X (17. Dez 2015)

Hallo liebe Forengmeinde,

ich habe ein Problem ( sicherlich ein Verständnisproblem ) bei dem Umgang mit Objekten in Objekten.

Als Grundlage meines Problems bitte ich den nachfolgenden Code als gegeben anzusehen.



```
public class Raum {
   private String kennung;
   private int maxAnzahl;
   private boolean belegbar;
   private Vorlesung Vorlesung;
   private int count = 0;
   private Student[]Studenten;
   
   Raum(String kennung,int maxAnzahl){
     this.Vorlesung=null;
     this.belegbar=true;
     this.kennung=kennung;
     this.maxAnzahl=maxAnzahl;
   }
   public void setKennung (String kennung){
     this.kennung=kennung;
   }
   public String getKennung(){
     return kennung;
   }
   public void setMaxAnzahl(int maxAnzahl){
     this.maxAnzahl=maxAnzahl;
   }
   public int getMaxAnzahl(){
     return maxAnzahl;
   }
   public boolean getBelegbar(){
     return belegbar;
   }
   public boolean raumBelegen(){
     belegbar = false;
     return belegbar;
```

Nun möchte ich, dass Studenten der Klasse Student diesen Raum betreten können, aber nur soviele wie in den Raum hineinpassen. Zusätzlich sollen die Studenten den Raum auch wieder verlassen können.


```
public class Student {
   
   private String name;
   private String studiengang;
   private int matrikelnummer;
   
   Student (String name, String studiengang, int matrikelnummer){
     this.name = name;
     this.studiengang = studiengang;
     this.matrikelnummer = matrikelnummer;
   }
   public void setName (String name){
     this.name = name;
   }
   public String getName(){
     return name;
   }
   public void setStudiengang(String studiengang){
     this.studiengang=studiengang;
   }
   public String getStudiengang(){
     return studiengang;
}
   public void setMatrikelnummer(int matrikelnummer){
     this.matrikelnummer = matrikelnummer;
   }
   public int getMatrikelnummer(){
     return matrikelnummer;
   }
```

Selbiges habe ich nun versucht zu realisieren mit nachfolgenden Zeilen:



```
public void betreteRaum (Student neuerStudent, Raum Raum){
     
     //String name = Student.getName();
     int max = Raum.getMaxAnzahl();
     Studenten=new Student[max];
     if (count<max){
     Studenten[count]=neuerStudent;
     count++;}
     else{
       System.out.println("Der Raum ist bereits voll!");
       
     }
```
Diese Methode habe ich meiner Klasse Raum zugeordnet.  Könnte mir bitte jemand einen Denkanstoß geben warum das nicht funktioniert. Ich kann zwar diese Methode zwar über meine Mainmethode aufrufen, zum Abbruchkriterium kommt es allerdings nicht.

Vielen Dank


----------



## VfL_Freak (17. Dez 2015)

Moin,

was verstehst Du denn unter "_Objekten in Objekten_" ??

Wie ist denn den Wert von 'count' beim jeweiligen Aufruf von "_betreteRaum_"?
Ich würde hier mal debuggen und mir die Werte anschauen (oder ggf. ein paar Ausgaben in die Console schrieben) !

Gruß Klaus


----------



## Jardcore (17. Dez 2015)

Du solltest darauf achten Variablen nach der CamelCase Spezifikation zu deklarieren.
Allgemein Variablen immer mit einem kleinen Buchstaben beginnen.

Außerdem den Code richtig einrücken, dann kann man das auch besser nachvollziehen.

In welcher Klasse befindet sich deine betreteRaum(..., ...) Methode?


----------



## JStein52 (17. Dez 2015)

Also erstens mal legst du jedes Mal wenn die betretenRaum() aufgerufen wird ein neues Array von Studenten an. Das willst du sicher nicht sondern du möchtest vermutlich das Array einmal anlegen bzw. wenn die maxAnzahl gesetzt wird ?


----------



## Joose (17. Dez 2015)

Jedes mal wenn du die Methode "betreteRaum" aufrufst erstellst du ein neues Student[], die bisherigen Studenten in den Raum gehen dadurch einfach verloren


----------



## JStein52 (17. Dez 2015)

Und um zu sehen warum er nie sagt der Raum ist voll solltest du auch mal die Stelle posten wo der Raum und die Studenten angelegt werden und wo sie den Raum betreten. Vielleicht legst du dort auch jedesmal einen neuen Raum an ???


----------

