Mailinglisten-Archive |
Hallo Peter, Am Montag, 16. Januar 2006 14:44 schrieb Peter Bieling: > Also, mich hatte überrascht, dass sich Methoden verschiedener Objekte > ihre static-Variablen teilen. > Selbst wenn man das Objekt zerstört und ein neues bildet, bleibt diese > static-Variable erhalten, oder genauer gesagt: feiert Auferstehung. > > Offenbar hat das auch einige Kommentatoren des Manuals überrascht, denn > die haben extra darauf hingewiesen. Da es aber das gleiche Verhalten ist > wie in C++, nehme ich inzwischen an, dass das so sein soll. (Vielleicht > weiß jemand, wie es z.B. in Java oder anderen objektorientierten > Sprachen gelöst ist.) zunächst ein Link dazu für Java: http://www.galileocomputing.de/openbook/javainsel4/javainsel_06_003.htm#Rxx365java06003040001CB1F038100 Ansonsten kann ich das gerne für Dich mal mit Java ausprobieren. :-) Aber: Mich verwirrt nach wie vor Eure Diskussion. Warum sollte sich in einer Klasse eine static-Variable innerhalb einer Funktion anders verhalten, als außerhalb einer Funktion? Bei der Objektorientierten Programmierung steht doch das Objekt im Vordergrund, d.h. eine Klasse hat Attribute und Methoden. Hier ist keine Rede davon, daß eine Methode Attribute besäße. Klassenattribute gehören zur Klasse, niemals zu Methoden. Eine Methode kann ein Attribut verändern. Mehr nicht. Aus meiner Sicht müßte eine static-Variable in einer Klasse ohnehin außerhalb der Funktionen deklariert werden. Ich werde mal prüfen, ob das nicht der einzige, fehlerfreie Weg in Java ist. Ich gehe mal davon aus, daß die vermeintliche Dokumentationslücke, die wir da gesehen haben, deswegen existiert, weil es da nichts zu erklären gibt. Es gibt von der Logik her keine statischen Variablen, deren Geltungsbereich auf eine Methode in einer Klasse beschränkt ist. Diese Idee kann eigentlich nur zustandekommen, wenn prozedurale Ansätze mit objektorientierten vermischt werden bzw. prozedurale Programmierung 1:1 in objektiertorientierte übertragen wird. :-) Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive