variablen klassen übergreifend

KonradN

Super-Moderator
Mitarbeiter
Du kannst etwas public machen. Dann ist es von außen zugreifbar.
Wenn etwas static ist, dann ist keine Instanz der Klasse notwendig.

Das sind aber Dinge, die gut durchdacht sein sollen.
a) Zugriff auf Variablen sollte man generell nicht nach außen geben. Das nennt sich Kapselung und ist ein wichtiges Konzept in der objektorientierten Entwicklung.
b) Static Elemente widersprechen dem objektorientierten Ansatz. Daher sollte man auf diese auch verzichten, wenn möglich. Üblich sind also, dass man nur die main Methode und sogenannte Konstanten als static hat. (Konstanten mein "public static final ..... " Variablen.)
 

tyno1584

Mitglied
Du kannst etwas public machen. Dann ist es von außen zugreifbar.
Wenn etwas static ist, dann ist keine Instanz der Klasse notwendig.

Das sind aber Dinge, die gut durchdacht sein sollen.
a) Zugriff auf Variablen sollte man generell nicht nach außen geben. Das nennt sich Kapselung und ist ein wichtiges Konzept in der objektorientierten Entwicklung.
b) Static Elemente widersprechen dem objektorientierten Ansatz. Daher sollte man auf diese auch verzichten, wenn möglich. Üblich sind also, dass man nur die main Methode und sogenannte Konstanten als static hat. (Konstanten mein "public static final ..... " Variablen.)
ich möchte eben eine Kollision zwischen 1 Objekten das sich frei bewegt und einem Objekt das man per Knopf druck bewegen kann programmieren, aber dann stimmt die x und y Koordinate nicht, da sie immer noch die gleiche ist, wie am Anfang
 

KonradN

Super-Moderator
Mitarbeiter
Dazu brauchst Du keine Statischen Variablen. Der Aufbau ist ja auch nicht sonderlich komplex. Du brauchst also ledigliche eine Klasse, die dann beide Objekte kennt und dann so prüfen kann, ob diese kollidieren oder nicht.
aber dann stimmt die x und y Koordinate nicht, da sie immer noch die gleiche ist, wie am Anfang
Dann ist irgendwas falsch. Zeig Deinen Code, dann kann man schauen, wo der Fehler ist.
 

tyno1584

Mitglied
Kreis kreis;
Rechteck rechteck;
Bricks bricks;
int x,y,r; //Kreis Position nd grösse
int x2,y2,l2,b2; // Rechteck grösse und Position
int vx,vy; // Kreis Geschwindigkeit
int vx2,vy2;// Rechteck Geschwindigkeit
color c,c2; //Farben Kreis&Rechteck
int x3,y3;
int l3,b3;

int a;
void setup(){
x=100; y=100; r=25;
x2=200; y2=450; l2=100; b2=20;
vx=2; vy=2; vx2=2; vy2=2;
; c2=100;
x3= 20; y3= 40;
l3=50; b3=20;

kreis = new Kreis(x,y,r,x2,y2,vx,vy,l2,b2,c2);
rechteck = new Rechteck(x,y,r,x2,y2,l2,b2,vx,vy,vx2,vy2,c2);
bricks = new Bricks(x3,y3,l3,b3,a,c);

size(500,500);



}
void draw(){
background(200);
kreis.zeichnen();
kreis.kolrand();
rechteck.keyPressed();
rechteck.zeichnen();
kreis.kolobj();
rechteck.kolrand();


}

class Kreis{
Rechteck rechteck;
int x,y,r;
int vx,vy;
color c;
int x2,y2,l2,b2;




Kreis(int x0, int y0, int r0, int x20, int y20, int vx0, int vy0, int l20, int b20, int c0){ // defintion varaibelne
x=x0; y=y0; r=r0;x2= x20; y2=y20;vx=vx0; vy=vy0; l2=l20 ;b2=b20;c=c0;
}

void zeichnen(){
fill(c);circle(x,y,r);
x=x-vx; y=y+vy;
}
//Kreis kollidiert mit Rändern
void kolrand(){
if( (x+r/2>=width) || (x-r/2<=0) ){ vx=-vx;}
if( (y-r/2<=0) ){ vy=-vy;}
}
void kolobj(){
//Kollision an den Objekten
if (y>=y2 && y<=y2+b2) { //Kreis ist über oder unter Rand
if(abs(x2-x-l2) <=r/2 || abs(x-x2) <=r/2){ vx=-vx;}
}
if (x>=x2 && x<=x2+l2) { //Kreis ist über oder unter Rand
if(abs(y-y2-b2) <=r/2 || abs(y-y2) <=r/2){ vy=-vy;
}
}
}

}

class Rechteck{
int x,y,r;
int vx,vy;
int x2,y2,l2,b2;
int vx2,vy2;
color c;

Rechteck(int x0, int y0, int r0,int x20, int y20, int l20,int b20, int vx0, int vy0, int vx20, int vy20, int c0){
x=x0; y=y0; r=r0;x2=x20; y2=y20; l2=l20; b2=b20; vx=vx0; vy=vy0;vx2= vx20; vy2=vy20; c=c0;
}
void zeichnen(){
fill(c);
rect(x2,y2,l2,b2);
}

void kolrand(){
if(x2<=0){
x2=x2+vx2;
}
if(x2+l2>=width){
x2=x2-vx2;
}
}

void keyPressed(){
if (keyCode == RIGHT) {x2=x2+vx2;}
if( keyCode == LEFT) {x2=x2-vx2;}
}
}
 

KonradN

Super-Moderator
Mitarbeiter
Erst einmal der Hinweis: Code bitte in Code Tags posten. Dazu einfach den Knopd </> links oberhalb des Eingabebereichs drücken.

Und das Problem ist bei Dir relativ einfach: Du hast in Kreis und Rechteck eine Variable x2 und so. Das sind aber natürlich unterschiedliche Variablen. Wenn Du also in Rechteck x2 veränderst, dann verändert sich x2 bei dem Rechteck nicht.

Wenn Du also einen Kreis hast und im Kreis auf die Kollision mit Rechteck prüfen willst, dann muss der Kreis das Rechteck kennen. Oder - was besser ist - die Kollision wird nicht im Kreis geprüft, denn das ist ja kein Verhalten von Kreis.

Du hast also sowas die ein Spielraum. Im Spielraum ist der Kreis und das Rechteck. Und dann der Spielraum prüfen, ob der Kreis und das Rechteck sich berühren. Spielraum dürfte also die Klasse sein, deren Inhalt Du zuerst gezeigt hast min der auch draw() ist und so.
 

mihe7

Top Contributor
Also müsste ich das Rechteck und der Kreis in die gleiche Klasse reinschreiben?
Nein. Es gibt verschiedene Möglichkeiten:

a) die Klasse Kreis prüft, ob eine Kollision mit einem Rechteck vorliegt, dann erhält die betreffende Methode das Rechteck als Parameter (analog würde dies für Klasse Rechteck gelten, nur umgekehrt).

b) die Klasse aus Deinem Kommentar #5 prüft, ob eine Kollision zwischen zwei Objekten (Kreis und Rechteck) vorliegt. Diese Klasse kennt den Kreis und das Rechteck bereits.
 

tyno1584

Mitglied
Nein. Es gibt verschiedene Möglichkeiten:

a) die Klasse Kreis prüft, ob eine Kollision mit einem Rechteck vorliegt, dann erhält die betreffende Methode das Rechteck als Parameter (analog würde dies für Klasse Rechteck gelten, nur umgekehrt).

b) die Klasse aus Deinem Kommentar #5 prüft, ob eine Kollision zwischen zwei Objekten (Kreis und Rechteck) vorliegt. Diese Klasse kennt den Kreis und das Rechteck bereits.
wie kann ich die Parameter der Methode geben?
 

Neumi5694

Top Contributor
wie kann ich die Parameter der Methode geben?
So wie jeden anderen Parameter auch.
Java:
//Annahme, es handelt sich um ein Werkzeug in einer externen Klasse.
class Werkzeugklasse {
  public static boolean kolobj(Kreis kreis, Rechteck rechteck) {
      ...;
  }
}


//Aufruf:

irgendeineMethode(){
     Kreis meinKreis = ...;
    Rechteck meinRechteck = ...;
    boolean esGibtKollision = Werkzeugklasse.kolobj(meinKreis, meinRechteck);
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Variablen aus anderen Klassen übergreifend verwenden Java Basics - Anfänger-Themen 7
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
T Variablen anderer Klassen Java Basics - Anfänger-Themen 1
W Sichtbarkeit vom Variablen, Klassen usw. Java Basics - Anfänger-Themen 3
P Klassen Klassen bzw. Variablen Probleme Java Basics - Anfänger-Themen 8
K Best Practice In Klassen auf andere Objekte mit variablen Namen zugreifen Java Basics - Anfänger-Themen 6
J Variablen Bearbeiten von Variablen aus anderen Klassen Java Basics - Anfänger-Themen 23
D variablen über mehrere Klassen Java Basics - Anfänger-Themen 12
T Verwenden von Variablen aus anderen Klassen Java Basics - Anfänger-Themen 7
W Variablen zwischen Klassen übertragen Java Basics - Anfänger-Themen 8
B Zugriff auf Variablen anderer Klassen Java Basics - Anfänger-Themen 5
K OOP Variablen aus verschiedenen Klassen Java Basics - Anfänger-Themen 4
E Auf Variablen in verschiedenen Klassen zugreifen? Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen Java Basics - Anfänger-Themen 13
B Variablen: unterschied zwischen Klassen und Instanzvariable Java Basics - Anfänger-Themen 2
P In innere Klassen Variablen übergeben Java Basics - Anfänger-Themen 10
G Übertragen von Variablen auf andere klassen oder Methoden Java Basics - Anfänger-Themen 2
R Variablen über Klassen hinweg Java Basics - Anfänger-Themen 19
T Variablen aus anderen Klassen lesen Java Basics - Anfänger-Themen 6
J Aufbau von Klassen und zugriff auf alle Variablen Java Basics - Anfänger-Themen 7
V funktionen/Variablen f. unterschiedliche Klassen definierne? Java Basics - Anfänger-Themen 6
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
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 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
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
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
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
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
P Klassen Variablen von einer Klasse zur anderen Java Basics - Anfänger-Themen 5
H Objekt überschreibt Variablen vorheriger Objekte Java Basics - Anfänger-Themen 2
P Variablen in Excel speichern Java Basics - Anfänger-Themen 6
S PHP Aufruf mit mehreren Variablen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6
G Variablen Verwendung von Variablen in anderer Klasse Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben