Java Создание вектора с несколькими концами - PullRequest
1 голос
/ 12 февраля 2020

Я хочу создать два типа векторов (в виде классов):

  • Первый тип - это обычный вектор с двумя компонентами (начальной и конечной точкой).
  • Второй тип также является вектором, но вместо одного он имеет две конечные точки , между которыми вы можете переключаться.

Моя идея заключалась в создании абстрактного суперкласса (например, AbstractVector ), в котором я определяю общие функции векторов:

abstract class AbstractVector {
    //Methods, e.g. length(), getter...
}

Затем мои два подкласса Vector и (например) TriVector расширяют вышеуказанный класс. Проблема, с которой я сталкиваюсь, заключается в обработке двух конечных точек в классе TriVector. Я абсолютно не знаю, как это сделать или как правильно настроить абстрактный класс, чтобы у меня был нормальный вектор и вектор с двумя окончаниями, между которыми я могу переключаться (например, у класса TriVector есть метод switch() который переключается между двумя конечными точками).

Я надеюсь, что кто-нибудь может мне помочь или предложить лучшее решение.

1 Ответ

1 голос
/ 12 февраля 2020

Очень грубый набросок решения, детализирующий только методы getStart() и getEnd():

abstract class AbstractVector {
    protected Point startPoint;
    public Point getStart() {
        return startPoint;
    }
    public abstract Point getEnd();
    //Methods, e.g. length(), getter...
}

class Vector extends AbstractVector {
    protected Point endPoint;
    public Point getEnd() {
        return endPoint;
    }
}

class TriVector extends AbstractVector {
    protected Point[] endPoints = new Point[2];
    protected int activeEndPoint = 0;

    public Point getEnd() {
        return endPoints[activeEndPoint];
    }

    public void switchEnds() {
        activeEndPoint = 1 - activeEndPoint;
    }
}
...