Translate

четверг, 5 июля 2012 г.

Видеоурок по Java. Синтаксис. ООП. Пишем класс векторов в n-мерном пространстве

  Видеолекция по синтаксису Java.
 Поэтапное построение класса, представляющего вектор в n-мерном пространстве.
 Реализуемые методы:
   -double getLength() - возвращает длину вектора
   -String toString() - выводит информацию об экземпляре класса
   -void mult(double a) - умножает вектор на a
   -void divide(double a) - делит вектор на a
   -Vector summ(Vector b) - прибавляет к текущему вектору вектор b и возвращает результирующий
   -Vector minus(Vector b) - аналогично последнему, только выполняет вычитание



Часть 1

Часть 2
Часть 3
                                       
Часть 4
Часть 5
 Пояснения к коду находятся в видеолекции  Сначала нужно написать класс, реализующий точку в n-мерном пространстве:
public class Point {
   public static final int MAX_DIMENTIONS=100;
   private int dimentions;
   private double[] coordinates=new double[MAX_DIMENTIONS];
   
   public Point(int dims, double[] coordinates) {
        dimentions=dims;
        for (int i=0;i<dims;i++) {
           this.coordinates[i]=coordinates[i];
        }
   }
   
   public double getCoordinate(int index) {
       return coordinates[index];
   }
   
   public void setCoordinate(int index, double value) {
       coordinates[index]=value;
   }
   
   public String toString() {
     String res="(";
     
     for (int i=0;i<dimentions;i++) {
         res+=" "+getCoordinate(i)+" ";
    
         if(i!=dimentions-1) {
             res+=";";
         }
    
     }
     
     res+=")";
     
     return res;
   }
}
Класс Vector:
public class Vector {
   private Point begin;
   private Point end;
   private int dimentions;
   
   public Vector(int dims, double[] coordinatesOfBegin, double[] coordinatesOfEnd) {
       begin=new Point(dims, coordinatesOfBegin);
       end=new Point(dims, coordinatesOfEnd);
       dimentions=dims;
   }
   
   public double getLength() {
       double summ=0;
       
       for (int i=0;i<dimentions;i++) {
       summ+=(end.getCoordinate(i)-begin.getCoordinate(i))*(end.getCoordinate(i)-begin.getCoordinate(i));
       }
       
       summ=Math.sqrt(summ);
       return summ;
   }
   
   public void mult(double a) {
       for (int i=0;i<dimentions;i++) {
         double newValue=begin.getCoordinate(i)+a*(end.getCoordinate(i)-begin.getCoordinate(i));
         end.setCoordinate(i, newValue);
       }
   }
   
   public void divide(double a) {
       mult(1/a);
   }
   
   
   public String toString() {
       String res=begin.toString()+"    "+end.toString();
       return res;
   }
   
   
   public Vector summ(Vector b) {
       double[] beginCoordinates=new double[Point.MAX_DIMENTIONS];
       double[] endCoordinates=new double[Point.MAX_DIMENTIONS];
       
       
       Vector res=new Vector(dimentions, beginCoordinates, endCoordinates);
       
       for (int i=0;i<dimentions;i++) {
          res.begin.setCoordinate(i, this.begin.getCoordinate(i));
          res.end.setCoordinate(i, this.end.getCoordinate(i)+b.end.getCoordinate(i)-b.begin.getCoordinate(i));
       }
       
       return res;
   }
   
   public Vector minus(Vector b) {
       b.mult(-1);
       return this.summ(b);
   }
   
   
}

Комментариев нет:

Отправить комментарий

Related Posts Plugin for WordPress, Blogger...