Kleines Grundsatzproblem

Status
Nicht offen für weitere Antworten.
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

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
 

anfänger15

Bekanntes Mitglied
vielleicht hilfts wenn du

int xKoord;
int yKoord;


und aus der Klasse Linie

Punkt Anfang;
Punkt Ende;


private "machst"


also schreibst:

bei Punkt

private int xKoord;
private int yKoord;

ubd bei Linie:

private Punkt Anfang;
private Punkt Ende;
 

HarLe-San

Neues Mitglied
Hi,

Danke für den Tip, hat aber leider auch nicht geholfen ;)
Das ist wieder so eine Denksache wo man wieder den Kopf aufs Notebook "legen" will, wenn man erst herausgefunden hat, wie billig die Lösung eigentlich ist... könnt ich wetten ...
 

Marcel_Handball

Bekanntes Mitglied
Das was du verändern musst ist folgendes:

In der Klasse Linie:

Code:
public Linie(Punkt a, Punkt b)
	   {
	      Anfang = new Punkt(a.getXKoord(),a.getYKoord());
	      Ende = new Punkt(b.getXKoord(),b.getYKoord());
	   }

Denn wenn du schreibst:

Code:
public Linie(Punkt a, Punkt b)
	   {
	      Anfang = a;
	      Ende = b;
	   }

speicherst du in Anfang und Ende nur eine Referenz / Verweise auf a bzw. b.

Das hat zur Folge, dass du beim Aufruf von l.move(c); auf a und b zugreifst (wegen) des Verweises und nicht auf Anfang und Ende ;)
 

Der Müde Joe

Top Contributor
weil du die Referenzen von Punkt a und b übergibst
dh. die Linie besitzt das Original (Referenz darauf)

dan veränderst du mit l.move()...in der Linie wiederum eine referenz auf das Original, welches verändert wird.

am schluss printes du a und b. welche die gleichen referenzen sind, wie in der Linie.
DH du arbeites immer mit den gleiche 2 objeken

EDIT:
siehe Marcel_Handball....
er erstellt 2 neue Objekte...Linie hat nicht mehr die gleichen Objekte (Referenzen darauf)
dh. dann veränderst du andere Objekte
 

HarLe-San

Neues Mitglied
A schön vielen Dank für die Tips,

das leuchtet durchaus ein! Ich werds gleich umstricken! Vielen Dank!



-----------------------------------------------------------


Also ich habs gerade geändert und es funktioniert nun wie es soll!

Vielen Dank für die schnelle Hilfe - Problem gelöst! :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Kleines Java-Projekt; Kassenprogramm Java Basics - Anfänger-Themen 7
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
J Kleines Rechenprogramm Java Basics - Anfänger-Themen 13
G Erste Schritte Suche Java Programmierer für kleines Projekt Java Basics - Anfänger-Themen 1
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
B Input/Output Kleines Netzwerkproblem Java Basics - Anfänger-Themen 2
J OOP Kleines Schülerverwaltungsprogramm Java Basics - Anfänger-Themen 9
F Methoden Kleines Problem mit meinem Glücksrad... Java Basics - Anfänger-Themen 9
N ein kleines GUI mit einem hauch XML Java Basics - Anfänger-Themen 5
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
T erstes kleines Programm Java Basics - Anfänger-Themen 17
S Kleines Quiz Programm Java Basics - Anfänger-Themen 4
C Hilfe - Kleines Programm macht mir Schwierigkeiten Java Basics - Anfänger-Themen 2
A Kleines Abbruch-Problem mit Do-While-Schleife Java Basics - Anfänger-Themen 4
K Ein kleines Rätsel Java Basics - Anfänger-Themen 2
E Erstes "kleines" Programm Java Basics - Anfänger-Themen 5
D kleines problem bei system.out.println schreibweise Java Basics - Anfänger-Themen 6
C Kleines Problem mit System.out.print Java Basics - Anfänger-Themen 1
A Best Practice Ideen für kleines Anfängerschulprojekt gesucht Java Basics - Anfänger-Themen 4
J kleines Karteikartenprogramm Java Basics - Anfänger-Themen 3
S Kleines Zeichen berechnen Java Basics - Anfänger-Themen 5
fLooojava kleines Projekt - Verwendung von Youtube Java Basics - Anfänger-Themen 22
E Array zu Liste - kleines Problem Java Basics - Anfänger-Themen 6
fLooojava Passwort generieren - kleines Programm Java Basics - Anfänger-Themen 15
H Kleines Prob Java Basics - Anfänger-Themen 5
J Vererbung Kleines Problem bei Vererbung! Java Basics - Anfänger-Themen 2
O Debug-Funktion mit Slick - Kleines Problem Java Basics - Anfänger-Themen 5
J Flaechen vergleichen/kleines Fehler? Java Basics - Anfänger-Themen 23
H Kleines Problem bei den Schleifen Java Basics - Anfänger-Themen 5
M Kleines Problem mit der Rekursion Java Basics - Anfänger-Themen 20
K Kleines Projekt Java Basics - Anfänger-Themen 2
T Kleines Game mit Kollision Java Basics - Anfänger-Themen 2
J Mal wieder ein kleines Toleranzproblem Java Basics - Anfänger-Themen 20
H kleines Spiel [Processing] Java Basics - Anfänger-Themen 7
T kleines problem mit switch case Java Basics - Anfänger-Themen 11
R Kleines Programm, benötige Hilfe! Java Basics - Anfänger-Themen 6
V Schon wieder ein kleines problem...dieses mal mit do-while loop Java Basics - Anfänger-Themen 9
R Login mit Datenbankabfrage: Kleines Problem! Java Basics - Anfänger-Themen 6
K Kleines Anfänger Problem bei der Abfrage Java Basics - Anfänger-Themen 8
X Kleines JMenuBar Problem Java Basics - Anfänger-Themen 8
D Kleines Abfrageproblem Java Basics - Anfänger-Themen 3
K kleines Rekursionsproblem Java Basics - Anfänger-Themen 7
P RSA Verschlüsselung kleines Problem Java Basics - Anfänger-Themen 5
B Suche kleines Java-Applet Java Basics - Anfänger-Themen 6
P Kleines Problemm mit einer NullPointerException Java Basics - Anfänger-Themen 2
R kleines Kunstprogramm "mkbox" perfektionieren Java Basics - Anfänger-Themen 13
P wahrscheinlich ein kleines Problem Java Basics - Anfänger-Themen 7
P Kleines Projekt -> Große Überlegungen Java Basics - Anfänger-Themen 2
U Bitte Helfen kleines Spiel Java Basics - Anfänger-Themen 9
K Kleines Spiel / Daten speichern Java Basics - Anfänger-Themen 8
T Kleines Spiel realisieren - wie? Java Basics - Anfänger-Themen 6
H Kleines Problem mit der Polymorphie Java Basics - Anfänger-Themen 2
S "Kleines" Problem mit dem Timer Java Basics - Anfänger-Themen 4
K kleines Array-Problem Java Basics - Anfänger-Themen 6
C Kleines 2D Spiel. Problem. Java Basics - Anfänger-Themen 5
T Kleines Verständnissproblem mit Regex Java Basics - Anfänger-Themen 4
U Kleines Problem mit Konstruktor^^ Java Basics - Anfänger-Themen 7
S Kleines Kartenspiel mit Java Java Basics - Anfänger-Themen 2
D kleines Eclipse-Problem ! Java Basics - Anfänger-Themen 2
I Kleines Program, fehler? Java Basics - Anfänger-Themen 2
S kleines Würfelspiel Java Basics - Anfänger-Themen 10
0 Frage zu Architektur: Server eines kleines Spiels Java Basics - Anfänger-Themen 4
F kleines Programm für ungerade oder gerade Zahl. Java Basics - Anfänger-Themen 18
C kleines Menü erzeugen und anzeigen Java Basics - Anfänger-Themen 11
S Kleines TickTackTou Java Basics - Anfänger-Themen 10
O Kleines Problem mit Konstruktor mit Parametern aus generischer Klasse...oder so ;) Java Basics - Anfänger-Themen 2
M Kleines Problem mit Threads (synchronized) Java Basics - Anfänger-Themen 3
J Java, kleines denkproblem. :) Java Basics - Anfänger-Themen 4
N Kleines Problemchen mit ButtonGroup Java Basics - Anfänger-Themen 2
W ein kleines Projekt! Aber wie beginnen Java Basics - Anfänger-Themen 4
S Kleines Problem... NaN, Infinity? Java Basics - Anfänger-Themen 9
B Drag and Drop fähige Trackliste..nurnoch ein kleines Problem Java Basics - Anfänger-Themen 16
G Kleines Problem mit File Java Basics - Anfänger-Themen 7
O Neuen Blackberry 8800 oder Curve gegen kleines Programm Java Basics - Anfänger-Themen 9
Z kleines projekt Java Basics - Anfänger-Themen 3
G ein kleines java prog - hat aber einen fehler-bitte um hilfe Java Basics - Anfänger-Themen 5
GambaJo Brauche Bewertung + Tipps für mein kleines Projekt Java Basics - Anfänger-Themen 4
N Nur ein kleines Installationsproblem . Java Basics - Anfänger-Themen 5
G Kleines Problem mit Nimmspiel Java Basics - Anfänger-Themen 8
U kleines problem bei ner aufgabe :( Java Basics - Anfänger-Themen 8
G Kleines Problem mit Array Java Basics - Anfänger-Themen 14
S Kleines Programm mit ArrayList Java Basics - Anfänger-Themen 7
M Kleines Programm Java Basics - Anfänger-Themen 5
M DBCP - Kleines Beispiel Java Basics - Anfänger-Themen 3
R Unicode-Wert in Binär und Dezimal umformen - kleines Problem Java Basics - Anfänger-Themen 1
G Kleines Problem Java Basics - Anfänger-Themen 3
D kleines script abhaengig von Ordner Bilder kopieren Java Basics - Anfänger-Themen 11
S Ich habe ein kleines Problem mit meinem Übungsprogramm Java Basics - Anfänger-Themen 7
S Hab ein kleines Problem :) Java Basics - Anfänger-Themen 4
K kleines bild ausgeben Java Basics - Anfänger-Themen 4
D noch ein kleines Problem Java Basics - Anfänger-Themen 4
M kleines generics problem Java Basics - Anfänger-Themen 15
B Kleines? Jedenfalls Problem mit Borland-Together! Java Basics - Anfänger-Themen 4
M kleines Java Programm (Verwaltung) Java Basics - Anfänger-Themen 16
K Kleines Programm zur Stapelverarbeitung schreiben, aber wie? Java Basics - Anfänger-Themen 7
D Kleines Problem mit JDBC Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben