# Systemvariablen(Startparameter) statisch oder als Objekt?



## Cheefrocker (25. Sep 2006)

Hallo zusammen! 

Ich hätte da mal ne Frage:

Wie speichere ich folgende Information(Variablen) am besten ab um von allen Klassen komfortable auf diese Properties zugreifen zu können? Die einfachste Lösung ist über plublic static zu gehen, jedoch wollt ich fragen ob das so gut ist oder ich es lieber anders machen soll? Mehr im Sinne von OOP?

Wenn main aufgerufen wird. Sollen z.b UserID, Druckerpfad etc abgespeichert werden. Andere Klassen sollen zugriff darauf haben.

Wenn sich die Startparameter(args) ändern sollten diese Variablen wieder überschreiben werden.


Was meint ihr wie ich das machen soll??


Wäre für jeden Tipp dankbar!


----------



## Tobias (25. Sep 2006)

Ich würde ja Properties oder ab JDK5.0 Preferences benutzen...

mpG
Tobias


----------



## Cheefrocker (25. Sep 2006)

Ich meinte mit den Properties meine eigenen Properties, z.b kann ich 
per Start dem bestimmte Parameter liefern mit dehnen er weitere Sachen steuert.... 

ein kurzes Beispiel zur UserID.

Wenn beim starten den Programmes die UserID nicht manuell übergeben wird, greift er auf die eingeloggte UserID zu.

Hoffe du(ihr) versteht was ich meine! 

Ich benutze JDK 1.4.2

Gruss


----------



## Cheefrocker (25. Sep 2006)

Du meinst wohl die Klasse java.util.Properties ?? oder ??


----------



## Anmeldeboykottierer (25. Sep 2006)

Hi,
solange du die Daten nicht speichern möchtest sehe ich keinen großen Vorteil in Properties.
An sich solltest du einfach (ganz im Sinne der OOP) auf Kapselung zurück greifen. Du gewährst dabei keinen direkten Zugriff auf Variablen sondern verwendest Getter und Setter. Der Vorteil liegt dann darin, dass du Variablen z.B. leicht Read-Only setzen kannst (oder nur Öffentlich Read-Only). 
Rufst du eine Methode auf, so merkst du auch leicht, ob ein Wert schon gesetzt wurde. Im Falle der UserID nimmst du dann getUserId(), schaust hier nach ob die mit setUserId schon gesetzt wurde, ist die nicht der Fall ermittelst du dann halt die Standardrückgabe.

Gruß Der Anmeldebokottierer


----------



## Cheefrocker (26. Sep 2006)

Danke dir Anmeldeboykottierer!
Die Daten sollen nicht gespeichert werden, jedoch muss ich von anderen Packages(bzw Klassen) drauf zugreifen können.

Momenatan hab ich das mit Properties gelöst.In main wird die PropertyKlasse mit den Standardwerten gefühlt(setProperty...). Danach wird überprüft ob args[] Werte enthält, wenn ja wird die Property-Klasse angepasst.

Dazu muss ich sagen, das ich die Property-Klasse public und static deklariert habe. Ist das so in Ordnung? Ich muss ja von anderen Klassen drauf zugreifen können. Das ist war für mich die einfachste Lösung! 
Kann ich da so vorgehen oder wird das anders gehandhabt???


----------



## SnooP (26. Sep 2006)

ich hätte sie private gesetzt und eine public getProperties() Methode geschrieben, sonst kann ja jede Klasse direkt auf die Properties zugreifen... auch schreibend. 
Eine entsprechende Assoziation zu der Klasse, die die Properties hält, sollte somit irgendwo schon bestehen...


----------



## Cheefrocker (26. Sep 2006)

SnooP hat gesagt.:
			
		

> ich hätte sie private gesetzt und eine public getProperties() Methode geschrieben, sonst kann ja jede Klasse direkt auf die Properties zugreifen... auch schreibend.
> Eine entsprechende Assoziation zu der Klasse, die die Properties hält, sollte somit irgendwo schon bestehen...



Ich probier es mal aus. Werde dann das Ergebnis hier posten! 


mfg  :wink:


----------



## Gast (26. Feb 2008)

Ganz klar als Objekt!


----------

