Herangehensweise - mit vielen Variablen arbeiten

Status
Nicht offen für weitere Antworten.

Nordevil

Mitglied
Hallo,

ich habe eine Frage zur grundsätzlichen Herangehensweise, bzw. dem Handling mit vielen Variablen.

In meinem Programm möchte ich die Farben von bestimmten Pixeln auslesen. Da die Pixel immer nur an bestimmten Positionen bestimmte Farben haben, habe ich somit viele Variablen, die jeweils einen Punkt darstellen. Wie implementiere ich das am besten?

Wäre es sinnvoll eine Locations-Klasse zu machen in der alle Variablen mit Gettern und Settern drin stehen? Macht es vielleicht eher Sinn die ganzen Variablen in eine Datenbank zu packen und sie von dort aus immer auszulesen? Kann ich das ganze dynamisch gestalten? Da der Desktop quasi in vier Teile unterteilt ist und die Punkte in diesen vier Bereichen immer an der selben Stelle stehen, würde es ja reichen, wenn man die kompletten Koordinaten des ersten Viertels hätte. Danach könnte man die anderen Punkte dann ja berechnen. Ist es im Falle einer Klasse sinnvoll die Punkte sofort im Konstruktor zu initialisieren?

Meiner Meinung nach sollten alle Werte zentral irgendwo abgelegt sein, damit man sie im Falle des Falles schnell editieren kann und nicht lange im Code suchen muss.

Über Hilfe würde ich mich sehr freuen. Vielen Dank schon einmal im Voraus!


Greetz
Nordevil
 

sliwalker

Top Contributor
Hoi,

ich muss zugeben, ich habe nicht ganz verstanden was Du willst.

Ist Array, List oder Hashmap vielleicht eine Antwort für Dich?

Ob Du etwas im Konstruktor initialisieren sollst oder nicht, ist ja stark davon abhängig, was mit der variablen gemacht wird und ob sie eine Standardinitilisierung bekommen darf oder im Falle einer Referenzvariablen nicht lieber null sein sollte.

Das kann man so pauschal nicht sagen.
Aber als Hinweis. Primitive Datentypen werden von der Runtime initialisiert, sofern sie Klassenvariablen sind. Ein int zB mit 0. Das gilt nicht für lokale Variablen in Methoden, da hast Du Schrott, Nix oder was auch immer drin stehen.

Versuch nochmal bitte Dein prblem zu schildern, aber als ob Du es Deiner Oma erzählen würdest, die keine Ahnung vom PC hat :)

greetz
SLi
 

Nordevil

Mitglied
Hallo sliwalker,

danke für den Versuch, das Ganze zu verstehen. :wink: Ich versuche es nochmal!

Also ich möchte einen Bot schreiben, der z.B. Hearts, Solitaire, Poker, was auch immer spielt. Da ich keine Programmmier-Schnittstelle zu diesen Programmen habe, ist es mir im Moment nur möglich aufgrund einer Grafikanalyse, bzw Desktopanalyse auf bestimmte Situationen zu reagieren. Das soll heißen, dass wenn z.B. ein bestimmter Button in dem Programmfenster auftaucht, ich darauf reagieren möchte. Um den Button zu erkennen, nehme ich mir im Moment zwei Punkte raus, die eine bestimmte Farbe haben, z.B. rot. Ist der Button nicht da, dann hat derselbe Punkt meinetwegen die Farbe grün. Da es ja mehrere Buttons und natürlich auch Karten etc. gibt, kommen so natürlich viele Punkte zusammen, die bei bestimmten Situationen auf ihren Farbwert hin ausgewertet werden müssen. Um diese vielen verschiedenen Punkte geht es nun. Für die Punkte nehme ich die Point-Klasse (int x, y) und für die Farben die Color-Klasse (int r, g, b). Zum Auslesen der Farbwerte an bestimmten Punkten nehme ich die Robot-Klasse.

Hinzu kommt noch, dass ich später auch z.B. beim Pokern mehrere Tische gleichzeitig bespielen möchte. Das würde bedeuten, dass sich die Punkte untereinander nicht unterscheiden, sie halt nur nach rechts oder nach unten verschoben sind.

Die Frage ist nun, wie ich mit diesen vielen Punkten am besten umgehe? Sollte ich eine Klasse machen, die alle Punkte beinhaltet? Wie kann ich die Punkte am besten berechnen. Ich habe mir schon überlegt, dass ich einen "Root-Punkt" setzen könnte, aus dem sich dann die anderen Punkte berechnen. Wenn ich denn mehrer Tische hätte, dann brächte nur der Rootpunkt geändert zu werden.

Fragen über Fragen, aber dafür ist das Forum ja hoffentlich da.

Ich hoffe, ich konnte nun mehr Licht ins Dunkle bringen und bin schon gespannt auf die Ideen und Anregungen.


Greetz
Nordevil
 

moormaster

Top Contributor
Nordevil hat gesagt.:
Da es ja mehrere Buttons und natürlich auch Karten etc. gibt, kommen so natürlich viele Punkte zusammen, die bei bestimmten Situationen auf ihren Farbwert hin ausgewertet werden müssen.

Das lässt sich doch mit Objektorientierter Programmierung prima Kapseln, indem du z.B. eine Klasse Window erstellst, die sich eine Fensterposition merken kann.

Nun kannst du entsprechend eine Klasse Button dahernehmen, welche die Position eines Buttons innerhalb eines Fensters sowie eine Referenz auf ein Window-Objekt speichern kann. D.h. der Button weiss über die Window-Referenz, in welcher Position sich sein Fenster befindet und er kennt seine Position innerhalb dieses Fensters; man kann also jederzeit auf diese Weise die absolute Position auf dem Monitor ausrechnen.

Dann kannst du in dieser Klasse Methoden definieren, die herausfinden (anhand der Pixelfarben an bestimmten Positionen), ob der Button sichtbar ist, gedrückt ist oder was auch immer.

Da es ja sicherlich nicht nur eine Sorte Buttons gibt, die du überprüfen möchtest, bietet es sich natürlich an, die Klasse Button nur als Oberklasse zu verwenden und von dieser dann weitere Klassen abzuleiten... z.B. HeartsButton, PokerAllInButton oder sowas eben.

Hinzu kommt noch, dass ich später auch z.B. beim Pokern mehrere Tische gleichzeitig bespielen möchte. Das würde bedeuten, dass sich die Punkte untereinander nicht unterscheiden, sie halt nur nach rechts oder nach unten verschoben sind.

Hier würden sich dementsprechend die Window Klassen nützlich machen, die ich schon erwähnt hab. Evtl. ist es nützlich ebenfalls verschiedene Windowklassen zu bauen (HeartsWindow, PokerWindow...), welche dann die jeweiligen Buttons usw. im Konstruktor gleich anlegen mit den entsprechenden Positionen. Somit währen die Buttonpositionen dann auch an "zentraler" Stelle... nämlich jeweils in den von Window erbenden Klassen.
 

Nordevil

Mitglied
Hallo moormaster,

vielen Dank für die ausführliche Antwort! Aber wenn ich das richtig verstanden habe, dass sind die Koordinaten von den einzelnen Objekten (z.B. Button) ja über alle Klassen verteilt. Wenn sich die Positionen von Objekten (z.B. andere Anordnung des Festerinhaltes nach einem Update) dann mal ändern sollten, dann müsste ich ja alle Objektklassen durchgehen, und die Koordinaten ändern, da die ja nach Deiner Ausführung nicht zentral irgendwo bestimmt sind. Habe ich da evtl. etwas missverstanden?


Greetz
Nordevil
 

moormaster

Top Contributor
Nordevil hat gesagt.:
Hallo moormaster,

vielen Dank für die ausführliche Antwort! Aber wenn ich das richtig verstanden habe, dass sind die Koordinaten von den einzelnen Objekten (z.B. Button) ja über alle Klassen verteilt. Wenn sich die Positionen von Objekten (z.B. andere Anordnung des Festerinhaltes nach einem Update) dann mal ändern sollten, dann müsste ich ja alle Objektklassen durchgehen, und die Koordinaten ändern, da die ja nach Deiner Ausführung nicht zentral irgendwo bestimmt sind. Habe ich da evtl. etwas missverstanden?

Nun: Ja, da hast du was nicht ganz verstanden.

Die Objekte, die Buttons etc. repräsentieren, sollen Koordinaten nur speichern können. Im Konstruktor werden die objektspezifischen Daten, wie die Koordinaten, erst festgelegt.

Du hast also z.B. eine PokerWindow Klasse, die sich die entsprechenden Objekte anlegt und merkt.
Dort werden also solche Dinge, wie Koordinaten, relativ zum Fenster, erst festgelegt.

Die Koordinaten aller Objekte einer Sorte von Fenstern befinden sich also zentral im Konstruktor der jeweiligen Window-Klasse.
 

Nordevil

Mitglied
Ah, Ok, ich glauch so langsam hab ich das begriffen. Wenn alle Koordinaten in der Window-Klasse definiert werden, dann übergebe ich jeweils die entsprechenden Koordinaten, wenn ich ein neues Objekt erzeuge, so dass das neue Objekt mit den übergebenen Koordinaten erzeugt werden kann.

Ist das eigentlich performanceunabhägig, ob ich nun viele oder wenig Variablen übergebe?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Programmierung herangehensweise Java Basics - Anfänger-Themen 9
L Erste Schritte Herangehensweise an Java-Application Java Basics - Anfänger-Themen 4
S Programmoberfläche mit Java-Swing - Herangehensweise Java Basics - Anfänger-Themen 20
S Herangehensweise an Aufgaben Java Basics - Anfänger-Themen 8
M Arrayliste mit beliebig vielen Namen befüllen Java Basics - Anfänger-Themen 4
F HttpURLConnection mit vielen Parametern Java Basics - Anfänger-Themen 3
W Geodaten API mit vielen zusätzlichen Infos Java Basics - Anfänger-Themen 4
P Taschenrechner mit unendlich vielen Eingabemöglichkeiten Java Basics - Anfänger-Themen 1
V Erste Schritte Taschenrechner mit beliebig vielen Zahlen Java Basics - Anfänger-Themen 5
B Datenbank: Entity mit vielen Referenzen? Ansatz so ok? Java Basics - Anfänger-Themen 8
J Unit Testing mit vielen Bedingungen - Best Practice? Java Basics - Anfänger-Themen 9
JDimi Textdatei mit beliebig vielen Zeilenumbrüchen erstellen Java Basics - Anfänger-Themen 2
B Schreiben von zu vielen Einträgen in einer Datenbank Java Basics - Anfänger-Themen 9
M Input/Output Arbeiten mit extrem vielen Dateien Java Basics - Anfänger-Themen 8
K Ein zentrales Objekt in vielen anderen Klassen nutzen? Java Basics - Anfänger-Themen 22
B Input/Output File.length() gibt bei vielen Ordnern 0 zurück Java Basics - Anfänger-Themen 9
P Wie reagiere ich auf Strings mit zu vielen Chars ? Java Basics - Anfänger-Themen 6
S Variablen Prüfen, ob einer von vielen boolean true ist Java Basics - Anfänger-Themen 8
H Die Eingabe von beliebig vielen Zahlen in ein Array - ich kann es nicht Java Basics - Anfänger-Themen 6
M aus vielen backsalshs einen machen Java Basics - Anfänger-Themen 6
V ActionListener bei vielen Modulen Java Basics - Anfänger-Themen 3
Luk10 Problem mit vielen Timer(-Events) Java Basics - Anfänger-Themen 17
L Arrays mit unbestimmt vielen Feldern Java Basics - Anfänger-Themen 7
K ArrayListe erstellen mit vielen (unendlichen) Weren ??? Java Basics - Anfänger-Themen 29
K 50 errormeldungen- komme auch nach vielen Nachmittagen nicht weiter. bitte helfen Java Basics - Anfänger-Themen 39
G Verzeichnis auslesen mit sehr sehr vielen Bildern Java Basics - Anfänger-Themen 6
C Gleichbehandlung von vielen jTextFields Java Basics - Anfänger-Themen 11
B Einen Array aus vielen Vectoren Java Basics - Anfänger-Themen 3
W sleep "hängt" bei vielen Threads Java Basics - Anfänger-Themen 2
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
M Variablen umbenennen Java Basics - Anfänger-Themen 1
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
A Übergreifende Variablen Java Basics - Anfänger-Themen 17
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
P Variablen Variablen voneinander abhängig Java Basics - Anfänger-Themen 54
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
temi Redundante Variablen Java Basics - Anfänger-Themen 29
Aprendiendo Zweifel mit versteckter Variablen Java Basics - Anfänger-Themen 16
L Variablen einmal nur zu weisen Java Basics - Anfänger-Themen 62
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
S Vererbung Variablen klassenübergreifend nutzen Java Basics - Anfänger-Themen 42
R Auf Variablen einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 1
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
L Variablen dekleration + reset Java Basics - Anfänger-Themen 16
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
P Interface Variablen-Inhalte werden nicht übergeben Java Basics - Anfänger-Themen 3
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
S Variablen Flexible Variablen Namen Java Basics - Anfänger-Themen 3
R Erste Schritte 3 Variablen hochzählen lassen Java Basics - Anfänger-Themen 1
RowdyN Variablen Variablen beliebig benennen? Java Basics - Anfänger-Themen 6
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
H Variablen einer Schleife zwischenspeichern Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben