Frage von BOZZJANEK, 87

Java programmierung variablen?

manchmal muss ich eine extra methode entwickeln um mir den wert einer variable (bin mir nicht sicher ob das so heißt in dem zusammenhang) zu holen. sowas wie: gibHoehe() manchmal reicht es aber auch wenn ich nur schreibe Hoehe wie bei sowas: public void nachOben( int hoehe ) { int etagen = hoehe } hier muss ich nicht so eine "hol methode" benutzen. wieso? wann muss ich sowas benutzen und wann nicht?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von RakonDark, 23

Normalerweise sagt OOP das alles so gekapselt ist das variablen einer klasse durch ihre methoden kontrolliert werden und nicht von aussen . streng genommen sollte also für alles was es an variablen gibt eine getter bzw setter methode vorhanden sein.

Warum , weil die klasse selber kontrollieren soll , mache ich ein gebäude mit 3 stockwerken , dann kann es kein 4ten stock geben , also wäre ein setter mit 4 schonmal eine error meldung wert .

nun ist die frage wo wir eine getter methode brauchen , z.b. ist gerade die treppe zum 3 stock in renovierung und deswegen wird bei bringe in stock 3 z.b. ein getter vielleicht noch zusätzliche informationen liefern , also nicht nur 3 , sondern z.b. 03 für fahrstuhl  , das liegt natürlich an den konventionen die man benutzt , aber auch der getter könnte etwas setzen z.b. bei getterstock(3) wird noch fahrstuhl = 1 gesetzt und treppe = 0

klar wäre dann natürlich die zusatzabfrage wichtig bei getweg , das dann entsprechend treppe bzw fahrstuhl ausgegeben wird .

deswegen gibt es also auch getter die sinnvoll sind .

auch sind getter sinnvoll, weil normalerweise durch die strenge kapselung der private wert gar nicht von aussen abgerufen werden kann .

Es erscheint zwar als mehrarbeit sich um entsprechende getter und setter zu kümmern , aber um so größer das projekt wird um so sinvoller und vor allem wenn mehrere module etc miteinander kommunizieren wird es auf jedenfall gebraucht .

ausserdem kann sich auch der interne wert ändern und dann weiss der getter welchen wert er ausgeben muss

Antwort
von ceevee, 50

manchmal muss ich eine extra methode entwickeln um mir den wert einer variable (bin mir nicht sicher ob das so heißt in dem zusammenhang) zu holen. sowas wie: gibHoehe()

Das ist ein Getter.

https://de.wikipedia.org/wiki/Zugriffsfunktion

Getter (und auch Setter) nimmt man, wenn man die entsprechenden Variablen mit anderen Klassen kommunizieren will, wenn man möchte, dass eine Variable von außen nur geschrieben oder nur gelesen werden kann oder wenn da noch Validierungen oder anderes dazwischenhängt (z.B. wenn man bei Prozentwerten sichergehen will, dass die zwischen 0 und 100 liegen). Die Berechnung der Zielvariablen in Gettern / Settern sollte man vermeiden.

Und du solltest mal in ein gutes Buch zu Java (und zu Objektorientierung) investieren, anstatt hier jeden Tag planlos ein neues Thema anzuschneiden. ;)

Kommentar von BOZZJANEK ,

ich kämpfe mich sonst hal imme durchs internet. also du meinst eine solche benutzung von getter methoden wäre nicht sinnvoll? denn unser lehrer hat das so gemacht. das hat mich irritiert

Kommentar von BOZZJANEK ,

unser leher hatte sowas benutzt und das erschließt sich für mich nicht der sinn:

/** zur Abfrage, in welcher Etage sich der Aufzug gerade befindet */

public int gibEtage() {

return etage;

}   

Kommentar von ceevee ,

Damit kann man verhindern, dass die Variable etage von außerhalb der Klasse gesetzt wird. etage ist sicherlich eine private Variable.

Dass Getter nicht sinnvoll sind, habe ich nie gesagt... es kommt immer darauf an, was man machen will und auch Getter/Setter haben ihre Anwendungszwecke.

Antwort
von androhecker, 57

Schwieriges Thema für Anfänger, vor allem in Kombination mit static. Eigentlich kann man in vielen Fällen direkt die variable nehmen, aber es gibt zwei Dinge für eine Methode: Es ist angenehmer bzw verständlicher zu benutzen, und in vielen Fällen muss der ausgegebene Wert erst berechnet werden

Kommentar von BOZZJANEK ,

also würde das abrufen eines wertes durch so eine methode (ohne sie durch eine rechnung zu verändern) keinen sinn haben?

Kommentar von androhecker ,

Bei kleinen Programmen nein, bei großen macht es durchaus Sinn nicht alles public zu machen

Kommentar von BOZZJANEK ,

ok ich verstehe danke :)

Kommentar von BOZZJANEK ,

unser leher hatte sowas benutzt und das erschließt sich für mich nicht der sinn:

/** zur Abfrage, in welcher Etage sich der Aufzug gerade befindet */

public int gibEtage() {

return etage;

}   

Keine passende Antwort gefunden?

Fragen Sie die Community