# Teilaufgabe



## Luk_KK (14. Dez 2009)

Morgen zusammen,

ich hab die Aufgabe soweit ich wusste bearbeitet jedoch fehlen mir die fett markierten Teilaufgaben und ich hab keine Ahnung was da von mir verlangt wird. Vl. weiß ja einer von euch was damit anzufangen.

Vielen Dank schonmal für die Hilfe.





> Aufgabe 2: Verwaltung von Objekten im Array
> Schreiben Sie eine einfache Klasse "Kurs" mit den folgenden Datenfeldern:
> • Kurs-Titel: “kursTitel” (“String”)
> • Flag das anzeigt, ob der Kurs kostenlos ist: “kostenlos” (“boolean”)
> ...




```
package Aufgabe2;
public class Kurs {
	String kursTitel;
	boolean kostenlos;
	String[] teilnehmer;
	int anzahl;
	int maxAnzahl;	
	public Kurs(String Titelueb, int maxAnzahlueb){
		this.setKursTitel(Titelueb);
		this.setMaxAnzahl(maxAnzahlueb);
	}
	public void addTeilnehmer (String TeilnehmerName) {
		try{
			teilnehmer[anzahl++] = TeilnehmerName;
		}
		catch(ArrayIndexOutOfBoundsException e){
			System.out.println("Der Kurs ist voll. Es können keine weiteren Teilnehmer hinzugefügt werden.");		
			anzahl--;
		}
	}
	public void getTeilnehmer() { // Gibt alle Teilnehmer aus!
		for (int i = 0;i <= (anzahl-1);i++)
		System.out.println((i+1) + ". Teilnehmer: " + teilnehmer[i]);
	}
	public int getAnzahl(){ // Gibt die Anzahl der eingetragenen Teilnehmer zurück
		return anzahl;
	}
	public void setKursTitel(String Titel){ // Setzt den Kurstitel
		kursTitel = Titel;
	}
	public String getKursTitel(){ // Gibt den Kurstitel zurück
		return kursTitel;
	}
	public void setMaxAnzahl(int uebAnzahl){ // Setzt die maximale Teilnehmerzahl 
		maxAnzahl = uebAnzahl;
		teilnehmer = new String[maxAnzahl]; // Setzt die Stellen des Arrays 'teilnehmer[]'
	}
	public int getMaxAnzahl(){ // Gibt die maximale Teilnehmerzahl zurück
		return maxAnzahl;
	}
	public void setKostenlos(boolean kostenlos) { // Setzt kostenlos = true/false
		this.kostenlos = kostenlos;
	}
	public boolean getKostenlos() { // Gibt kostenlos = true/false zurück
		return kostenlos;
	}
	
	public static void main (String[] args) {
		
		Kurs kurs1 = new Kurs("Testkurs1",25); 

		kurs1.addTeilnehmer("Peter");
		kurs1.addTeilnehmer("Jürgen");
		kurs1.getTeilnehmer();
		kurs1.setKostenlos(true);
		
		System.out.println(kurs1.getAnzahl());
		System.out.println(kurs1.getKursTitel());
		System.out.println(kurs1.getMaxAnzahl());
	}
}
```


----------



## SlaterB (14. Dez 2009)

Google
->
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 10.2 Object ist die Mutter aller Klassen
10.2.2 Objektidentifikation mit toString()

zum Sinn von equals wird man auch bei Lehrbüchern/ google fündig, wobei das Thema sein sollte wenn es in einer Aufgabe dran kommt,
obwohl, die Aufgabe erklärt das ja auch halb


----------



## Luk_KK (14. Dez 2009)

Ja okay, dass müsste also so ausschauen:


```
System.out.println("Kurs 1 und 2 gleich? " + kurs1.equals(kurs2));
```

aber equals überprüft ja alles von dem objekt (also auch die Teilnehmeranzahl, die maximaleAnzahl und die Teilnehmer selbst) und in der aufgabe stand es soll nur überprüft werden ob der Typ und der kursTitel gleich sind. von daher geht das ja doch nicht mit der equals()-methode oder?


----------



## w0ddes (14. Dez 2009)

probier es mal so:

```
System.out.println("Kurs 1 und 2 gleich? " + kurs1.getKursTitel().equals(kurs2.getKursTitel()));
```

EDIT: Bzw. Du sollst ja eine eigene Methode schreiben:

```
boolean equals(Object object1){
   if (this.getClass() == object1.getClass() && this.getKursTitle == object1.getKursTitel){
      return true;
   }else{
      return false;
   }
}
```
Code ist nicht getestet und soll nur als denkanstoß dienen 

EDIT2:

Bzw müsste das auch so gehen:

```
if(object1 instanceof Kurs   &&   this.getKursTitle == object1.getKursTitel)
```


----------



## SlaterB (14. Dez 2009)

allgemeiner Hinweis:

if (boolean) {
return true;
} else {
return false;
}

kann man immer als

return boolean;

schreiben

----

getKursTitel() wird man ohne Cast nicht einfach aufrufen können, bei object1 == null wird es ne Exception geben


----------



## w0ddes (14. Dez 2009)

@ Slater-B

Und wenn man das ganze schachtelt? 
also 

```
if( object1 instanceof Kurs){
   if( ...and so on... ){
   }
}
```

Dann müsste das Problem mit casten weg sein, oder täusche ich mich?


----------



## SlaterB (14. Dez 2009)

probiere es doch aus?

-----

das Thema wurde jetzt schon zweimal auf Erledigt gesetzt, ohne Kommentar von Luk_KK,
das erste mal habe ich es zurückgestellt, nun belasse ich es dabei

edit:
da ist ja der Kommentar


----------



## Luk_KK (14. Dez 2009)

Danke Leute,

alles geklärt, hab zum einen nicht gewusst das wenn ich eine Methode schreibe die toString heißt diese immer aufgerufen wird wenn man das objekt an sich auf der konsole ausgeben lässt.

zum anderen war war mir die wirkungsweise von equals() und instanceof nicht ganz klar...


----------

