Problem mit set-Methode

dxlegends

Mitglied
Hallöchen,
ich sitze grade an einer Hausaufgabe für mein Informatik-Studium (erstes Semester) und weiß an der einen Stelle nicht wirklich, was überhaupt gewollt ist.
Wir haben eine Java-Api erhalten, in der die entsprechenden Klassen, Methoden etc. zu entnehmen sind.
Dies ist mir soweit ja klar.
Nun sitze ich an der ersten Klasse
Diese nennt sich Hochschulangehoeriger.Diese Klasse hat einen Konstruktor, der ebenfalls Hochschulangehoeriger heißt und aus den Strings Vorname und Nachname gebildet wird.
Ferner müssen die Methoden getVorname(),getNachname, setVorname und setNachname enthalten sein.
Dann wäre da noch die Methode:

toString

public java.lang.String toString()

Overrides:
toString in class java.lang.Object


Wie dem folgenden Java-Code entnommen werden kann, stellen (glaube ich zumindest) die get-Methoden kein größeres Problem dar.
Jedoch frage ich mich, wofür ich die set-Methoden brauche.
Setze ich denn nicht schon über den Konstruktor die Namen?

Außerdem frage ich mich nach dem Sinn von der toString Methode....


Java:
public class Hochschulangehoeriger {
	String vorname;
	String nachname;
	
	public Hochschulangehoeriger(String vorname, String nachname){
		this.vorname = vorname;
		this.nachname= nachname;
		Hochschulangehoeriger[] liste = new Hochschulangehoeriger[1];
		int zaehler = 0;
		liste[zaehler] = Hochschulangehoeriger.this;
		Hochschulangehoeriger[] neueliste = new Hochschulangehoeriger[liste.length + 1];
		for (int i = 0; i < liste.length; i++) {
			neueliste[i] = liste[i];
		}
		liste = neueliste;
		zaehler++;
	}
	public String getVorname(){
		String name;
		name = vorname;
		return name;
	}
	public String getNachname(){
		String name;
		name = nachname;
		return name;
	}
	public void setVorname(){
		
	}
	public void setNachname(){
		
	}
}

Ich bin schon jetzt für jede Hilfe/Anregung dankbar 🙂
MLG
Legends
 
Hallo,

normalerweise sollten Instanzvariablen
Code:
private
sein.

Somit ist es dann nicht möglich die Instanzvariablen, welche den inneren Zustand eines Objekts repräsentieren, zu ändern.

Um eine solche Variable allerdings zu Laufzeit eines Objekts zu ändern werden die setter-Methoden gebraucht. Diese setter-Methoden erwarten immer einen Parameter.

[EDIT]
So jetzt hab ich mir die toString() Methode nochmal bisschen angeschaut, sollte ich hier falsch liegen verbessert mich bitte.

In der Regel entspricht der String, der von toString() normalerweise zurückgegeben wird nicht den Erwartungen. Dieser liefert i.d.R. den Klassennamen sowie eine Hexadezimaldarstellung des Hash-Codes.

Damit kann man natürlich nicht viel anfangen und deswegen sollte diese toString() Methode überschrieben werden. Die toString() Methode wird beispielsweise automatisch aufgerufen, wenn man eine Consolenausgabe macht (System.out.println()).
Damit man hier eben einen Sinnvollen Zeichensatz erhält sollte man die toString() Methode überschreiben.

[/EDIT]
 
Zuletzt bearbeitet:
Den Setter brauchst du, wenn du den Namen nachträglich ändern willst. Der Konstruktor wird schließlich nur einmal aufgerufen.
toString ist eine Methode, die jedes Objekt hat. Ihre Aufgabe ist es das Objekt als String(=Text) darzustellen, zumeist zu Debug-Zwecken. So könnte toString z.B. den Namen deines Hochschulangehoeriegen anzeigen oder ähnliches.
Wird dann z.B. System.out.println(<Instanz deiner Klasse>); aufgerufen, so wird toString aufgerufen und das Ergebnis in die Konsole geschrieben.
 
@ Fab1:

Danke für den Hinweis mit dem Parameter, hatte den doch glatt überlesen in der API und mich daher gewundert, wie das gehen soll 🙂

Was das private angeht, so haben wir dies meine ich noch nicht wirklich behandelt, werde ich aber nochmal in den Folien nachschauen.

@ Cola
Auch dir Danke, auch durch deine Antwort ist mir klar, wozu ich die Setter denn brauche.


Allerdings ist mir noch nicht klar, wie ich toString Methode überschreiben soll, bzw. womit.
Vielleicht kann mir hier noch jemand helfen 🙂

MLG Legends

Edit:
grade nochmal ein wenig wegen des toString nachgelesen.
Der Grundgedanke ist mir jetzt klar, allerdings bin ich relativ ratlos, was ich hier machen soll.
Ich meine, ich habe eine Methode toString, aber wie muss ich die jetzt auf die get Methoden anwenden?
bzw. wie muss ich die Methode toString füllen, um sie in meinem Fall sinnvoll nutzen zu können?
 
Zuletzt bearbeitet:
Mach mal jetzt, ohne toString, folgendes:
Java:
Hochschulangehoeriger a = new Hochschulangehoeriger("Keks", "Lord");
System.out.println(a);

Danach implementiere toString z.B. so:
Java:
public String toString() {
  return vorname + " " + nachname;
}

Dann rufe das oben nochmal auf.
 
Mach mal jetzt, ohne toString, folgendes:
Java:
Hochschulangehoeriger a = new Hochschulangehoeriger("Keks", "Lord");
System.out.println(a);

Danach implementiere toString z.B. so:
Java:
public String toString() {
  return vorname + " " + nachname;
}

Dann rufe das oben nochmal auf.

Danke für die schnelle Antwort 🙂
Wie ich in dem Edit geschrieben hatte, ist mir ja das Grundprinzip klar, allerdings frage ich mich, woher ich weiß, was ich in den override reinsetzen muss.
Schließlich weiß ich ja nicht, ob ich da nun nur vorname oder nachname oder wie bei dir sehr schön gezeigt beides reinsetzen muss. 🙂
 

Neue Themen


Zurück
Oben