# Geometrie



## Marcelo2 (13. Nov 2010)

Meine Aufgabe ist es eine Klasse Punkt zu erstellen. Dort ist ein Punkt im zweidimensionalen Raum. Er hat eine x und eine y Koordinate, als gleitkommazahl doppelter genauigkeit. die klasse soll zwei konstruktoren haben. der eine erwartet die beiden koordinaten, der andere übernimmt die koordinaten von einem als parameter übergebenen punkt als exemplar der selben klasse.

soweit so gut. nun frag ich mich wie der zweite konstuktor sein muss? er darf ja nicht wie der erste zahlenwerte als paramter bekommen. aber ich brauche doch zahlenwerte. und wie soll ich auf den ersten konstruktor zugreifen?.

bisher sieht mein ansatz so aus:  


```
class Point {
	public double x;
	public double y;
	public double z;
	public double s;
	
	Point (double a, double b){
		x = a;
		y = b;
	}
	double Rückgabe() {
		return x;
	}
	double Rückgabe2(){
	return y;
	}

	
	Point (){ 
		z = x;
		s = y;
	}
	double Rückgabe3(){
		return x;
	}
	double Rückgabe4(){
			return y;
		}}
```


----------



## Marcelo2 (13. Nov 2010)

Dazu kommt noch, dass ich nicht weis ob ich den Punkt mit 2 Variablen darstellen soll, oder als Vektor. Mit einer Ausgabeklasse habe ich bisher das erreicht:


```
public class Geometry {

public static void main(String[] args){
	double a = 6.0;
	double b = 7.0;
	
	Point p1 = new Point(a, b);
	Point p2 = new Point();
	System.out.println("p1" + "(" + p1.Rückgabe()+", " + p1.Rückgabe2() + ")");
	System.out.println("p2" + "(" + p2.Rückgabe3()+", " + p2.Rückgabe4() + ")");
}}
class Point {
	public double x;
	public double y;
	public double z;
	public double s;
	
	Point (double a, double b){
		x = a;
		y = b;
	}
	double Rückgabe() {
		return x;
	}
	double Rückgabe2(){
	return y;
	}

	
	Point (){ 
		z = x;
		s = y;
	}
	double Rückgabe3(){
		return x;
	}
	double Rückgabe4(){
			return y;
		}}
```


----------



## Final_Striker (13. Nov 2010)

Marcelo2 hat gesagt.:


> aber ich brauche doch zahlenwerte.



Der Konstruktor bekommt doch einen Punkt übergeben, daraus kannst du dann die x- und y-Werte auslesen.

Ein Punkt braucht nur 2 Koordinaten, wieso hat deiner 4?
Und was soll dieser Quatsch mit RückgabeX, woher soll jemand denn wissen was Rückgabe2 zurück gibt???
Wieso schreibst du nicht gleich einfach getX, getY.


----------



## Marcelo2 (13. Nov 2010)

und wie übergebe ich den puntk an den zweiten konstruktor


----------



## Final_Striker (13. Nov 2010)

```
Point (Point p){ 
		x = ...
		y = ...
	}
```


----------



## Marcelo2 (13. Nov 2010)

sry wenn das alles nicht so formal korrekt ist. habe erst mein studium begonnen und kenne noch nicht alles in JAVA


----------



## Marcelo2 (13. Nov 2010)

Ja mir 
	
	
	
	





```
Point (Point p){ 
        x = ...
        y = ...
    }
```
 dacht ich mir schon. allerdings weis ich dann nicht wie ich oben in der klasse geometry den konstruktor aufrufe. was muss ich hier dann schrieben?

```
Point p2 = new Point();
```

und unten muss ich den Punkt so defiieren?

```
Point p2 = new Point();
```


----------



## Final_Striker (13. Nov 2010)

Ist ja nicht schlimm, jeder hat mal kleine angefangen. ;-)

Du solltest aber in Zukunft vermeiden so was zu schreiben. Wenn du X zurück gibst, dann schreibe doch auch einfach RückgabeX hin. Denn wenn du so was wie Rückgabe2 schreibst, wirst du in spätesten 2 Wochen auch nicht mehr wissen, was diese Methode zurück gibt.


----------



## Marcelo2 (13. Nov 2010)

SRY wrong code

```
public Point p;
```
 so meinte ich das mit dem definieren


----------



## Final_Striker (13. Nov 2010)

so



```
Point p1 = new Point(3.5 , 5);
   Point p2 = new Point(p1);
```


----------



## Marcelo2 (13. Nov 2010)

So nun hats geklappt. vielen dank. könntest bitte nochmal sagen ob da irgendwas falsch ist?



```
public class Geometry {

public static void main(String[] args){
	double a = 6.0;
	double b = 7.0;
	
	Point p1 = new Point(a, b);
	Point p2 = new Point(p1);
	System.out.println("p1" + "(" + p1.RückgabeX()+", " + p1.RückgabeY() + ")");
	System.out.println("p2" + "(" + p2.Rückgabe3()+", " + p2.Rückgabe4() + ")");
}}
class Point {
	public double x;
	public double y;
	public Point p;
	
	Point (double a, double b){
		x = a;
		y = b;
	}
	double RückgabeX() {
		return x;
	}
	double RückgabeY(){
	return y;
	}

	
	Point (Point p){ 
		x = p.x;
		y = p.y;
	}
	double Rückgabe3(){
		return x;
	}
	double Rückgabe4(){
			return y;
		}}
```


----------



## Final_Striker (13. Nov 2010)

Geht doch. 

Diese Zeilen kannst du dir aber sparen.

```
public Point p;

	double Rückgabe3(){
		return x;
	}
	double Rückgabe4(){
			return y;
		}
```

Point p verwendest du nicht und für die Rückgabe hast du doch schon RückgabeX und RückgabeY


----------



## Marcelo2 (13. Nov 2010)

Nun gehts weiter^^ Ich muss den 0 Punkt (0,0) als CENTER vom Typ Point,
darstellen und der automatisch initialisiert wird.
 Brauch ich hierfür einen neuen Konstruktor oder kann ich das in generell in der Klasse Point festlegen?


----------



## Final_Striker (13. Nov 2010)

Du könntest z.B einen parameterlosen Konstruktor schreiben und in ihm die Werte x und y mit 0 belegen.


----------



## Marcelo2 (13. Nov 2010)

Das Problem ist, dann tritt das in Konflikt mit dem Rest, da x und y ja shcon belegt sind.


----------



## Marcelo2 (13. Nov 2010)

Also ich muss doch laut der Aufgabe 
	
	
	
	





```
Point CENTER;
```
 erstellen oder? ist ja ein Objekt vom typ point oder versteh ich das falsch?


----------

