Aufgabe: Abstand von einem Punkt zu einem anderen Punkt

fejavalix

Mitglied
Hey,
verstehe an dem Code das Wort "Point other" nicht ganz. Haben gelernt in der Klammer der Methode steht ein Parameter, aber für was steht das wort point in der Klammer? wär cool, wenn mir jemand helfen könnte. Lg
class Point
{
double x1;
double y1;

Point(double x1, double y1){
this.x1 = x1;
this.y1 = y1;
}
double distance(Point other){
double Ergebnis;
double x2;
double y2;
Ergebnis=Math.sqrt((this.x1-other.x1)*(this.x1-other.x1)+(this.y1-other.y1)*(this.y1-other.y1));
return Ergebnis;
}
}
 
Das ist der Datentyp der Parametervariablen "other". Es muss demnach ein Objekt vom Typ Point übergeben werden.
 
Zum Beispiel:
Java:
Point p1 = new Point(1.0,2.0);
Point p2 = new Point(3.0,4.0);

double dist = p1.distance(p2);
 
und die variablen x2 und y2 in der Methode werden doch eigentlich gar nicht gebraucht oder? also des Programm würde genauso funktionieren, wenn x2 und y2 einfach weggelassen werden?
Ja. In der Berechnung wird einmal auf die Koordinaten in "this" zugegriffen und auf die Koordinaten in "other".

Edit: Tatsächlich wird auch "Ergebnis" nicht benötigt (außerdem sollte ergebnis klein geschrieben werden, wie alle Variablennamen). Man könnte auch direkt die Berechnung zurückgeben: return Math.sqrt((this.x1-other.x1)*(this.x1-other.x1)+(this.y1-other.y1)*(this.y1-other.y1));
 
Ja. In der Berechnung wird einmal auf die Koordinaten in "this" zugegriffen und auf die Koordinaten in "other".

Edit: Tatsächlich wird auch "Ergebnis" nicht benötigt (außerdem sollte ergebnis klein geschrieben werden, wie alle Variablennamen). Man könnte auch direkt die Berechnung zurückgeben: return Math.sqrt((this.x1-other.x1)*(this.x1-other.x1)+(this.y1-other.y1)*(this.y1-other.y1));
kannst du mir vllt nochmal erklären, wie du des gemeint hast mit objekt übergeben? also ich versteh, dass other den datentyp point hat, aber ist dann other automatisch schon ein objekt? weil ich dachte objekte werden immer mit new erzeugt..und sind this.x1 und other.x1 dann einfach beides objekte von point?
 
Es gibt ja nur primitive Datentypen wie int und double und Referenztypen in Java. Da es sich bei Point offensichtlich nicht um einen primitiven Datentyp handelt, muss es ein Referenztyp sein. Und ja, Referenztypen werden i.d.R. durch die new Anweisung erzeugt. In der Deklaration des Parameters wird allerdings nur angegeben um welchen Typen es sich handelt. Hier muss nichts erzeugt werden, denn der eigentliche Wert wird ja erst beim Aufruf der Methode übergeben.

Bei dem Beispiel oben wird eine Variable p2 vom Typ Pointer an die Methode p1.distance() übergeben.

this.x1 und other.x1 sind Attribute von this und other (jeweils vom Typ Pointer) vom Typ double.
 

Zurück
Oben