1. Создать неизменяемы класс Vector3D в 3-х меном пространстве со следующими методами:
// Получение координат
double getX();
double getY();
double getZ();
// Операции
double scalar(Vector3D v); // скалярное произведение векторов
double len(); // длина вектора
Vector3D multiply(double factor); // умножение на число
Vector3D add(Vector3D v); // сложение векторов
Vector3D sub(Vector3D v); // вычитание векторов
2. Класс вектора покрыть модульными тестами, сделанными на основе библиотеки JUnit.
3. Создать класс Segment (отрезок в 3-х мерном пространстве) со следующими методами:
Vector3D getStart(); //координаты начала отрезка
Vector3D getEnd(); //координаты конца отрезка
double len(); //длина отрезка
double distanceTo(Vector3D point); //рассстояние от точки до отрезка
В реализации методов класса Segment запрещается использование методов Vector3D.getX(), Vector3D.getY(), Vector3D.getZ().
4. Ввести интерфейс Vector абстрактного вектора со следующими методами
int dimension(); // размерность
double getComponent(int i); // возвращает компоненту вектора
double scalar(Vector v);
double len();
Vector multiply(double factor);
Vector add(Vector v);
Vector sub(Vector v);
Указать, что класс Vector3D реализует этот интерфейс. Перевести класс Segment на использование Vector вместо Vector3D.
Чтобы проверить, что Segment успешно обобщился, нужно создать реализацию вектора в 2-мерном пространстве Vector2D, и добавить соответствующих модульных тестов на класс Segment.
Задача выполняется в среде разработки Eclipse
В архиве код, который необходимо доделать.