Hi,
wir haben vor kurzem mit Vererbung angefangen (1. Semester Iformatik), und müssen jetzt etwas programmieren wo man auch mit Vererbung arbeiten muss, und ich häng da an einer stelle und komm nich weiter...
Also, fangen wir mal an:
Das ganze soll wenns mal fertig ist, Punkte (in einem Koordinatensystem) representieren.
Der vollständigkeithalber poste ich mal alles, auch weil ich nicht weiß wo ich bei dem Problem dann ansetzen muss...
Ich hab ein Interface Point:
getX und getY dürften selbsterklärend sein, von getDist bekommt man den Abstand zum Ursprung, und near prüft ob der Abstand zwischen zwei Punkten kleiner als der eingegebene double wert ist.
Dann hab ich die abstrakte Basisklasse BasePoint:
Von BasePoint leite ich die Klasse APoint ab, die einen festen Punkt representiert:
Und von APoint leite ich die Klasse MovingPoint ab die einen Punkt representiert der sich mit einer bestimmten Geschwindigkeit in x- und y-Richtung bewegt:
(ich hab noch eine Klasse Clock mit deren Methode getAge man das Alter eines Objektes in Millisekunden bekommt, moveX und moveY geben ab wie weit sich der Punkt pro Millisekunde in die entsprechende richtung bewegen soll)
so, und jetzt kommt mein problem:
Jetzt soll ich noch eine Klasse CenterPoint (die auch von BasePoint abgeleitet ist) schreiben, die den Mittelpunkt zwischen zwei Punkten definiert...
x- und y-Werte der beiden Punkte kann ich ja einfach mit getX/Y bekommen und mir damit die Koordinaten des Mittelpunkts ausrechnen, kein Problem.
Aber wenn sich einer oder beide der Punkte bewegt, dann soll sich der der Mittelpunkt auch bewegen.
So, meine Idee: Ich würde CenterPoint ähnlich aufbauen wie MovingPoint, wenn sich beide Punkte nicht bewegen kann man ja moveX und moveY einfach auf 0 setzen.
Aber wie komme ich an wenn sich einer oder beide Punkte bewegen an die Werte um die sie sich bewegen???? Vor allem weil ich ja nicht weiß bweget sich keiner/einer/beide... Ich weiß grade echt nicht weiter, freu mich über jede Hilfe!
wir haben vor kurzem mit Vererbung angefangen (1. Semester Iformatik), und müssen jetzt etwas programmieren wo man auch mit Vererbung arbeiten muss, und ich häng da an einer stelle und komm nich weiter...
Also, fangen wir mal an:
Das ganze soll wenns mal fertig ist, Punkte (in einem Koordinatensystem) representieren.
Der vollständigkeithalber poste ich mal alles, auch weil ich nicht weiß wo ich bei dem Problem dann ansetzen muss...
Ich hab ein Interface Point:
getX und getY dürften selbsterklärend sein, von getDist bekommt man den Abstand zum Ursprung, und near prüft ob der Abstand zwischen zwei Punkten kleiner als der eingegebene double wert ist.
Java:
package punkte;
public interface Point {
double getX();
double getY();
double getDist();
boolean near(Point that, double eps);
}
Dann hab ich die abstrakte Basisklasse BasePoint:
Java:
package punkte;
public abstract class BasePoint implements Point {
public double getDist(){
double x = this.getX();
double y = this.getY();
double dist = Math.sqrt(x*x+y*y);
return dist;
}
public boolean near(Point that, double eps){
double xDist = this.getX() - that.getX();
double yDist = this.getY() - that.getY();
double dist = Math.sqrt(xDist * xDist + yDist * yDist);
if(dist < eps){
return true;
}else{
return false;
}
}
}
Von BasePoint leite ich die Klasse APoint ab, die einen festen Punkt representiert:
Java:
package punkte;
public class APoint extends BasePoint {
double x;
double y;
public APoint(double x, double y){
this.x = x;
this.y = y;
}
public double getX(){
return x;
}
public double getY(){
return y;
}
}
Und von APoint leite ich die Klasse MovingPoint ab die einen Punkt representiert der sich mit einer bestimmten Geschwindigkeit in x- und y-Richtung bewegt:
(ich hab noch eine Klasse Clock mit deren Methode getAge man das Alter eines Objektes in Millisekunden bekommt, moveX und moveY geben ab wie weit sich der Punkt pro Millisekunde in die entsprechende richtung bewegen soll)
Java:
package punkte;
public class MovingPoint extends APoint {
double moveX;
double moveY;
Clock clock;
public MovingPoint(double x, double y, double moveX, double moveY){
super(x,y);
clock = new Clock();
this.moveX = moveX;
this.moveY = moveY;
}
public double getX(){
double oldX = super.getX();
double age = clock.getAge();
double x = oldX + moveX * age;
return x;
}
public double getY(){
double oldY = super.getY();
double age = clock.getAge();
double y = oldY + moveY * age;
return y;
}
public double getMoveX(){
return moveX;
}
public double getMoveY(){
return moveY;
}
}
so, und jetzt kommt mein problem:
Jetzt soll ich noch eine Klasse CenterPoint (die auch von BasePoint abgeleitet ist) schreiben, die den Mittelpunkt zwischen zwei Punkten definiert...
x- und y-Werte der beiden Punkte kann ich ja einfach mit getX/Y bekommen und mir damit die Koordinaten des Mittelpunkts ausrechnen, kein Problem.
Aber wenn sich einer oder beide der Punkte bewegt, dann soll sich der der Mittelpunkt auch bewegen.
So, meine Idee: Ich würde CenterPoint ähnlich aufbauen wie MovingPoint, wenn sich beide Punkte nicht bewegen kann man ja moveX und moveY einfach auf 0 setzen.
Aber wie komme ich an wenn sich einer oder beide Punkte bewegen an die Werte um die sie sich bewegen???? Vor allem weil ich ja nicht weiß bweget sich keiner/einer/beide... Ich weiß grade echt nicht weiter, freu mich über jede Hilfe!
Zuletzt bearbeitet: