Объектно-ориентированное проектирование. Павлов А.Ю. - 20 стр.

UptoLike

Составители: 

Термин «взаимозависимость» заимствован из структурного проектирования, но в
более вольном толковании он используется и в OOП. Стивене, Майерс и Константин
определяют его так: «степень глубины связей между отдельными модулями.
Фрагменты системы, сильно зависимые от других, гораздо сложнее воспринимать,
заменять и модифицировать. Для улучшения качества системы следует по возможности
избегать сильной
зависимости между отдельными модулями». Пример правильного
подхода к проблеме взаимозависимости приведен Пэйдж-Джонсом в виде модульной
стереосистемы, где усилитель мощности размещен в конструкции колонки
громкоговорителей.
Понятие связности также заимствовано из структурного проектирования.
Связностьэто степень взаимодействия между элементами отдельного модуля (а для
OOП еще и отдельного класса или объекта). Наименее
желательной является
связность по случайному принципу, когда в одном классе или модуле собираются
совершенно независимые абстракции. Для примера можно вообразить класс,
соединяющий абстракции собак и космических аппаратов. Наиболее желательной
является функциональная связность, при которой все элементы класса или модуля тесно
взаимодействуют в достижении определенной цели. Так, например, класс «собака»
будет функционально
связанным, если он описывает поведение собаки, собаки в
целом и ничего, кроме собаки.
К идеям взаимозависимости и связности тесно примыкают понятия достаточности,
полноты и простоты. Под достаточностью подразумевается наличие в классе или
модуле программы всего необходимого для реализации логичного и эффективного
поведения. Иначе говоря, компоненты должны быть полностью пригодны к
использованию. Для примера рассмотрим класс «множество». Операция удаления
элемента из множества в этом классе, очевидно, необходима, но будет ошибкой не
включить в этот класс и операцию добавления элемента. Нарушение требования
достаточности обнаруживается очень быстро, как только создается класс-
пользователь такой абстракции. Под полнотой подразумевается наличие в
интерфейсной части класса всех необходимых
характеристик абстракции. Идея
достаточности предъявляет к интерфейсу минимальные требования, а идея полноты
охватывает все существенные аспекты абстракции. Полнотой характеризуется такой
класс или модуль, интерфейс которого гарантирует все необходимое для взаимодействия
с пользователями. Полнота является субъективным фактором, и разработчики часто
ей злоупотребляют, вынося на верхний уровень такие операции, которые можно
реализовать
на более низком уровне. Из этого вытекает требование простоты
(минимальной необходимости). Простыми являются только такие операции, которые
обеспечивают реализацию эффективного действия абстракции. Так, в примере с
«множеством» операция добавления элемента является примитивной, а операция
добавления четырех элементов не будет примитивной, так как эффективно реализуется
через операцию добавление одного элемента. Конечно
, эффективность тоже
субъективный фактор. Операции прямого доступа к структуре данных являются
примитивными по определению. Операции, которые можно свести к нескольким
примитивным, но при этом затрачиваются значительные вычислительные ресурсы,
также являются потенциально кандидатами на включение в разряд примитивных.
Для просмотрщика графических файлов были выделены следующие объекты:
Менеджер, Диалог выбора файла, Транслятор,
Конфигуратор, Область отображения,
Файл и Изображение.
Определять существенные свойства для объектов будем по следующему