Teilaufgabe

Luk_KK

Mitglied
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”)
• Namen der Teilnehmer: “teilnehmer” (Array von Strings)
• Anzahl der angemeldeten Teilnehmer: “anzahl” (“int”)
Berücksichtigen Sie hierbei folgende Teilaufgaben:
• Der Konstruktor der Klasse “Kurs” hat als Parameter einen “kursTitel”
(“String”) und die maximale Anzahl von Teilnehmern “maxAnzahl”, die
das Feld “teilnehmer” aufnehmen kann.
• Implementieren Sie mit alle benötigten “set”- und “get”-Methoden , um
Werte in Datenfeldern zu speichern und aus Datenfeldern zu lesen, z.B. in
folgender Form:
Java:
public void setKostenlos(boolean kostenlos) {
this.kostenlos = kostenlos;
}
public boolean getKostenlos() {
return kostenlos;
}
• Implementieren Sie eine Methode “addTeilnehmer()” von “Kurs” zum Anmelden
eines Teilnehmers. Werfen Sie ggf. eine “ArrayIndexOutOfBoundsException”,
wenn das Array “teilnehmer” bereits voll ist.
• Schreiben Sie eine Methode “toString()” von “Kurs”, die automatisch aufgerufen
wird, wenn ein “Kurs”-Objekt mit “System.out.println()” benutzt
wird, um die Felder des Objekts in einen String zu überführen.
• Schreiben Sie eine Methode “equals()”, die überprüft, ob ein übergebenes
Objekt der Klasse “Object” und das aktuelle Objekt als gleich aufgefasst
werden sollen. Für die Gleichheit wird gefordert, dass das übergebene Objekt
den Typ “Kurs” hat und die beiden Strings “kursTitel” übereinstimmen.

• Fügen Sie eine “main()”-Methode an, in der Sie die implementierten Methoden
testen, indem Sie mehrere “Kurs”-Objekte anlegen, ein paar Teilnehmer
anmelden und dann die gespeicherten Informationen auf den Bildschirm
ausgeben.

Java:
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());
	}
}
 

Luk_KK

Mitglied
Ja okay, dass müsste also so ausschauen:

Java:
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

Bekanntes Mitglied
probier es mal so:
Java:
System.out.println("Kurs 1 und 2 gleich? " + kurs1.getKursTitel().equals(kurs2.getKursTitel()));

EDIT: Bzw. Du sollst ja eine eigene Methode schreiben:
Java:
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:
Java:
if(object1 instanceof Kurs   &&   this.getKursTitle == object1.getKursTitel)
 
Zuletzt bearbeitet:
S

SlaterB

Gast
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

Bekanntes Mitglied
@ Slater-B

Und wenn man das ganze schachtelt?
also
Java:
if( object1 instanceof Kurs){
   if( ...and so on... ){
   }
}

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

SlaterB

Gast
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

Mitglied
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...
 

Neue Themen


Oben