Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб3_Разработка_Классов3.doc
Скачиваний:
4
Добавлен:
18.11.2018
Размер:
256.51 Кб
Скачать

3.4. Определение зависимостей между классами.

При определении зависимости от других классов самыми важными являются отношения наследования и вложенности свойств и использования. Обе эти зависимости подразумевают анализ того, как класс может отвечать за некоторые свойства системы. Отвечать за свойство - вовсе не означает, что класс должен содержать все данные сам или его функции-члены должны непосредственно выполнять все необходимые операции. Наоборот, то, что каждый класс имеет только один ответственный участок, убеждает в том, что основная работа, выполняемая классом - это направлять запросы куда-нибудь в другое место для обработки другому классу, ответственному за эту подзадачу. Чрезмерное использование этой методики может привести к неэффективному и с трудом понимаемому проекту из-за увеличения числа объектов до момента, когда уже не осуществляется никакая работа, кроме каскада последовательных запросов на обслуживание.

4. Практические рекомендации по проектированию класса фигуры

Прежде чем начать конструировать класс многоугольника нужно попытаться представить себе - что представляет собой понятие многоугольника и попытаться выделить в нем наиболее важные элементы. В нашем случае понятие (абстрактное представление) многоугольника связано с некоторым графическим отображением такого объекта, который представляет собой множество вершин (точек), соединенных между собой отрезками прямых линий, называемых ребрами. Поэтому класс многоугольника должен содержать элемент, в котором будут храниться все его вершины. Кроме того, многоугольники могут быть раскрашенными в разные цвета и обводится контуром, цвет которого отличается от цвет закраски самой фигуры. Причем контуры фигуры (ее ребра) могут изображаться в виде сплошной, пунктирной, штрих-пунктирной и других типов линий. А закраска поля фигуры тоже может осуществляться с использованием разных стилей закраски. Некоторые (если не все) из фигур могут содержать текстовый комментарий (например: "Фигура №1", Фигура №2" и т.д.). Поэтому класс многоугольника, кроме своих вершин, должен содержать еще и переменные, определяющие цвет контура и цвет закраски, стиль изображения контурных линий и стиль закраски области внутри фигуры, текст комментария и т.д. В результате создается перечень полей данных, которыми может располагать класс.

А каким же интерфейсом должен обладать класс многоугольника? Прежде всего, это, наверное, методы, позволяющие добавлять и удалять его вершины, вырисовывать экземпляры класса, перемещать их, изменять положение выбранной вершины, изменять цвет контура или закраски и другие. Кроме того, следует учесть и возможные области использования этого класса. Например, использование класса многоугольника в приложениях для графического редактирования изображений, представляющих собой специфическую совокупность, связанных между собой отдельных многоугольников (деревенский дом с окнами и дверями, оградой и калиткой и т.д.). В таком случае, часто требуется выбрать одну из фигур, например, окно или дверь, и переместить ее в другое место. Но для этого нужно, чтобы фигура могла реагировать на попадание курсором в ее область. Поэтому, желательно включить в состав методов класса и такую функцию. Можно, конечно, придумать множество таких функций. Где же предел и как не перейти границы того, что вовсе не свойственно данному классу? В этом случае следует руководствовать тем, что методам доступно выполнение только таких действий, которым достаточно использовании данных, которыми располагает данный класс. В этом смысле класс должен быть самодостаточным и не требовать никакой дополнительной информации из своего окружения.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]