Правильная иерархия для модели Shape - PullRequest
0 голосов
/ 29 июня 2011

Если бы мне пришлось создать модель ООП для геометрической иерархии формы, которая была бы наилучшей, учитывая также класс Point?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 29 июня 2011

Если вы хотите полностью инкапсулировать идею формы, она не должна быть иерархией, поскольку во вселенной существует бесконечное количество форм.Вместо этого это должен быть только один класс Shape.Он должен состоять из серии линий и кривых.Затем у вас могут быть методы, чтобы проверить, соответствует ли оно определенным определениям формы, например, IsCircle(), IsSquare() и т.д ...

У вас также могут быть методы и / или конструкторы, которые устанавливают его для определенного типаформы.

0 голосов
/ 29 июня 2011

Все фигуры могут реализовать интерфейс IShape.Для IShape потребуется метод Area() и метод IsIntersectingWith(IShape otherShape).Однако это упрощенное представление поднимает некоторые другие вопросы о том, как вы будете реализовывать динамическую диспетчеризацию (для пересечения треугольника / треугольника требуется алгоритм, отличный от треугольника / сегмента).

Это, конечно, предполагает, что вам действительно нужны эти функции.Предполагая графически ориентированную библиотеку форм, вы можете определить такие преобразования, как Rotate, Translate, Scale.Вы также можете принудительно использовать Union, Intersect или любую другую операцию множества (но эти две могут выражать все, что вам может понадобиться).

Вы также можете основывать вещи на вычислительной геометрии и предоставлять функции метода, которыепреобразовать любой IShape в Polygon.

Моя точка зрения заключается в том, что функциональность, которая может быть реализована через IShape, должна соответствовать ожидаемому использованию.Если у вас нет ожидаемого использования (так как оно начинается с обучения), вы должны использовать его как часть самого упражнения или как поле для обнаружения (как насчет этого использования или того использования, можем ли мы выразить всю эту функциональностьв одном интерфейсе или мы должны разделить его на несколько)

0 голосов
/ 29 июня 2011

Как насчет использования java.awt.Shape?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...