# Getter und Setter Verständnisfrage



## LeaveX (4. Nov 2013)

Hallo Community,

ich weiss was getter/setter sind aber ist für jedes Attribut ein getter/setter zu schreiben und diesen öffentlich zu machen? 
Wenn ich den MVP-Orientierten Ansatz hernehme und die View-Klasse erstelle, mit jbuttons jtextfeldern usw... entstehen ja sehr viele Attribute. :bahnhof:

LG
Leave


----------



## Gucky (4. Nov 2013)

Ja. Für jedes Attribut, DAS VERÄNDERT WERDEN SOLL, sollte ein setter existieren, so wie für jedes Attribut, WELCHES IN ANDEREN KLASSEN BENÖTIGT WIRD, ein getter existieren sollte.


----------



## LeaveX (4. Nov 2013)

Also dass ich dich richtig verstehe. Ich hab ein Formular mit 10 JLabel und 10 JTextField´s. also 20 Attribute. Jetzt hab ich sinnvollerweise dann 10 getter/setter für die JTextFelder. Ist es nicht einfacher man nimmt in dem beispiel jetzt ein JFrame Attribut und holt vom contentPane dann die textfelder???


----------



## ARadauer (4. Nov 2013)

LeaveX hat gesagt.:


> entstehen ja sehr viele Attribute. :bahnhof:


egal..

Eclipse -> Source -> Generate Getters and Setters...


----------



## KSG9|sebastian (4. Nov 2013)

ARadauer hat gesagt.:


> egal..
> 
> Eclipse -> Source -> Generate Getters and Setters...



Ja, aber ich halte nix davon für alle Attribute immer Getter und Setter zu machen..dann kann man die Variablen (zumindest bei immutable/finalen Typen) auch gleich sparen.

Was von außen nicht gebraucht wird sollte imho auch nicht nach außen sichtbar sein.


----------



## Phash (4. Nov 2013)

Es gibt ein paar Ausnahmen, aber Sebastian hat da schon recht.

Wenn du die Variablen woanders nicht zugreifbar machen möchtest, dann brauchst du dafür auch keine getter und setter anbieten.

Variablen, die nicht veränderbar sein sollen, werden mit "private final Typ Name" deklariert und dann im Konstruktor gesetzt.

Variablen, die weder gesetzt, noch gelesen werden sollen, werden auch mit final markiert, und haben weder setter noch getter (macht bei internen Variablen Sinn...)


----------



## Gucky (4. Nov 2013)

Natürlich kannst du auch das JContentPane zurückgeben. Das wäre aber schlechter Stil.

Zusammenfassend kann man sagen:
Getter für JEDES Attribut, dass außen benötigt wird.
Setter für JEDES Attribut, dass von außen verändert werden soll.
Attribute zusammenfassen ist nicht nötig und wäre auch schlechter Stil. (siehe Beispiel mit dem JContentPane)
Unnötige Getter und Setter sind schlechter Stil und sollten entfernt werden.
Es muss nicht zu jedem Getter einen Setter geben und andersrum. Je nach Bedarf.


----------



## LeaveX (4. Nov 2013)

Danke Leute für die Hilfreichen infos.


----------



## Phash (4. Nov 2013)

Gucky hat gesagt.:


> Attribute zusammenfassen ist nicht nötig und wäre auch schlechter Stil. (siehe Beispiel mit dem JContentPane)



Jein...

DTOs machen ja genau das...


----------



## ARadauer (4. Nov 2013)

KSG9|sebastian hat gesagt.:


> Ja, aber ich halte nix davon für alle Attribute immer Getter und Setter zu machen..dann kann man die Variablen (zumindest bei immutable/finalen Typen) auch gleich sparen.
> 
> Was von außen nicht gebraucht wird sollte imho auch nicht nach außen sichtbar sein.



Wir reden hier von einer View Klasse oder? Da würd ich nicht lange fackeln...


----------



## KSG9|sebastian (4. Nov 2013)

Bei ner View würd ich sagen ja, passt. Die sollte sowieso im den Sinne intern sein das nur der passende Presenter sie verwendet.


----------

