Static

illaX

Erfahrenes Mitglied
Nur mal so ne Frage, ist es ein guter programmierstil mit vielen statischen Variablen und Klassen zu arbeiten?

MfG
illaX
 
Hallo!

Nur mal so ne Frage, ist es ein guter programmierstil mit vielen statischen Variablen und Klassen zu arbeiten?
Wenn's der konkrete Fall unbedingt erfordert schon (Z.Bsp. bei Java Schnittstellen zu Legacy Systemen...). Ansonsten sollte man sich ernsthaft über das Design Gedanken machen.
static Attribute machen auf jeden Fall Sinn für Konstante Werte und sind auch essentieller Bestandteil von bestimmten Design Patterns wie z.Bsp. Singleton...
statische innere Klassen machen Sinn, wenn die Objekte die diese Klasse repräsentieren soll rein Semantisch nur innerhalb der "Umhüllenden" Klasse eine Rolle spielen.

Gruß Tom
 
...wenn man die Vorzüge von "static" nutzen will, dann ja, sonst eher nein - meine Meinung.

Wirklich gebraucht habe ich eine static-Variable einmal als Instanz-Zähler, da das betreffende Programm nur 5 Instanzen der betreffenden Klasse erzeugen durfte.

Oft verwechselt man Nutzen mit Bequemlichkeit.
Bei einer Klasse, die z.B. zwei Dateien kopieren soll, könnte man diese betreffende Methode static machen und somit auch ohne spezielle Instanz benutzen. Das mag oft gehen, doch bereits wenn zwei Threads darauf zugreifen müßte man synchronisieren, was bei verschiedenen Instanzen je Thread nicht nötig wäre. Static sollte also wohl überlegt sein.
 
also ich habe
Klasse Beispiel
.......new Klasse Beispiel2

und in Beispiel2 möchte ich ein Attribut in der Klasse Beispiel ändern.

hoffe das war verständlich ^^

MfG
illaX
 
Code:
Beispiel b1 = new Beispiel();
Beispiel b2 = new Beispiel();
System.out.println(b1.get());
System.out.println(b2.get());
b2.next(b1);
System.out.println(b1.get());
System.out.println(b2.get());


Der Inhalt von Beispiel wäre z.B. so:

Code:
public class Beispiel() {
private int i = 1;
public void set(int i) {
this.i = i;
}
public int get() {
return i;
}
public void next(Beispiel b) {
b.set(b.get() + 1);
}
}


Wofür brauchst Du da static?:)
 
Ich bin planlos wie man das am besten löst. :D

Also ich habe:
eine Klasse Beispiel

Bei einem Event erstelle ich eine neue Klasse: Beispiel2. Diese Klasse bekommt aber keinen Namen zugewiesen. Ich könnte ihr natürlich einen geben.

Dann muss ich aus dieser neuen Klasse(Beispiel2) ein Attribut holen. Allerdings geht das erst wenn sie wieder geschlossen ist.

also habe ich:
new Beispiel2();
getter
der getter wartet aber natürlich nicht bis Beispiel2 beendet ist...

Bisher kann ich nur den neuen Wert zuweisen, wenn ich das Objekt (Beispiel) übergebe. Das finde ich aber nicht praktisch.

Dann habe ich in Beispiel2 einen Namen erstellt:
Beispiel beispiel;
und mit beispiel.attributname.setter wollte ich den Wert zuweisen. Kommt aber eine Fehlermeldung.

OOP macht mich wahnsinnig, ich habe riesige Probleme mit übergeben von Attributen,...

MfG
illaX
 
...irgendwie raffe ich nicht so recht, was Du eigentlich willst :confused:


Wenn Du "Beispiel2" einen Namen geben willst, dann kannst Du doch z.B. eine "setName(String)"-Methode implementieren, über die Du dann irgendwann den Name vergibst, den Du z.B. mit "getName()" irgendwann auch wieder auslesen kannst.

P.S.: Klassen werden weder geöffnet noch geschlossen.
 
Danke für den Hinweis mit den Klassen. Ich habe jetzt das Objekt übergeben und dann geht es.

Das Problem ist, das die zweite Klasse ja die andere nicht kennt. Also kann ich auch den setter nicht benutzen. Jedenfalls weiß ich nicht wie.

MfG
illaX
 
Zurück