Parameter oder Attribut (wann nehme ich was?)

Status
Nicht offen für weitere Antworten.

gigi99

Mitglied
Hallo zusammen,

unten sind 2 Pseudocodestücke.
Im ersten wird der Wert des Integers a per Parameter von Methode zu Methode "durchgereicht"
im zweiten schreibe ich den Wert in die Klassenvariable und greife einfach aus einer anderen Methode einfach darauf zu.

Funktionieren tut beides.
Was ist aber vorzuziehen?
Guter Stil?
Kommt es auf den sepzifischen Kontenxt an, wann ich was nehme?

Vielen Dank im Voraus,
viele Grüße




Code:
main() {
  methode2();
}

methode1(int parameter_a) {
  writeToDatabase(parameter_a);
}


methode2() {
  int a = 8;
  methode1(a);
}
Code:
int a

main() {
  methode2();
}

methode1() {
  writeToDatabase(a);
}


methode2() {
  a = 8;
  methode1();
}
 
M

maki

Gast
Falsche Frage.

Gehört das Attribut zur (einer) Klasse?
Oder nicht?

;)
 

Maeher

Bekanntes Mitglied
Also ich bin für folgenden Vorschlag:
gigi99 hat gesagt.:
Kommt es auf den sepzifischen Kontenxt an, wann ich was nehme?
Aber wenn die Variable sonst nie verwendet wird, macht es normalerweiße mehr Sinn sie einfach als Parameter zu übergeben.
 

gigi99

Mitglied
Es handelt sich jeweils um eine Klasse, also:

Code:
Beispielklasse1 {
	main() {
 	  methode2();
	}

	methode1(int parameter_a) {
	  writeToDatabase(parameter_a);
	}


	methode2() {
 	  int a = 8;
 	  methode1(a);
	}
}




Code:
Beispielklasse2 {
	int a

	main() {
	  methode2();
	}

	methode1() {
	  writeToDatabase(a);
	}


	methode2() {
 	   a = 8;
  	   methode1();
	}	
}
 

Marco13

Top Contributor
Ist 'a' eine Eigenschaft des Objektes? Oder exisitiert 'a' NUR zu dem Zeck, es an die Methode zu übergeben? Kann es sein, dass an die Methode ZWEI mal das GLEICHE Objekt übergeben werden muss, aber mit utnerschiedlichen 'a's? Wenn das 'a' nicht im Objekt liegt, wer legt dann fest, welchen Wert 'a' haben darf?...

->

Kommt es auf den sepzifischen Kontenxt an, wann ich was nehme?

JA!
 

sliwalker

Top Contributor
Hoi,

was maki meint:

gehört die Variable logisch zu einem Bereich den Du als Klasse abbilden willst. Bsp: Klasse Schüler, Attribut "Name". Ein Name gehört zu einem Schüler, also ein Attribut draus machen.

Übertrag das mal auf deine variable.

greetz
SLi
 
K

Kampfidaggel

Gast
Kommt auf methode1 an - je nachdem welche Aufgabe sie übernimmt.
a) Wenn sie wirklich nur die Klassenvariable a an die methode2 weiterreichen soll, dann solltest du auf methode1 ganz verzichten und direkt in methode2 writeToDatabase(a) aufrufen.. (Code1)
b) Wenn du methode1(int p) irgendwo nochmals im anderen Kontext benutzt, dann kannst du den Code ruhig so lassen (Code1).
c) Benutzt du bei Code2 dein int a noch irgendwo anders? Oder nur in dem Kontext hier? In deinem Beispiel Code2 macht die Variable als Klassenvariable nämlich keinen Sinn.

Wäre bestimmt einfacher, wenn du den kompletten Code zeigen würdest. Aber von deinem Beispiel ausgehend, würde ich int a nicht als Klassenvariable deklarieren und methode1 streichen.
 
M

maki

Gast
Kampfidaggel, du verwechslet den Begriff "klassenvariable" mit "instanzvariable" bzw. "Eigenschaft".

Ob ein Ergebnis öfters wiederverwendet wird ist kein echtes Kriterium imho.

Eigenschaften (attribute) gehören zu Objekten (manchmal auch zu Klassen).
 
K

Kampfidaggel

Gast
maki hat gesagt.:
Kampfidaggel, du verwechslet de
n Begriff "klassenvariable" mit "instanzvariable" bzw. "Eigenschaft".

Ob ein Ergebnis öfters wiederverwendet wird ist kein echtes Kriterium imho.

Eigenschaften (attribute) gehören zu Objekten (manchmal auch zu Klassen).

Leider ist mir mein Fehler erst zu spät aufgefallen...es ist natürlich eine Instanzvariable... egal ...ohne Account im Forum kann ich mein Post nimma bearbeiten. Schande auf mein Haupt.

Fakt ist: Wenn eine Variable öfter wiederverwendet wird (in mehreren Funktionen), so ists mehr oder weniger zwangsläufig eine "Eigenschaft". Da seine Variable "a" _nur_ in Methode2 gesetzt/berechnet wird, und dann an eine andere Methode übergeben wird, gibt es keinen Grund sie als Eigenschaft der Klasse festzulegen.

Das Beispiel gibt halt nicht mehr her... wenn er seinen Code zeigen würde, könnte man es genau sagen. So, wie es dort steht, macht 'a' als "Eigenschaft" der Klasse keinen Sinn.
 

Escorter

Bekanntes Mitglied
In meinen Augen stellt sich viel mehr die Frage ob ich wenn ich eine Instanz der Klasse erzeugt habe auf die Variable zu greifen möchte. D.h. gibt es setter/getter, dann sollte sie ale globale Variable deklariert sein.

Zweite Variante ist, wie oben beschrieben, dfie Frage ob sie in mehreren Methoden der Klasse verwendet wird, aber selbst dann halte ich es für den saubereren Stil, wenn man sie mit überigbt, da es den Code lesbarer macht, denn dann weiß man woher die Variable kommt.

Gruß,

Esco
 
K

Kampfidaggel

Gast
Escorter hat gesagt.:
In meinen Augen stellt sich viel mehr die Frage ob ich wenn ich eine Instanz der Klasse erzeugt habe auf die Variable zu greifen möchte. D.h. gibt es setter/getter, dann sollte sie ale globale Variable deklariert sein.

Es gibt aber auch private globale Variablen, für die es keine getter-Methoden geben soll...
 
T

tuxedo

Gast
ROFL ...

Vor allem wenn man noch "private" hinzufügt ;-) Wird immer globaler ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F KI / Machine Learning Parameter verschachtelte for Schleifen Allgemeine Java-Themen 2
F KI / Machine Learning Parameter verschachtelte for Schleifen Allgemeine Java-Themen 1
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
JavaJüngling beliebige Collection die Comperable Elemente enthält als Parameter Allgemeine Java-Themen 37
M Datensatz auf ein bestimmten Parameter einzugrenzen Allgemeine Java-Themen 11
B JAX - RS.... Multiple parameter application/x-www-form-urlencoded.... Allgemeine Java-Themen 6
B Parameter Konstruktor plus rechnen Allgemeine Java-Themen 6
L Die abzuleitende Klasse als Parameter übergeben Allgemeine Java-Themen 4
W Haben Konstruktoren in Java eigentlich immer mindestens einen Parameter? Allgemeine Java-Themen 4
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
F URI mit Parameter klappt nicht Allgemeine Java-Themen 1
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
temi best practice: Parameter überprüfen, wo? Allgemeine Java-Themen 9
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
MiMa If-Abfrage mit Parameter Allgemeine Java-Themen 8
I Javaaufruf aus Batch inkl. Parameter (Adminrechte) Allgemeine Java-Themen 2
P Java https proxy (-Dhttps.proxyHost) Start-Parameter funktioniert nicht? Allgemeine Java-Themen 2
Neumi5694 Methoden Generic: Rückgabetyp als Class-Parameter übergeben Allgemeine Java-Themen 3
K Java FX Zu startenden FXML-Controller per Parameter wählen Allgemeine Java-Themen 2
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
T Klassen Parameter weitergabe Allgemeine Java-Themen 1
C Überschreiben mit kontravariante Parameter Allgemeine Java-Themen 13
M Parameter auslesen im Servlet Allgemeine Java-Themen 0
perlenfischer1984 Wann ist ein Parameter Check sinnvoll Allgemeine Java-Themen 7
Neumi5694 Vererbung Parameter muss 2 Bedingungen erfüllen Allgemeine Java-Themen 2
Sogomn Methode als Parameter? Allgemeine Java-Themen 3
T Parameter Allgemeine Java-Themen 6
R Parameter Adapter - Design Allgemeine Java-Themen 1
I Methode verallgemeinern (Methode als Parameter)? Allgemeine Java-Themen 10
F In OSX: Java-Programm über URI-Scheme aufrufen mit Parameter? Allgemeine Java-Themen 0
H Generics als Parameter Allgemeine Java-Themen 1
N [stream-api] Parameter pro Typ zählen Allgemeine Java-Themen 1
OnDemand Maximale Parameter Allgemeine Java-Themen 5
M final vor dem parameter eines Konstruktors Allgemeine Java-Themen 1
S Servlet, per URLConnection Mit String Http Parameter mitsenden Allgemeine Java-Themen 3
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
H JasperReport: Parameter befüllen Allgemeine Java-Themen 7
Joew0815 JList + JTableModel: Parameter der Tabelle übergeben Allgemeine Java-Themen 10
Y Applet/Html - Wie Java-Methode aufrufen, die einen Parameter erwartet? Allgemeine Java-Themen 3
G Polymorphie Funktion als Parameter Allgemeine Java-Themen 8
G Methoden Unterschiedliche viele Parameter Allgemeine Java-Themen 17
F Parameter im Link /jar-Aufruf Allgemeine Java-Themen 12
S OOP Designrichtlinie Parameter Prüfung Allgemeine Java-Themen 7
C char und char-Array als parameter übergeben Allgemeine Java-Themen 6
B Array Parameter Problem Allgemeine Java-Themen 3
C Reflektions, Benutzer soll Konstruktor auswählen und Parameter übergeben können Allgemeine Java-Themen 5
S Keytool: mögliche Werte für Parameter Allgemeine Java-Themen 4
H Externes Programm, Parameter Allgemeine Java-Themen 6
C Webservice: XML Parameter übergabe. Allgemeine Java-Themen 7
M Session-Parameter setzen? Allgemeine Java-Themen 10
P VM-Parameter -D... Allgemeine Java-Themen 3
V Wildcard aus Parameter in return type Allgemeine Java-Themen 2
O Collections Eigene Methodenzusicherung bei Collections als Parameter Allgemeine Java-Themen 2
W ScriptEngine + Wie Parameter übergeben bei Fukntion? Allgemeine Java-Themen 2
A Reflection Konstruktor Parameter Supertyp Allgemeine Java-Themen 2
F Parameter für Java Applikation per xml ins Meta-inf speichern? Allgemeine Java-Themen 3
J BlueJ Methode hat zu viele Parameter Allgemeine Java-Themen 6
R VM-Error - BadWindow (invalid Window parameter) Allgemeine Java-Themen 4
J Parameter an Java übergeben Allgemeine Java-Themen 10
S Neue Instanz eines Objekts erzeugen - Konstruktor erhaelt Parameter. Allgemeine Java-Themen 5
P VM Parameter und .jar Allgemeine Java-Themen 3
L Parameter-Objekte verändern oder nicht? Allgemeine Java-Themen 6
J Parameter absichtlich für außen verändern Allgemeine Java-Themen 4
A wie kann man Parameter an ein Task übergeben? Allgemeine Java-Themen 3
Iron Monkey Singleton mit Parameter Allgemeine Java-Themen 14
G setter und getter: Parameter Überprüfung Allgemeine Java-Themen 6
G JVM Parameter Allgemeine Java-Themen 7
G Parameter Bedeutung Allgemeine Java-Themen 4
W Properties-Klasse: mehrere Parameter-Belegungen übergeben? Allgemeine Java-Themen 2
J Unicode: cmd parameter (main args); exec params; filenames Allgemeine Java-Themen 2
C US_export_policy.jar und local_policy.jar VM Parameter Allgemeine Java-Themen 1
J Casten ueber generischen Parameter? Allgemeine Java-Themen 5
T Parameter einer Klasse auf Interface prüfen Allgemeine Java-Themen 6
G generische Klasse als Parameter einer generischen Klasse Allgemeine Java-Themen 5
S .rar-Dateien ein Passwort als Parameter übergeben Allgemeine Java-Themen 5
N Funktion als Parameter einer anderen Funktion Allgemeine Java-Themen 5
D Parameter parsen? Allgemeine Java-Themen 15
G Typ Parameter & Reflections Allgemeine Java-Themen 4
F mehrere Verzeichnisse als Parameter Allgemeine Java-Themen 15
Y Javadoc - Wie Parameter ansprechen bei Methodenkommentar Allgemeine Java-Themen 2
G Parameter bei mailto Allgemeine Java-Themen 2
C Java Parameter zum starten ohne auf Programmende zu warten Allgemeine Java-Themen 4
V Jar Datei mit Parameter starten Allgemeine Java-Themen 7
P Übergabe- Parameter SQL Map Allgemeine Java-Themen 45
S URL-Parameter auslesen Allgemeine Java-Themen 2
F Parameter vs Argument Allgemeine Java-Themen 4
T xverify-parameter : Workaround zur Laufzeit? Allgemeine Java-Themen 8
F Viele generische Parameter sinnvoll? oder besser casten? Allgemeine Java-Themen 10
P command line parameter auswerten Allgemeine Java-Themen 3
M Parameter an main übergeben aber wie? Allgemeine Java-Themen 4
T Parameter an Thread übergeben Allgemeine Java-Themen 8
S synchronisation einer Methode abhängig vom Parameter Allgemeine Java-Themen 10
J Interface als Parameter übergeben Allgemeine Java-Themen 4
L JNI: C-->Java : Methode mit String-Parameter Allgemeine Java-Themen 18
A Weshalb man Parameter auf Gültigkeit prüfen sollte Allgemeine Java-Themen 6
H in JOE die Parameter -xmx256m -xrs hinzufügen Allgemeine Java-Themen 2
K Testen einer Klasse mit File Objekt als Parameter Allgemeine Java-Themen 6
X Default-Werte für Methoden-/Funktions-Parameter Allgemeine Java-Themen 2
M Funktion als Parameter oder andere Möglichkeit Allgemeine Java-Themen 3
R Parameter in einer Methode verändern Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben