# Java Aufgabe



## Spamme (26. Feb 2006)

Tagchen!

Ich brauche dringend Hilfe in Sachen Java! 
Es sieht folgendermaßen aus: Um die Klausur in meinem Studium anerkannt zu bekommen, müssen wir diese Aufgabe richtig und lauffähig (unter BlueJ) abgeben.
Aber leider ist genau DAS mein Problem  :x 
Das Programm soll diese Funktionen haben:

a)
In einer Klasse Studierende sollen relevante Eigenschaften von Studentinnen und Studenten dargestellt werden. (Name, Alter, Nr, Vorbildung, ...)
Erstellen Sie eine Klasse Semester, in der sie z. B. in einer ArrayList die Studierenden eines Semesters unterbringen können. 
Bauen Sie aus Objekten dieser Klasse eine Struktur Gesamt – Fachhochschule (weitere Klasse), indem Sie einen array aufbauen, der in den Zeilen die Studiengänge und in den Spalten die verschiedenen Semester anspricht. 
Testen Sie Ihre Struktur, indem Sie mindestens für 2 Studiengänge 2 Semester mit je 5 Studierenden eingeben.

b)
Erstellen Sie eine Eingabemaske für die von Ihnen festzulegenden Eigenschaften jedes Studierenden und geben Sie damit Daten ein. In der Eingabemaske soll auch der Studiengang und das Semester ausgewählt werden.

c)
Erstellen Sie eine für Sie eine vernünftige Ausgabe für ein auszuwählendes Semester

d) 
Erstellen Sie eine Suchmethode für Studierende

e)
Stellen Sie dar, wie Sie mit Hilfe der Vererbung auch Mitarbeiterinnen und Mitarbeiter der FH in dieses System einbauen können. Wie müsste dazu die Struktur der Lösung a) bis d) verädert werden?


Ich bekomme das auf Teufel komm raus nicht hin! Meine Gruppe, mit der ich das auszuarbeiten habe, hat auch keine bessere Lösung parat gehabt, als sich im Internet schlau zu machen.

Ich würde mich sehr freuen hier Hilfe zu erhalten! Das ganz muss nämlich auch noch bis 01.03. fertig sein *schluck*


Das ist alles, was wir bisher zustande gebracht haben:


```
public class Student{
	private String name;
	int alter;
	String bildung;
	int mnr;

	public Student( String Name, int Alter, String Vorbildung, int Matrikelnummer){ name = Name;
		alter= Alter;
		bildung= Vorbildung;
		mnr= Matrikelnummer;
	}

	public void AusgabeStudent(){
		System.out.println( "Name:" + name);
		System.out.println( "Alter:" +alter);
		System.out.println( "Vorbildung:" + bildung);
		System.out.println( "Matrikelnummer:" +mnr);
	}
	
	public String GetName(){
		return name;
	}
}

public class Semester{
	private String semesterjahr;


	public Semester(String jahr){
		semesterjahr = jahr;
	}

	public void AusgabeSemester(){
		System.out.println( "Semester:" + semesterjahr);
	}
	
	public String Getjahr(){
		return semesterjahr;
	}
}



public class Studiengang{
	private ArrayList Studiengang;

	public Studiengang(){
		Studiengang = new ArrayList(); 
	}

	public void AddStudent(Student Student_object){
		Studiengang.add(Student_object);
	}
	
	public void AusgabeStudiengang(){
		for (Iterator iter = Studiengang.iterator(); iter.hasNext();){
			Student varStudent = (Student)iter.next();
			varStudent.AusgabeStudent();
		}
	}

	private ArrayList StudiengangList;
	
	public StudiengangList(){
		StudiengangList = new ArrayList();
	}

	public void AddSemester(Semester Semester_object){
		StudiengangList.add(Semester_object);
	}
	
	public void AusgabeStudiengangList(){
		for (Iterator iter = StudiengangList.iterator(); iter.hasNext();){
			Semester varSemester = (Semester)iter.next();
			varSemester.AusgabeSemester();

		}
	}
}



//	 Aufgabe d)
class D{
	public void SucheStudent(String suchName){
		for (Iterator iter = Studiengang.iterator(); iter.hasNext();){
			Student varStudent = (Student) iter.next();
			if (varStudent.GetName()== suchName){
				System.out.println("Student gefunden");
				varStudent.AusgabeStudent();
			}
			else{
				System.out.println("Student nicht gefunden");
			}			
		}
	}
}


public class GesamtFH{
	private String Studiengang[];
	private Semester Sem [];

	public GesamtFH(){
		Studiengang = new String [10];
		Sem = new Semester [10];
	}

	public void Add(int index, String studi_gang, Semester term_object){
		Studiengang [index] = studi_gang;
		Sem[index] = term_object;
	}
}
```

Vielen Dank, an alle die sich hier drüber Gedanken machen und noch viel mehr, an die, die hier eine Lösung posten 

_[Edit by Beni: Den Code eingerückt, so dass man das überhaupt lesen kann]_


----------



## Spamme (26. Feb 2006)

Weiß niemand, was an der Lösung in Bezug auf die Aufgabenstellung nicht richtig ist?


----------



## Bleiglanz (26. Feb 2006)

zum Beispiel die Suchfunktion

```
if (varStudent.GetName()== suchName){
```
den Rest hab ich jetzt nicht angeschaut


----------



## SebiB90 (26. Feb 2006)

wir machen keine HA
sag uns wo genau du/ihr nicht weiter kommst, dann helfen wir.
und nur so ne bemerkung:
wieso hast Studiengang 2 konstruktoren die aber unterschiedlich heißen, also einmal Studiengang() und einmal StudiengangList(), hab das letzterer kann nicht funktionieren.


----------



## Spamme (26. Feb 2006)

Ihr müsst mir die Aufgabe ja auch nicht machen!
Das meiste ist ja (glaub ich) eben schon fertig. Die Sache ist eben nur dass ich keine Ahnung hab, was der Prof eben an der Aufgabe auszusetzen hat! 
Mal abgesehen von fehlender Suchfunktion, danke @Bleiglanz

Das was SebiB90 meint, versteh ich nicht so ganz, wohl eher aufgrund der Formulierung. Es gibt da zwei Konstruktoren, aber ist das so schlimm, dass die unterschiedlich heißen?


----------



## RicoSoft (27. Feb 2006)

er meint, dass ein Konstruktor immer gleich heissen muss wie die Klasse selbst. Das ist bei Deinem 2. Konstruktor aber nicht der Fall.

In Zeile 89 musst Du die Methode equals(...) verwenden, kein Vergleich mit ==.

Daneben: was geht denn nicht (ich schreib das Programm nicht ab und vergleiche auch Aufgabenstellung und Programm nicht). Wenn es nicht kompiliert (was ich hier annehme) --> Ausgabe der Fehlermeldung mit Zeile. Wenn etwas semantisch


----------



## SebiB90 (27. Feb 2006)

RicoSoft hat gesagt.:
			
		

> er meint, dass ein Konstruktor immer gleich heissen muss wie die Klasse selbst. Das ist bei Deinem 2. Konstruktor aber nicht der Fall.


genau das mein ich


----------



## Spamme (27. Feb 2006)

Danke für eure Postings!

Also das Programm spuckt beim Komplilieren folgenden Fehler aus:
Zeile 63: illegal start of expression


Nur was den Prof dann noch fehlt, ist dass bei einer Ausgabe der Studenten der Studiengang und das Semster nicht angezeigt werden. Es werden nur die "untersten" Eigenschaften ausgegeben, also Alter, Name, Vorbildung, Nummer...


----------



## RicoSoft (27. Feb 2006)

das dürfte eben dieser zweite illegale konstruktor sein.

verwandle mal

```
private ArrayList StudiengangList;
   
   public StudiengangList(){
      StudiengangList = new ArrayList();
   }
```
 in 
	
	
	
	





```
private ArrayList StudiengangList = new ArrayList();
```

eventuell hilft das schon weiter


----------



## Spamme (27. Feb 2006)

immernoch illegal start of expression....


----------



## RicoSoft (27. Feb 2006)

also hier mal meine aufteilung (und dann gibts keine compile-exception bei mir)

Studiengang.java:

```
import java.util.ArrayList;
import java.util.Iterator;

public class Studiengang {
	private ArrayList Studiengang;

	public Studiengang() {
		Studiengang = new ArrayList();
	}

	public void AddStudent(Student Student_object) {
		Studiengang.add(Student_object);
	}

	public void AusgabeStudiengang() {
		for (Iterator iter = Studiengang.iterator(); iter.hasNext();) {
			Student varStudent = (Student) iter.next();
			varStudent.AusgabeStudent();
		}
	}

	private ArrayList StudiengangList = new ArrayList();

	public void AddSemester(Semester Semester_object) {
		StudiengangList.add(Semester_object);
	}

	public void AusgabeStudiengangList() {
		for (Iterator iter = StudiengangList.iterator(); iter.hasNext();) {
			Semester varSemester = (Semester) iter.next();
			varSemester.AusgabeSemester();

		}
	}

	// Aufgabe d)
	class D {
		public void SucheStudent(String suchName) {
			for (Iterator iter = Studiengang.iterator(); iter.hasNext();) {
				Student varStudent = (Student) iter.next();
				if (varStudent.GetName() == suchName) {
					System.out.println("Student gefunden");
					varStudent.AusgabeStudent();
				} else {
					System.out.println("Student nicht gefunden");
				}
			}
		}
	}

}
```

Student.java:

```
public class Student {
	private String name;

	int alter;

	String bildung;

	int mnr;

	public Student(String Name, int Alter, String Vorbildung, int Matrikelnummer) {
		name = Name;
		alter = Alter;
		bildung = Vorbildung;
		mnr = Matrikelnummer;
	}

	public void AusgabeStudent() {
		System.out.println("Name:" + name);
		System.out.println("Alter:" + alter);
		System.out.println("Vorbildung:" + bildung);
		System.out.println("Matrikelnummer:" + mnr);
	}

	public String GetName() {
		return name;
	}
}
```
Semester.java:
	
	
	
	





```
public class Semester {
	private String semesterjahr;

	public Semester(String jahr) {
		semesterjahr = jahr;
	}

	public void AusgabeSemester() {
		System.out.println("Semester:" + semesterjahr);
	}

	public String Getjahr() {
		return semesterjahr;
	}
}
```
GesamtFH.java:

```
public class GesamtFH {
	private String Studiengang[];

	private Semester Sem[];

	public GesamtFH() {
		Studiengang = new String[10];
		Sem = new Semester[10];
	}

	public void Add(int index, String studi_gang, Semester term_object) {
		Studiengang[index] = studi_gang;
		Sem[index] = term_object;
	}
}
```


----------



## Spamme (27. Feb 2006)

Danke@RicoSoft

Nur muss ich jetzt noch irgendwie das Programm überreden so zu laufen, dass ich die gewünschten Ausgaben bekomme 

Wie muss ich denn die "User Arrows" zwischen den Klassen setzen? Habe jetzt meine logische Reihenfolge gesetzt: Student auf Semester von da auf Studiengang und von da auf GesamtFH... 

Objekte kann ich erstellen soweit, aber irgendwie nicht ausgeben....  :bahnhof:


----------



## Spamme (27. Feb 2006)

Also beim Semster kann ich irgendwie keine Studenten hinzufügen -.-

Studenten, Semster, Studiengänge und GesamtFHs kann ich erstellen. Die Studenten mit Eigenschaften belegen aber irgendwie klappt das zuweisen auf den Studiengang nicht....


----------



## Spamme (27. Feb 2006)

So langsam beiß ich in die Tastatur!!!

Das verdammigte Zeug will einfach nicht laufen!!! -.-


----------



## Spamme (27. Feb 2006)

Ich konnte jetzt diese Meldung im Terminal Window von BlueJ abfangen:

Error creating shared memory, rc = -7
Transport dt_shmem failed to initialize, rc = -7.

Diese Meldung kam, als ich mein Semester ausgeben wollte

Was hat das zu bedeuten??


----------



## RicoSoft (27. Feb 2006)

Eigentlich unwichtig. Ich würde Dir jetzt empfehlen, das Programm mal zu debuggen. Keine Ahnung wie man das unter BlueJ macht, einfach das Programm schrittweise laufen lassen (jede normale IDE kann das)


----------



## Spamme (27. Feb 2006)

Also..... irgendwie geht jetzt mit dem Debugger garnichts mehr!

ARGH! Verdammtes BlueJ/Javagemülle.... -.-


----------



## RicoSoft (28. Feb 2006)

Naja, BlueJ ist zwar ganz nett als Einführung, ich selber kann damit nichts anfangen. Was mir noch fehlt ist eine main()-Methode. Hast Du noch irgendwelche Klassen, von denen wir nichts wissen, mit denen Du das ganze testet? Wenn ja, dann bitte diese noch posten, dann werd ich das schnell checken und schauen, wo das Problem liegen könnte.


----------



## Spamme (28. Feb 2006)

Also eine main()Methode habe ich nicht, auch sonst nichts weiteres.
In der Vorlesung habe ich auch nie etwas über eine main()Methode gehört oder einen Aufschrieb darüber.


----------

