Hallo ich hab hier mal einen Teil einer Aufgabe, mein Problem ist, dass ich nicht mal die Angabe verstehe.
Also die Vector-Klasse ist genau so vorgegeben. Heißt das, dass ich daran nichts ändern, hinzufügen darf?
Dann erstelle ich eine Klasse Vector2D mit extends Vector, so dass sie eine Unterklasse ist.
In dieser Klasse brauch ich dann zwei Instanzvariablen und einen Konstruktor der die "befüllt", zB x und y.
Okay hier mein Problem:
v = v.add (new Vector2D (1, 2));
Hier wird ein Objekt Vector2D erstellt mit x=1 und y=2
Wie überlade ich jetzt das add? Da das v ja ein Vector ist und kein Vector2D, muss ich die add in Vector überladen oder kann ich dass auch irgendwie in der Unterklasse. Vielleicht hat jemand ein Beispiel.
Und das Ergebnis wird dann im Objekt Vector v gespeichert und dann kommt nochmal ein:
v = v.add (new Vector2D (2, 3));
Das heißt v wird erweitert? Also am besten ein Array? Darf ich die Vector Klasse anrühren, wenn die ja schon so vorgegeben ist?
Und warum Vector2D ? Warum 2Dimensional?
LG
Es ist eine Klasse VectorSet zu erstellen, die mehrere Vector-Objekte enthält. Diese Objekte können vom Typ Vector2D oder vom Typ DNA sein, wobei davon ausgegangen werden kann, dass in ein VectorSet-Objekt immer nur Objekte eines Typs eingefügt werden. Die Klasse Vector als Oberklasse ist vorgegeben:
public class Vector
{
public Vector () {}
public Vector add (Vector v) {return v;}
public Vector div (int n) {return new Vector();}
public double distance (Vector v) {return 0;}
}
Teil 1
Nun sind davon die zwei Klassen Vector2D und DNA abzuleiten, die Methoden zu überschreiben, geeignete Konstruktoren zu erstellen und toString zu überschreiben, sodass folgende Anweisungsfolge
Vector v = new Vector ();
v = v.add (new Vector2D (1, 2));
v = v.add (new Vector2D (2, 3));
System.out.println (v.div (2));
v = new DNA ("CCCCGGGGAAAATTTT");
v = v.add (new DNA ("CGATCGATCGATCGAT"));
System.out.println (v.div (2));
folgende Ausgabe erzeugt:
(1.5,2.5)
CCCCCGGGCGAACGAT
Bei Vector2D soll add die zwei Komponenten eines 2-dimensionalen Vektors einfach addieren, also (1,2)+(2,3)=(1+2,2+3)=(3,5) und div den Vektor dividieren, also (3,5)/2=(3/2,5/2)=(1.5,2.5)
public class Vector
{
public Vector () {}
public Vector add (Vector v) {return v;}
public Vector div (int n) {return new Vector();}
public double distance (Vector v) {return 0;}
}
Teil 1
Nun sind davon die zwei Klassen Vector2D und DNA abzuleiten, die Methoden zu überschreiben, geeignete Konstruktoren zu erstellen und toString zu überschreiben, sodass folgende Anweisungsfolge
Vector v = new Vector ();
v = v.add (new Vector2D (1, 2));
v = v.add (new Vector2D (2, 3));
System.out.println (v.div (2));
v = new DNA ("CCCCGGGGAAAATTTT");
v = v.add (new DNA ("CGATCGATCGATCGAT"));
System.out.println (v.div (2));
folgende Ausgabe erzeugt:
(1.5,2.5)
CCCCCGGGCGAACGAT
Bei Vector2D soll add die zwei Komponenten eines 2-dimensionalen Vektors einfach addieren, also (1,2)+(2,3)=(1+2,2+3)=(3,5) und div den Vektor dividieren, also (3,5)/2=(3/2,5/2)=(1.5,2.5)
Dann erstelle ich eine Klasse Vector2D mit extends Vector, so dass sie eine Unterklasse ist.
In dieser Klasse brauch ich dann zwei Instanzvariablen und einen Konstruktor der die "befüllt", zB x und y.
Okay hier mein Problem:
v = v.add (new Vector2D (1, 2));
Hier wird ein Objekt Vector2D erstellt mit x=1 und y=2
Wie überlade ich jetzt das add? Da das v ja ein Vector ist und kein Vector2D, muss ich die add in Vector überladen oder kann ich dass auch irgendwie in der Unterklasse. Vielleicht hat jemand ein Beispiel.
Und das Ergebnis wird dann im Objekt Vector v gespeichert und dann kommt nochmal ein:
v = v.add (new Vector2D (2, 3));
Das heißt v wird erweitert? Also am besten ein Array? Darf ich die Vector Klasse anrühren, wenn die ja schon so vorgegeben ist?
Und warum Vector2D ? Warum 2Dimensional?
LG