Logische Frage zu Settern und Gettern

DontKnowJava

Mitglied
Halli, Hallo, Ihr Lieben 🙂

Ich habe ein einfache, verzeiht mir falls dümmliche Frage zu Settern und Gettern.
Der Syntax und Sinn sind mir klar. Kein direkter Zugriff auf Attribute, sondern ein (hoffentlich) sicherer Zugriff auf Attribute.

Ist (beispielsweise) ein Setter nur dann ein Setter wenn ich auch wirklich ein ähnlich benanntes Attribut damit beschreibe (mit Kontrollen idealerweise) oder ist ein Setter auch dann ein Setter wenn es gar kein entsprechendes Attribut gibt und ich dort Informationen beispielsweise "zusammenbaue" und dann in eine (irgendwie benannte) Variable speichere.

Beispiel:

Java:
public class test {
    private String tasche;
 
    public void setTasche(String name, String material, String henkel, String hersteller){
        //ja, so baut man das sonst nicht zusammen, es geht nur ums Beispiel:
        tasche=name + material + henkel + hersteller;
    }
}

Ist "setTasche()" also überhaupt noch ein Setter oder sollte man sie streng genommen besser "beschreibeTasche()" nennen?
Ich würde denken das ist ein Setter, denn von außen muss nur der Sinn der Methode klar werden. Ob ich eine entsprechend benannte Variable dahinter sitzen habe, muss ja auch gar nicht transparent sein? Der andere Entwickler muss ja nur wissen - "hey, super, da ist ein Setter, da schreib ich mal was rein..."

Vielen Dank im Voraus! 🙂
 
Also laut Wikipedia HIER ist die Definition von settern, dass jeweils ein Attribut aus der Klasse geändert wird und das eventuell mit Checks.
 
Ja,

seltsam finde ich dann nur den Absatz über Getter:

"Eine Zugriffsmethode, die eine Eigenschaft eines Objekts abfragt, heißt auch Abfragemethode oder Getter... . Die Eigenschaft kann entweder direkt aus einem Objektattribut entnommen, das dann normalerweise eine geringere Sichtbarkeit hat, oder im Moment des Aufrufs berechnet werden. Für den Aufrufer ist das nicht erkennbar, dadurch wird die Kapselung sichergestellt."

Vermutlich ist es so gemeint, dass Setter tatsächlich und letztendlich als Ergebnis in eine Objektvariable schreiben, Getter dagegen lediglich abstrakter ein Attribut zurückgegeben - und das eben nicht 1:1 als Objektvariable vorliegen muss.

Vielen Dank!
🙂
 
entweder direkt aus einem Objektattribut entnommen

Das ist sowas wie:
Java:
public class ... {
  private int value;
  public int getValue() {
    return value;
  }
}

oder im Moment des Aufrufs berechnet werden

Damit ist sowas gemeint:
Java:
public class Time {
  private int timeInMillis;
  public int getSeconds() {
    return timeInMillis / 1000;
  }
  public int getMinutes() {
    return getSeconds() / 60;
  }
  //etc....
}
 
getter und setter sollten nur für den einen wert verwendet werden

getter gibt den wert zurück
setter aendert den wert

ich würde eine eigene methode schreiben für das was du vor hast
 

Neue Themen


Zurück
Oben