# Warteschlange eines Konzertes



## sabi001 (12. Jul 2012)

Hallo ihr Lieben 

habe eine Aufgabe als Hausaufgabe bekommen.
Programmiert habe ich sie auch schon, bin mir aber sicher dass irgendwas nicht richtig ist.

In dieser Aufgabe soll die Warteschlange eines Konzertes mithilfe einer verketteten Liste modelliert werden.
Jeder Anstehende reprasentiert ein Listenelement. Jedes Listenelement beinhaltet Nutzinformationen { den
Namen und die Ticketnummer { und den Verweis auf seinen Nachfolger. Machen Sie sich, bevor Sie anfangen zu
Programmieren mit den theoretischen Grundlagen von verketteten Listen vertraut.
1. Zunachst mussen die einzelnen Elemente der Warteschlange modelliert werden.
 Legen Sie eine Klasse Gast an.
 Legen Sie in der Klasse Gast zunachst zwei passende Attribute fur den Namen (name) und die
Ticketnummer (nummer) an, die beiden Attribute sollen nur in der eigenen Klasse sichtbar sein.
Versehen Sie beide Attribute mit einer passenden getter-Methode.
 Erganzen Sie einen Konstruktor der zwei Werte fur Name und Nummer ubergeben bekommt und
setzen Sie die Attribute auf diese Werte.
 Leiten Sie von der Klasse Gast eine Klasse Schlangengast ab. Erweitern Sie diese um ein Attribut
nachfolger fur das folgende Listenelement, versehen Sie dieses mit einer getter- und einer setter-
Methode.
 Schreiben Sie einen Konstruktor fur die Klasse Schlangengast, der den Namen und die Ticketnummer
des Gastes ubergeben bekommt und rufen Sie darin den Konstruktor der Oberklasse auf. Initialisieren
Sie nachfolger mit einem passenden Wert.
 Erweitern Sie die Klasse um eine Methode toString() die einen String in folgender Form zuruckgibt:
Name: hName i Ticketnummer: hNummer i
2. Legen Sie als nachstes eine Klasse Warteschlange mit einer main-Methode an und erganzen Sie ein
privates Attribut erster vom Typ Schlangengast incl. einer passenden getter-Methode. In diesem
Attribut wird der Verweis auf das erste Listenelement gespeichert.
3. Nun braucht unsere Warteschlange noch einige Funktionen. Im folgenden werden die zu implementierenden
Funktionen beschrieben. Die Umsetzung der Methoden bleibt bis auf die Einhaltung der Beschreibung
Ihnen uberlassen.
 void loeschen(): In der Methode soll die Liste komplett geloscht werden.
 int laenge(): Rufen Sie in der Methode eine Hilfsmethode int laenge(Schlangengast gast),
die die Lange der Warteschlange rekursiv berechnet.
 void anstellen(String name, int nummer): In der Methode soll sich { wie der Name schon sagt
{ ein neuer Gast hinten in die Warteschlange einreihen. Uberprufen Sie ob schon ein Gast mit dieser
Ticketnummer existiert, falls nicht fugen Sie einen neuen Schlangengast mit dem Namen name und
der Ticketnummer nummer in die Liste ein. Falls die Ticketnummer schon existiert machen Sie eine
Fehlerausgabe auf stderr.
Tipp: Schreiben Sie sich eine Hilfsmethode die uberpruft ob ein Gast mit einer bestimmten Ticketnummer
in der Warteschlange existiert.
 void rausschmeissen(int nummer): Der Gast mit der Ticketnummer nummer soll aus der Warteschlange
geloscht werden. Falls er nicht existiert { ein Loschen also unmoglich ist { machen Sie eine
Fehlerausgabe auf stderr.
 String toString(): Soll den Inhalt der Liste als String zuruckgeben. Verwenden Sie die Methode
toString() der einzelnen Listenelemente.



```
public class Gast {
 
	private String name;
	private int nummer;
	
	
	public Gast(String name, int nummer){
	
		this.name = name;
		this.nummer =nummer;
	}
	
	
	public String getName(){
		
		return this.name;
	}
	
	public int getNummer(){
		
		return this.nummer;
	}


}


public class Schlangengast extends Gast{
	 
	public int nachfolger;
	
	

	public Schlangengast(String name, int nummer, int nachfolger) {
		
		super(name, nummer);
		
		this.nachfolger = 1;
		
		
	}
	
	
	public int getNachfolger(){
		
		return this.getNachfolger();
	}
	
	public void setNachfolger(int nachfolger){
		
		this.nachfolger = nachfolger;
	}
	
	public String toString1(String name, int nummer){
		
		System.out.println("Name:" +name+ "Ticketnummer:" +nummer);
		return toString();
	}
	
	
}


public class Warteschlange {
	
	private Schlangengast erster;
	private int nummer;
	
	
	public Schlangengast getErster(){
		
		return getErster();
	}
	
	
	public void loeschenListe(int Gast){
		
		 Gast = 0;
	}
	
	
	
	public int gebeLaenge(Schlangengast gast){
		
		int counter = 0;
		
		if(gast != null){
			
		counter++;
			
		}else{
			
			return 0;
		}
		 
		return counter;
	}
	
	public void anstellenGast(String name, int nummer, Schlangengast erster){
		
		if (erster == null){
			
			this.erster = erster;
			System.out.println("Erster Gast in der Schlange");
			
		} else if(nummer == nummer) {
			nummer = this.nummer;
			System.err.println("Ticketnummer existiert bereits");
			
		}else{
						
			System.out.println("Der Gast hat den Namen" +name+ "und die Ticketnummer" +nummer);
		}
	}
	
	public void rausschmeissenGast(int nummer){
		
		if(nummer == 0){
						
			System.out.println("Gast wird gelöscht");
		}
		else{
			System.err.println("Gast existiert nicht");
		}
	}
	
	public static void main(String[] args) {
		
		Warteschlange.rausschmeissenGast(nummer);
		 
	}

}
```

Wäre super, wenn mir jemand helfen könnte


----------



## illusi0n (12. Jul 2012)

Hallo,
soll jemand die Aufgaben für dich machen?

Ich kann das Problem nicht erkennen was du mit der Aufgabe hast. 
Gibt es eine Fehlermeldung, wenn ja wie lautet diese? 
Hast du ein Verständnis oder Logikproblem - wenn ja wo liegt es?

Alle hier in diesem Forum helfen gerne bei einer konkreten Fragestellung, allerdings die Hausarbeiten musst du schon selbst machen. 
Wir zeigen dir nur den Weg, ob du ihn benutzt ist deine Sache.


----------



## tagedieb (12. Jul 2012)

Attribut *nachfolger* in der Klasse *SchlangenGast* sollte wahrscheinlich auch vom Typ *SchlangenGast* sein (referenz auf den Nachfolger).

Somit kannst du durch die Warteschlange durchiterieren..


```
SchlangenGast gast = warteschlange.getErster();
while (gast != null) {
  // do something
  gast = gast.getNachfolger();
}
```

Damit duerfte der Rest der Aufgabe auch kein groesseres Problem mehr darstellen.


----------



## Firephoenix (12. Jul 2012)

Wenn das da kein namensvetter von dir ist, dann hast du dir keine einzige Antwort in dem Thread durchgelesen... wie wäre es wenn du selbst erstmal anfängst die Antworten durchzugehen bevor hier alles nochmal durchgekaut wird?

http://www.java-forum.org/java-basics-anfaenger-themen/138876-hilfe-aufgabe.html

Wenn du dann einen neuen Stand hast können wir hier gerne weitermachen.

Gruß


----------



## hüteüberhüte (12. Jul 2012)

Mein Lehrer handelte streng nach dem Konzept Zuckerbrot und Peitsche^^ Nein, spaß

Siehe hier: Galileo Computing :: Java ist auch eine Insel - index

Kopf bis Fuß würde ich wenn dann danach lesen. Viele Mitglieder beharren aber komischerweise darauf oder vertreten vehement ausschließlich ihren eigenen Standpunkt


----------

