S
systemscoders
Доброго времени суток. Я в программировании на java начинающий. Есть трудности. Буду рад любым подсказкам...ссылкам , словом любой помощи.
Есть созданный класс для работы с вектором созданным на основании массива (обработка исключений еще не прописаны) и вектор на основании односвязного списка:
и
Эти два класса реализуют интерфейс:
Есть отдельный класс , который имеет два статических метода для сложения или вычисления скалярного произведения двух векторов. Его нужно записать таким образом, что бы он мог работать со ссылками типа интерфейс, ... вот тут то я не могу разобраться. Какого типа должны быть входные параметры..... как нужно работать в тестирующем классе через интерфейс.... свои наброски ...со знаками вопроса я привожу ниже:
и кусочек тестирующего класса:
}
Есть созданный класс для работы с вектором созданным на основании массива (обработка исключений еще не прописаны) и вектор на основании односвязного списка:
Код:
package codersys.Vector;
public class Array implements Vectorable {
public Array(double arr[]) {
.......
}
public double getElement(int index) {
......................
}
public void setElement(int index, double data) {
.....................
}
public int getLength() {
........................
}
}
и
Код:
package codersys.Vector;
public class List implements Vectorable {
private static class ListItem{
double item;
ListItem next;
private ListItem(double value, ListItem refnext){
item = value;
next = refnext;
}
}
private int listlength = 0;
private ListItem first = null;
private ListItem last = null;
public List() {};
private double getItem(ListItem current){
..........
}
private boolean isEmpty (ListItem current ) {
..........
}
private ListItem getNext(ListItem current){
.........
}
private void setItem(double value, ListItem current){
.........
}
public void addElement (double item){
........
}
public void addElement(int index, double value){
..........
}
public void delElement() {
...........
}
public int getLength (){
............
}
private ListItem visitor (int index){
.............
}
public double getElement(int index){
............
}
public void setElement(int index, double value){
...........
}
public void delElement(int index) {
...........
}
}
Эти два класса реализуют интерфейс:
Код:
package codersys.Vector;
interface Vectorable {
double getElement(int index);
void setElement(int index, double value);
int getLength();
}
Есть отдельный класс , который имеет два статических метода для сложения или вычисления скалярного произведения двух векторов. Его нужно записать таким образом, что бы он мог работать со ссылками типа интерфейс, ... вот тут то я не могу разобраться. Какого типа должны быть входные параметры..... как нужно работать в тестирующем классе через интерфейс.... свои наброски ...со знаками вопроса я привожу ниже:
Код:
package codersys.Vector;
public class VectorMath{
public static void getSum(???? v1, ???? v2 ){
for (int i = 1; i <= v1.getLength(); i++){
v1.setElement(i, (v1.getElement(i) + v2.getElement(i)));
}
}
public static double getScalar(???? v1, ????? v2 ){
double d = 0;
for (int i = 1; i <= v1.getLength(); i++){
d += v1.getElement(i) * v2.getElement(i);
}
return d;
}
и кусочек тестирующего класса:
Код:
??????????????;
System.out.println("\n\r\n\r");
System.out.println("V1 - Other Vector for sum and scal mul from Array type :");
double[] v1 = {10,20,30,40,50,60,70,80};
???? vv1 = new Array(v1);
System.out.println("\n\r\n\r");
for (int i = 1; i <= vv1.getLength(); i++){
System.out.print( vv1.getElement(i) + " " );
}
System.out.println("\n\r\n\r");
System.out.println("V2 - Other Vector for sum and scal mul from List type :");
double[] v2 = {1,2,3,4,5,6,7,8};
?????? vv2 = new List();
for (int i = 0; i < v2.length; i ++){
vv2.addElement( i+1 ,v2[i] );
}
System.out.println("\n\r\n\r");
for (int i = 1; i <= vv2.getLength(); i++){
System.out.print( vv2.getElement(i) + " " );
}
System.out.println("\n\r\n\r");
System.out.println("Summa V1+V2 => V1 :");
VectorMath.getSum(vv1, vv2);
System.out.println("\n\r\n\r");
for (int i = 1; i <= vv1.getLength(); i++){
System.out.print( vv1.getElement(i) + " " );
}
}