G
Guest
Gast
Hi,
ich bin recht neu dabei bei Java und habe manchmal noch ein paar grundsätzliche Verständinisprobleme. Ich habe vorher schon viel im .net Bereich programmiert und will mich jetzt mal etwas weiterbilden.
Dazu möchte ich ein Programm schreiben indem ich Punkte und Kreise und Linien verwalten kann.
Dazu habe ich eine Klasse Punkt angelegt
und eine Klasse Linie
So zum testen erstelle ich mir ein paar Punkte und eine Linie
Das funktioniert ja soweit, aber nicht ganz so, wie ich es mir gedacht habe.
Die Methode der Linie Move soll einfach die Punkte der Line, also Anfang und Ende um einen neuen Punkt (addiert) verschieben.
Wenn ich das also tue dann werden die Punkte auch verschoben, wie sie es sollen. In meinem Beispiel lege ich eine Line mit den Punkten a und b an. Danach verschiebe ich die Linie um c. Mein Problem ist nun folgendes.
a und b werden ja mehr oder weniger an Linie übergeben und sollen sich eigentlich nicht ändern dafür hab ich ja extra Anfang und Ende in der Klasse Linie angelegt. Trotzdem wird c auch auf a und b addiert. Warum?
Also das Ergebnis ist folgendes
----------Punkt a-----------
xKoord: 8
yKoord: 11
----------Punkt b-----------
xKoord: 10
yKoord: 13
----------Punkt Anfang-----------
xKoord: 8
yKoord: 11
sollte aber folgendes sein meiner Zielsetzung nach.
---------Punkt a-----------
xKoord: 2
yKoord: 4
----------Punkt b-----------
xKoord: 4
yKoord: 6
----------Punkt Anfang-----------
xKoord: 8
yKoord: 11
Der denkfehler ist sicherlich absolut trivial, vielleicht kann mir ja mal jemand von euch einen Schlag auf den Hinterkopf verpassen.
Danke schonmal
HarLe
ich bin recht neu dabei bei Java und habe manchmal noch ein paar grundsätzliche Verständinisprobleme. Ich habe vorher schon viel im .net Bereich programmiert und will mich jetzt mal etwas weiterbilden.
Dazu möchte ich ein Programm schreiben indem ich Punkte und Kreise und Linien verwalten kann.
Dazu habe ich eine Klasse Punkt angelegt
Code:
public class Punkt {
int xKoord;
int yKoord;
public Punkt()
{
xKoord= 0;
yKoord = 0;
}
public Punkt(int xK ,int yK)
{
xKoord = xK;
yKoord = yK;
}
public int getXKoord() {
return xKoord;
}
public void setXKoord(int koord) {
xKoord = koord;
}
public int getYKoord() {
return yKoord;
}
public void setYKoord(int koord) {
yKoord = koord;
}
public void add(Punkt p)
{
xKoord = this.getXKoord() + p.getXKoord();
yKoord = this.getYKoord() + p.getYKoord();
}
public void print()
{
System.out.println("----------Punkt-----------");
System.out.println("xKoord: "+this.getXKoord());
System.out.println("yKoord: "+this.getYKoord());
}
}
und eine Klasse Linie
Code:
public class Linie {
Punkt Anfang;
Punkt Ende;
public Linie()
{
Anfang = new Punkt();
Ende = new Punkt();
}
public Linie(Punkt a, Punkt b)
{
Anfang = a;
Ende = b;
}
public Punkt getAnfang() {
return Anfang;
}
public void setAnfang(Punkt anfang) {
Anfang = anfang;
}
public void move(Punkt movePunkt)
{
Anfang.add(movePunkt);
Ende.add(movePunkt);
}
public Punkt getEnde() {
return Ende;
}
public void setEnde(Punkt ende) {
Ende = ende;
}
}
So zum testen erstelle ich mir ein paar Punkte und eine Linie
Code:
public class DrawMain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Punkt a = new Punkt (2,4);
Punkt b = new Punkt (4,6);
Punkt c = new Punkt (6,7);
Linie l = new Linie(a,b);
l.move(c);
a.print();
b.print();
l.Anfang.print();
}
}
Das funktioniert ja soweit, aber nicht ganz so, wie ich es mir gedacht habe.
Die Methode der Linie Move soll einfach die Punkte der Line, also Anfang und Ende um einen neuen Punkt (addiert) verschieben.
Wenn ich das also tue dann werden die Punkte auch verschoben, wie sie es sollen. In meinem Beispiel lege ich eine Line mit den Punkten a und b an. Danach verschiebe ich die Linie um c. Mein Problem ist nun folgendes.
a und b werden ja mehr oder weniger an Linie übergeben und sollen sich eigentlich nicht ändern dafür hab ich ja extra Anfang und Ende in der Klasse Linie angelegt. Trotzdem wird c auch auf a und b addiert. Warum?
Also das Ergebnis ist folgendes
----------Punkt a-----------
xKoord: 8
yKoord: 11
----------Punkt b-----------
xKoord: 10
yKoord: 13
----------Punkt Anfang-----------
xKoord: 8
yKoord: 11
sollte aber folgendes sein meiner Zielsetzung nach.
---------Punkt a-----------
xKoord: 2
yKoord: 4
----------Punkt b-----------
xKoord: 4
yKoord: 6
----------Punkt Anfang-----------
xKoord: 8
yKoord: 11
Der denkfehler ist sicherlich absolut trivial, vielleicht kann mir ja mal jemand von euch einen Schlag auf den Hinterkopf verpassen.
Danke schonmal
HarLe