Inhalt einer Klasse vervollständigen

Anfänger93

Mitglied
Hi Leute, bin gerade voll am Verzweifeln;(.
Ich weiß ehrlich gesagt nicht wie ich diese Aufgabe lösen soll,deswegen bräuchte ich schnellstens eure Hilfe.


Ein Punkt in einer Ebene wird durch zwei Koordinaten x und y festgelegt. Die Objekte
der folgenden Klasse Punkt sollen Punkte einer Ebene repräsentieren. Diese Klasse besitzt
den in der Vorlesung vorgestellten typischen Aufbau einer Klasse. Vervollständigen Sie
diese Klasse:
Java:
public class Punkt {
// Attribute
private double x;
private double y;
private final double EPS = 0.0000001;
// Konstruktor
public Punkt(double x, double y) { ... }
// get-/set-Methoden
public double getX() { ... }
public double getY() { ... }
public void setX(double x) { ... }
public void setY(double y) { ... }
// Überlagerung von Methoden der Klasse Object
public boolean equals(Object x) { ... }
public Object clone() { ... }
public String toString() { ... }
// Anwendungen
public double abstand() { ... }
public double abstand(Punkt p) { ... }
}
Zwei double-Werte sollen als gleich angesehen werden, falls der Betrag ihrer Differenz
kleiner als EPS ist. Die Methode toString() soll eine Zeichenfolge der Form (x,y) liefern,
wobei x und y die Koordinaten des aktuellen Objekts sind. Die Methode abstand() soll
den Abstand des aktuellen Objekts vom Ursprung (0.0,0.0) berechnen. Die Methode
abstand(Punkt p) soll den Abstand des aktuellen Objekts vom Parameter p berechnen.

Zur Lösung dieser Aufgabe dürfen Sie Methoden der Klasse Math verwenden, aber keine
Klassen importieren. Sie können natürlich den Klassen weitere Attribute und Methoden
hinzufügen.
 
Zuletzt bearbeitet von einem Moderator:
N

nillehammer

Gast
Bemüh mal die Forensuche. Ein Klassenkamerad/Kommolitone von Dir hat zu exakt der selben Aufgabe heute schon eien Thread aufgemacht.
 
M

Marcinek

Gast
Hallo,

fangen wir doch langsam an:

public double getX() { ... }

Was könnte hier wohl als Rückgabe passieren?

Gruß,

Martin
 

Fab1

Top Contributor
Und lass mich raten, du musst morgen deine Aufgabe abgeben, die schon seit Wochen bei dir rumliegt. Und du denkst, das jetzt hier jemand die Aufgabe für dich ohne irgendeine Gegenleistung macht?

Es ist nicht Sinn und Zweck deine Aufgaben zu lösen. Bitte poste erstmal deinen Ansatz und ein konkretes Problem deiner Aufgabe, was du daran nicht verstehst oder was Fragen aufwirft.

Wenn du trotzdem aber nur eine Lösung möchtest, dann ab damit in die Jobbörse.
 

Anfänger93

Mitglied
Ich muss die Aufgabe bis Sonntag 24 Uhr abgegeben haben. Ich habe schon zwei Programme vorher geschrieben und die auch einigermaßen recht gut hinbekommen, aber diese Aufgabe überfordert mich total, weil ich nicht weiss wie ich was anzuwenden, um die Augabe zu erfüllen.

public double getX() { ... } liefert doch den Rückgabewert double x ?!

ist der Ansatz bisher richtig???

[JAVA=42]public class Punkt {
private double x;
private double y;
public Punkt (double xKoord, double yKoord) {
x = xKoord;
y = yKoord;
}
public double getX() {
return x;
}
public double getY() {
return y;
}[/code]



Gruß Anfänger93
 
Zuletzt bearbeitet:
T

Tomate_Salat

Gast
http://www.java-forum.org/forum-faq-beitraege/7407-man-fragen-richtig-stellt.html

Besonders unter "Wenn du Fragst...". Punkt 1) und 7) lesen ;-)

Willst du einfach nur die Lösung? Dann Poste dein Anliegen nochmal hier:
Jobbörse - java-forum.org
oder bitte einen Mod, das hier zu verschieben.

Oder du bleibst beim klassischen: Du versuchst die Aufgabe selber zu lösen und postest konkrete Fragen. Je allgemeiner deine Frage ist, desdo allgemeiner wird auch die Hilfestellung hier ausfallen. Aber immer dran denken: bei der letzten Variante sollte Eigeninitiative erkennbar sein ;-)

[EDIT]
public double getX() { ... } liefert doch den Rückgabewert double x ?!

in dem geposteten Code nicht, aber ja sollte wohl so sein ;-)
[/EDIT]
 

Anfänger93

Mitglied
Ich möchte diese Aufgabe ganz gerne mit eurer Hilfe lösen. Also, jetzt zu meinen Fragen:

Ich weiß nicht wie ich an diese Aufgabe herangehen soll. Soll ich mit dieser Teilaufgabe beginnen:

Zwei double-Werte sollen als gleich angesehen werden, falls der Betrag ihrer Differenz
kleiner als EPS ist.


Gruß Anfänger93
 
M

Marcinek

Gast
Wenn du einen Punkt hast (1,2) und (1,2.00000001)

Du möchtest nun herausfinden ob die gleich sind, dann machst du |1-1| und |2-2.00000001|.

Raus kommt 0, 0.00000001

Dieser Punkt ist gleich den, 0 < eps und 0.00000001auch.

Gruß,

MArtin
 

Landei

Top Contributor
Und den Betrag eines Wertes bekommst du mit [c]Math.abs(...)[/c].

[OT]
Nur so nebenbei bemerkt: Die Verwendung einer Epsilon-Umgebung bei Vergleichen ist zwar korrekt, verletzt allerdings den Kontrakt von
Code:
equals()
, der auch Transitivität fordert: Mit Epsilon-Umgebung kann es dazu kommen, dass
Code:
p1.equals(p2)
und
Code:
p1.equals(p3)
ist, aber nicht
Code:
p2.equals(p3)
.
[/OT]
 
P

pappawinni

Gast
Um herauszufinden ob zwei Punkte gleich sind, würde ich deren Abstand bewerten.
AbstandP1P2 = Wurzel ( (x1-x2)^2 + (y1-y2)^2)
 
P

pappawinni

Gast
So in etwa könnte die Lösung wohl aussehen.

Java:
class Punkt {
   private static final double EPS = 0.0000001;
   private double x;
   private double y;

   // Kontruktor für Punkt am Koordinatenursprung (0,0).
   public Punkt() {
       this.x = 0;
       this.y = 0;
   }

   // Konstruktor mit gegebenen Koordinaten.
   public Punkt(final double x, final double y) {
       this.x = x;
       this.y = y;
   }
   
   // Copy-Konstruktor
   public Punkt(Punkt p)
   {
       this.x = p.getX();
       this.y = p.getY();
   }

   // Liefert die horizontale Koordinate dieses Punktes.
   public double getX() {
       return x;
   }

   // Liefert die vertikale Koordinate dieses Punktes.
   public double getY() {
       return y;
   }

   // Setzt die horizontale Koordinate dieses Punktes.
   public void setX(double x) { 
	   this.x = x; 
   }
   
   // Setzt die vertikale Koordinate dieses Punktes.
   public void setY(double y) { 
	   this.y = y; 
   }

   private boolean isEqual(double a, double b)
   {
       return Math.abs(a-b)<EPS;
   }

   public boolean equals(Punkt p)
   {   
		  return isEqual(x, p.getX()) && isEqual(y, p.getY());
   }

   @Override
   public boolean equals(Object x)
   {   
	   if(x instanceof Punkt){
		  return equals((Punkt) x);
	   }
       return false;
   }
   
   @Override
   public Object clone() { 
	   return new Punkt(x,y); 
   }
   
   // euklidischer Abstand von (0,0)
   public double abstand() { 
	   return Math.sqrt(x*x+y*y);
   }

   // euklidischer Abstand von einem zweiten Punkt
   public double abstand(Punkt p) {
	   double dx = x - p.getX();
	   double dy = y - p.getY();
	   return Math.sqrt(dx*dx+dy*dy);	   
   }

   @Override
   public String toString()
   {
       return ("("+x+","+y+")");
   }

}
 
Zuletzt bearbeitet von einem Moderator:
M

Marcinek

Gast
Obwohl man denkt, dass man den TO damit hilft, ist dem nicht so.

Gleich kommt Aufgabe 2, in der man die Eigenschaften einer geraden implmenetieren soll ;D

Dann haben wir wieder ein Posting und einen ratlosen TO. :bahnhof: Professor Struckmann kann sich schon auf kreative Erläuterungen des Testats freuen ^^

---

Noch cooler fände ich, wenn sich der TO in deiner Firma bewerben würde. :toll:

scnr
 
Zuletzt bearbeitet von einem Moderator:

Anfänger93

Mitglied
Danke für die ganze Hilfe,
jetzt muss ich das nur noch verstehen. Ich kam bzw. ich komme mit den Methoden nicht zurecht, also, ich wusste nicht wie ich die Anwenden sollte,daher hatte ich keinen schimmer was ich machen sollte und wie ich das auf den Sachverhalt anzuwenden habe. Ich bin halt noch am Anfang wenn es ums Programmieren geht, habe erst vor 2 Monaten angefangen zu programmieren, daher noch ein paar Fragen:

was hat das @0verride zu bedeuten? (das ist mir leider nicht bekannt)

Gruß Anfänger93
 
Zuletzt bearbeitet:

Neue Themen


Oben