Setter zum Berechnen nutzen?

Status
Nicht offen für weitere Antworten.

Verjigorm

Top Contributor
Hallo,
mal wieder eine kurze Frage zum Thema "guter Programmierstil"

Ich habe ein Objekt, welches 2 Kilometerangaben besitzt.
Diese werden per "Setter" gesetzt.
Nun möchte ich die Differenz der beiden bilden.
Ist es ok, wenn man das in der "Set-methode" aufruft?

In beiden Set-Methoden wird überprüft ob die beiden Kilometerwerte ungleich -1 (default) sind.
Wenn ja, dann wird die Länge berechnet und intern gespeichert.
Das hat den Vorteil, dass wann immer einer der beiden Werte neu gestzt wird, die Länger immer intern aktualisiert wird.
Kann man das so lassen, oder sollte man die Neuberechnung eher von Aussen her anstossen?

das ganze sieht momentan so aus:

Code:
	/**
	 * @param km_anfang the km_anfang to set
	 */
	public void setKm_anfang(double km_anfang) 
	{
		this.km_anfang = km_anfang;
		berechneLaenge();
	}


	/**
	 * @param km_ende the km_ende to set
	 */
	public void setKm_ende(double km_ende) 
	{
		this.km_ende = km_ende;
		berechneLaenge();
	}
	

	/**
	 * 
	 */
	private void berechneLaenge()
	{
		if(this.km_anfang != -1 && this.km_ende != -1)
		{
			laenge_in_m = (int) (this.km_ende*1000 - this.km_anfang*1000);
			//System.out.println("berechne Länge: " + laenge_in_m);
		}
	}

mfg Verjigorm
 

Final_guy

Aktives Mitglied
Hi,

also über Stil lässt sich natürlich immer streiten, aber generell würde ich die Berechnung der Länge in der "getXY()"-Methode anstellen, die diesen wert lieferen soll. Der Grund ist, dass du ja nur dann den aktuellen Wert berechnen musst, wenn es wirklich jemand wissen möchte. :) Anders sieht das natürlich aus, wenn die Länge auch intern für andere Zwecke verwendet wird.

die Berechnung expilizt von aussen anzustoßen wäre wohl keine gute Idee (wird ja implizit angestoßen durch Reaktion auf get-Abfrage).
 

ARadauer

Top Contributor
also über Stil lässt sich natürlich immer streiten, aber generell würde ich die Berechnung der Länge in der "getXY()"-Methode anstellen, die diesen wert lieferen soll. Der Grund ist, dass du ja nur dann den aktuellen Wert berechnen musst, wenn es wirklich jemand wissen möchte. Anders sieht das natürlich aus, wenn die Länge auch intern für andere Zwecke verwendet wird.

ja ist geschmackssache, ich schreib meine berechnungen auch meistens in die get methoden.
würde man jetzt jedoch unverhältnis mässig mehr get aufrufe als set aufrufe haben, wäre die berechnung in der set methode performanter...

meiner meinung nach ist das geschmacksache....
 
M

maki

Gast
Stilfragen... wichtig wären imho dass man die Code Conventions einhält (wink wink ;)).

Ansonsten würde ich die Berechnung auch "dynamisch" im get machen und keine redundante Variable für die Differenz verwenden.
 

Verjigorm

Top Contributor
maki hat gesagt.:
Stilfragen... wichtig wären imho dass man die Code Conventions einhält (wink wink ;)).

Ansonsten würde ich die Berechnung auch "dynamisch" im get machen und keine redundante Variable für die Differenz verwenden.

ah stimmt, daran habe ich ja noch garnicht gedacht
 

Marco13

Top Contributor
Hmja, für diesen Fall ist es noch sehr einfach, mit 2 settern und einer Differenz - die kann auch direkt dynamisch im getter berechnet werden, oder eben in den settern, falls sie nochmal innerhalb der Klasse (also NICHT nur beim getter) gebraucht wird oder so...

Eine Alternative, die für diesen Fall "overkill" wäre, aber bei "komplexeren" Berechnungen angebracht sein KANN, wäre eine Art "dirty-flag":
Code:
class Blablubb
{
    private Input0 input0 = ...    
    private Input1 input1 = ... 
    ...

    private Result result = null;

    private boolean updateRequired = true;

    public void setInput0(Input0 input0)
    {
        this.input0 = input0;
        updateRequired = true; // Dirty-Flag setzten
    }

    ...

    public Result getResult()
    {
        if (updateRequired) // Nur neu berechnen, wenn sich was geändert hatte
        {
            result = computeResultFromInput();
            updateRequired = false;
        }
        return result;
    }
}
Aber wie gesagt: Hier ist das nicht nötig, und WO genau es angebracht ist (und wo die Vor- und Nachteile liegen) mag sich jeder selbst überlegen...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S ISO 8601 -> getter / setter String Allgemeine Java-Themen 3
B Methoden Java Getter und Setter Methoden Allgemeine Java-Themen 9
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
F ArrayList`s in Klassen mit Getter/Setter Allgemeine Java-Themen 8
N Eigenschaften eines Buttons per Setter verändern Allgemeine Java-Themen 5
perlenfischer1984 Java Builder vs Setter Allgemeine Java-Themen 1
S Klassen Prüfungen im Setter Allgemeine Java-Themen 6
J unterschiedliche Objekte, selbe getter und setter Allgemeine Java-Themen 15
L Getter und Setter Verständnisfrage Allgemeine Java-Themen 10
L OOP Setter u. Getter (und weiteres) Allgemeine Java-Themen 7
M Einkapselung, Getter und Setter Allgemeine Java-Themen 6
D Design ohne Getter und Setter Allgemeine Java-Themen 8
G setter und getter: Parameter Überprüfung Allgemeine Java-Themen 6
J Setter mittels invoice aufrufen Allgemeine Java-Themen 4
wachtda Getter und Setter Allgemeine Java-Themen 1
M Setter-Methode wird aufgerufen aber ändert nichts? Allgemeine Java-Themen 8
J getter und setter Allgemeine Java-Themen 29
C setter funktionieren nicht Allgemeine Java-Themen 10
K java.lang.reflect - Getter und Setter ermitteln Allgemeine Java-Themen 8
MiMa Beats per Minute (BPM berechnen) Allgemeine Java-Themen 12
Encera Größe eines Objektes in Byte berechnen Allgemeine Java-Themen 2
bittedanke Wie benötigte Bits berechnen (Huffmankodierung) Allgemeine Java-Themen 7
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
ReinerCoder Kombinationsmöglichkeiten der Textfelder berechnen Allgemeine Java-Themen 14
S Mittelwert anhand eines Stream berechnen Allgemeine Java-Themen 5
MiMa Prüfziffer einer EAN Nummer berechnen Allgemeine Java-Themen 4
C Java Script Pause berechnen Allgemeine Java-Themen 5
D Kgv aller Paare aus einem Array mit n integer berechnen Allgemeine Java-Themen 5
MaxG. Best Practice Alle Kombinationen berechnen Allgemeine Java-Themen 3
Aruetiise Funktion(y = mx+n) in String speichern und berechnen Allgemeine Java-Themen 9
N Das große O berechnen Allgemeine Java-Themen 2
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
N Kombinationen beliebiger Größe berechnen Allgemeine Java-Themen 1
The Pi Anzahl der Gewichtscheiben berechnen Allgemeine Java-Themen 11
B Hirsch-Index berechnen Allgemeine Java-Themen 11
B Umfang berechnen für Polygone Allgemeine Java-Themen 18
C pplet Mitelwert Berechnen Allgemeine Java-Themen 0
J Primzahlen berechnen Allgemeine Java-Themen 13
K F-Verteilung FINV in Java berechnen Allgemeine Java-Themen 4
A Helligkeit eines Bildes berechnen Allgemeine Java-Themen 1
P Methoden Alle Kombinationen aus 2 Karten berechnen Allgemeine Java-Themen 2
C mp3-Lied Dauer berechnen Allgemeine Java-Themen 1
L Winkel eines Vektors berechnen [Anfängerprob] Allgemeine Java-Themen 5
R Threads Taskzeit berechnen Allgemeine Java-Themen 12
S Eclipse Entfernung berechnen Allgemeine Java-Themen 16
T Kreis und sekant schnittpunkt berechnen mit latitude longitude Allgemeine Java-Themen 4
B Java Diffentialgleichungen berechnen Allgemeine Java-Themen 3
W 2D-Grafik Kontrast eines Bildes berechnen Allgemeine Java-Themen 6
T Taylorpolynom berechnen Allgemeine Java-Themen 14
S Erste Schritte Mittelsenkrechte berechnen Allgemeine Java-Themen 3
P Matrix Kurtosis berechnen Allgemeine Java-Themen 40
S Werte aus 2 eindimensionale boolean arrays mithilfe von logischen operatoren berechnen Allgemeine Java-Themen 6
S Teiler Berechnen Allgemeine Java-Themen 6
Kr0e Differenzen von Bildern berechnen - Remote control Allgemeine Java-Themen 2
D md5 berechnen für BufferedImage Allgemeine Java-Themen 5
J bewegliche Feiertage berechnen Allgemeine Java-Themen 7
W Rechnungsbetrag berechnen Allgemeine Java-Themen 2
reibi Checksumme für ein File berechnen Allgemeine Java-Themen 12
M Integral berechnen Allgemeine Java-Themen 5
D Primzahlen berechnen funktioniert nicht Allgemeine Java-Themen 2
S Algorithmus um nächst folgende Primzahl zu berechnen Allgemeine Java-Themen 7
Developer_X Prozentdifferenz berechnen. Allgemeine Java-Themen 13
M Kombinationen über rekursiven Algorithmus berechnen? Allgemeine Java-Themen 10
M Monatliche Zeitspannen berechnen Allgemeine Java-Themen 3
Ark Arkussinus effizient berechnen Allgemeine Java-Themen 12
Iron Monkey Potenzzahlen mit shiftLeft berechnen? Allgemeine Java-Themen 13
N Rechenzeit berechnen? Allgemeine Java-Themen 3
H Schrifthöhe berechnen / Swing Allgemeine Java-Themen 5
T ungerade zahlen berechnen Allgemeine Java-Themen 3
X Suche Java Klasse die Feiertage berechnen kann Allgemeine Java-Themen 2
G ganzzahlige Potenz schnell berechnen Allgemeine Java-Themen 4
M Lautstärke von Audiosignal live berechnen Allgemeine Java-Themen 7
S CRC wert berechnen ergibt 0 ? Allgemeine Java-Themen 9
data89 Die Größe eines Strings in Byte berechnen? Allgemeine Java-Themen 12
T Arbeitsstunden berechnen Allgemeine Java-Themen 8
M Date Range auswerten und die Monate berechnen Allgemeine Java-Themen 2
G Richtung berechnen anhand Koordinaten Allgemeine Java-Themen 3
P Dauer (Tage, Stunden, Minuten, Sekunden) berechnen Allgemeine Java-Themen 5
D Mittelwert einer Menge von Doubles berechnen Allgemeine Java-Themen 3
P Winkel berechnen. Allgemeine Java-Themen 3
0 Alle Teiler einer Zahl performant berechnen? Allgemeine Java-Themen 9
B Was würdet ihr dafür berechnen? Allgemeine Java-Themen 7
T MessageDigest von einem char[] berechnen Allgemeine Java-Themen 7
S den zweit niedrigsten wert in einem array berechnen Allgemeine Java-Themen 2
E CRC 8 Berechnen Allgemeine Java-Themen 1
M Math-String-Formel berechnen lassen Allgemeine Java-Themen 4
B Ellipsen Kreisbahnen berechnen! Allgemeine Java-Themen 11
M Alle möglichen Kombinationen von mehreren Objekten berechnen Allgemeine Java-Themen 6
clemente lanman und nt password berechnen Allgemeine Java-Themen 7
J an und bn berechnen Allgemeine Java-Themen 5
F Datum mit anzahl tagen berechnen Allgemeine Java-Themen 3
B Differenz in Monaten berechnen --- DateDiff()? Allgemeine Java-Themen 12
B Distance berechnen! Allgemeine Java-Themen 7
D Feiertage berechnen Allgemeine Java-Themen 8
F vergangene Zeit berechnen Allgemeine Java-Themen 6
R Zeitspannen berechnen Allgemeine Java-Themen 7
N 2 hoch 100 berechnen Allgemeine Java-Themen 8
P Punkt berechnen Allgemeine Java-Themen 4
C x-te Wurzel berechnen Allgemeine Java-Themen 2
M Formel in einem String während Laufzeit berechnen. Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben