Struktur -> Beste Lösung?

Status
Nicht offen für weitere Antworten.

A3XX

Bekanntes Mitglied
Hi

Wollte fragen wie es so mit dem Aufbau des Codes aussieht..

1. Wie ich jetzt ja weiss kann man Variablen verschieden definieren (Public, Private, Protected, Final, Static). Nun man kann sie ja auch an verschiedenen Positionen definieren. Was ist grundsätzlich die Regel? Soll man wirklich sich ganz klar an den Nutzen halten? -> Wenn man eine Variable WIRKLICH nur in einer Methode braucht, sie auch erst dort definieren? Oder der übersichtheitshalber bestimmte Variablen einfach so (obwohl es auch anders ginge) am Klassenanfang definieren?

Und meien fast wichtigste Frage zu diesem Punkt: Wenn ich eine Variable zum Beispiel in der methode ActionPerformed erstelle, und ihr dort gleich beim erstellen den wert 1 zuweise, dann wird sie jedesmal wieder auf 1 gesetzt. Aber wenn ich das nun nicht möchte, dass sie wieder auf 1 gesetzt wird, dann müsste ich sie ja am Klassenanfang definieren obwohl ich sie nur in einer Methode brauche. Ist das so? Oder gibt es eine schöenre Lösung?

2. Stimmt das, dass die Regel ist, dass man in der paint Methode jeweils wirklich nur Dinge zeichnet, aber zum Beispiel die ganzen nötigen Berechnungen in die Methode ActionPerformed packt? Oder ist es umgekehrt, dass man möglichst wenig in ActionPerformed packt dafür alles in paint?

3. Zahlen Variablen: Wie bestimtm ihr beim Schreiben des Programms den Typ eurer Zahl (integer, byte etc.) Nehmt ihr extra einen genügend Grossen(also vielleicht sogar zu grossen) Wert?
Und gibt es bestimmte regeln, dass Counter in Schleifen immer Integer sein müssen oder so?

Danke im Voraus 🙂
 
A3XX hat gesagt.:
Hi

Wollte fragen wie es so mit dem Aufbau des Codes aussieht..

1. Wie ich jetzt ja weiss kann man Variablen verschieden definieren (Public, Private, Protected, Final, Static). Nun man kann sie ja auch an verschiedenen Positionen definieren. Was ist grundsätzlich die Regel? Soll man wirklich sich ganz klar an den Nutzen halten? -> Wenn man eine Variable WIRKLICH nur in einer Methode braucht, sie auch erst dort definieren? Oder der übersichtheitshalber bestimmte Variablen einfach so (obwohl es auch anders ginge) am Klassenanfang definieren?

Und meien fast wichtigste Frage zu diesem Punkt: Wenn ich eine Variable zum Beispiel in der methode ActionPerformed erstelle, und ihr dort gleich beim erstellen den wert 1 zuweise, dann wird sie jedesmal wieder auf 1 gesetzt. Aber wenn ich das nun nicht möchte, dass sie wieder auf 1 gesetzt wird, dann müsste ich sie ja am Klassenanfang definieren obwohl ich sie nur in einer Methode brauche. Ist das so? Oder gibt es eine schöenre Lösung?

Wenn der Wert für Deine Instanz relevant ist, d.h. Du den Wert der Variablen zwar nur in einer Methode benutzt, aber den Inhalt nicht verlieren möchtest, so muss Du das Teil als Instanzvariable (am Klassenanfang - nicht static) oder als Klassenvariable (static) darstellen.


A3XX hat gesagt.:
2. Stimmt das, dass die Regel ist, dass man in der paint Methode jeweils wirklich nur Dinge zeichnet, aber zum Beispiel die ganzen nötigen Berechnungen in die Methode ActionPerformed packt? Oder ist es umgekehrt, dass man möglichst wenig in ActionPerformed packt dafür alles in paint?

??? versteh ich net... ???

A3XX hat gesagt.:
3. Zahlen Variablen: Wie bestimtm ihr beim Schreiben des Programms den Typ eurer Zahl (integer, byte etc.) Nehmt ihr extra einen genügend Grossen(also vielleicht sogar zu grossen) Wert?
Und gibt es bestimmte regeln, dass Counter in Schleifen immer Integer sein müssen oder so?

Zahlen sollten nach deren Genauigkeit und nach deren Reichweite ermittelt werden.... Wenn Du weisst, dass Du nur Zahlen zwischen 1 und 100 verwendest, die alle ganzzahlig sind, macht es keinen Sinn mit long, double, float oder int zu arbeiten. Wenn Du allerdings mit Fließkommazahlen arbeitest, wird es Dir nichts nutzen short (z.B.) zu verwenden. "Größere" Datentypen wir long und double benötigen logischerweise mehr Speicher (sollten also wenn möglich durch kleinere ersetzt werden), aber wenn man sie braucht aufgrund der benötogten Daten dann bleibt einem nix anderes übrig! ;-)

Saludos

Christian
 
Hi

Danke erstmal, ist schon einiges klarer..

Aber nochmals zum 2.:

Ich bin eben noch relativ am Anfang...da macht man einfach eine Klasse, die selbst von der Klasse Applet erbt (ist ja klar..) Und diese KLasse enthält drei Methoden:

1. init() -> um GUI Elemente zu platzieren
2. ActionPerformed -> Mach dies und das wenn jemand den Button drückt
3. paint() -> Zeichne was auf den Screen

Nun meine Frage: Wenn man bestimmte Berechnungen ausführen muss (zum Beispiel muss man einmal den Button klicken um die Zeit zu starten, und ein zweites Mal uf die Stoppuhr zu stoppen), wo platziert man die nach der Regel? In paint() oder in ActionPerformed()?
 
Grundsätzlich ist paint eine Methode die jedezeit von überall her aufgerufen werden kann (inkl. Betriebssystem, Browser, Applet selbst...). Also sollte paint einfach nur schnell sein, und den ganzen Rest kannst du sonstwo ausrechnen.

Aber noch was: der AWT-Thread ruft sowohl actionPerformed auf, als auch paint. Wenn actionPerformed am laufen ist, wird garantiert nicht gepaintet (und umgekehrt). Wenn Du wirklich umfangreiche Berechnungen hast, lohnt es sich vielleicht, einen zusätzlichen Thread herzustellen.

mfg Beni
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben