tehnologia (1018792), страница 32
Текст из файла (страница 32)
рис. 6.9) и вариантов использования (см. рис. 6.4)позволяют выделить следующие группы классов или пакеты:• Пользовательский интерфейс - классы, реализующие объекты интерфейса с пользователем;• Библиотека интерфейсных компонентов - классы, реализующие интерфейсные компоненты: окна,кнопки, метки и т. п.;• Объекты управления - классы, реализующие сценарии вариантов использования;• Объекты задачи - классы,реализующие объекты предметнойобласти системы;• Интерфейс базы данных классы, реализующие интерфейс сбазой данных;190• База данных;• Базовые структуры данных - классы, реализующие внутренние структуры данных, такие, как деревья, n-связные списки и т.
п.;• Обработка ошибок - классы исключений, реализующие обработку нештатных ситуаций.Последние два пакета объявим глобальными, так как их элементы могут использовать классывсех пакетов.Определим зависимости классов и построим диаграмму пакетов (рис. 7.4).7.2. Определение отношений между объектамиПосле определения основных пакетов разрабатываемого программного обеспеченияпереходят к детальному проектированию классов, входящих в каждый пакет. Классыкандидаты, которые предположительно должны войти и конкретный пакет, показывают надиаграмме классов этапа проектирования и уточняют отношения между объектами указанныхклассов.Пример 7.2. Определить классы-кандидаты пакета Объекты задачи.Используя рекомендации, приведенные в § 7.1, выполним анализ концептуальной моделипредметной области (рис.
6.9), описания основного ва-191рианта использования Решение задачи (см. § 6.2) и его диаграммы деятельностей (см. рис.6.4).Список классов-кандидатов, полученный на основе данного анализа, выглядитследующим образом:• класс Задание - объекты данного класса должны создаваться каждый раз, когдапользователь инициирует новое задание;• семейство классов с базовым классом Алгоритм - объекты данного класса должнысоздаваться, когда определен алгоритм решения задачи;• класс Данные — объекты данного класса должны создаваться при определении (вводеили выборе из базы) данных;• класс Результаты - объекты данного класса должны создаваться при решенииконкретной задачи конкретным алгоритмом с использованием конкретных данных.Исходный вариант диаграммы классов пакета Объекты задачи показан на рис. 7.5.192Основой для проектирования классов является уточнение взаимодействия объектов этихклассов в процессе реализации вариантов использования.
При этом применяют диаграммыпоследовательностей и диаграммы кооперации. Если же необходимо описать взаимодействиеобъектов при обработке конкретного сообщения, удобны именно диаграммыпоследовательностей.Диаграммыпоследовательностейэтапапроектирования.Диаграммыпоследовательностей этапа проектирования отображают взаимодействие объектов,упорядоченное по времени. В отличие от диаграмм последовательности этапа анализа на нейпоказывают внутренние объекты, а также последовательность сообщений, которымиобмениваются объекты в процессе реализации фрагмента варианта использования,называемого сценарием.Объекты изображают в виде прямоугольников, внутри которого указана информация,идентифицирующая объект: имя, имя объекта и имя класса или только имя класса (рис.
7.6).Каждое сообщение представляют в виде линии со стрелкой, соединяющей линии жизнидвух объектов. Эти линии помещают на диаграмму в порядке генерации сообщений (сверхувниз и слева направо). Сообщению присваивают имя, но можно указать и аргументы, иуправляющую информацию, например, условие формирования или маркер итерации (*).Возврат при передаче синхронных сообщений подразумевают по умолчанию.Если объект создается сообщением, то его рисуют справа от стрелки сообщения так,чтобы стрелка сообщения входила в него слева.Диаграммы последовательностей также позволяют изображать параллельные процессы.Асинхронные сообщения, которые не блокируют работу вызывающего объекта, показываютполовинкой стрелки (рис. 7.7, а).
Такие сообщения могут:• создавать новую ветвь процесса;• создавать новый объект (рис. 7.7, б);• устанавливать связь с уже выполняющейся ветвью процесса.На линии жизни в этом случае дополнительно показывают активации, которыеобозначаются прямоугольником, наложенным поверх линии жизни (рис. 7.7, в).193Уничтожение объекта показывают большим знаком «X» (рис.
7.7, г).При необходимости линию жизни можно прервать, чтобы не уточнять обработку, несвязанную с анализируемыми объектами (рис. 7.7, д).Пример 7.3. Разработать диаграмму последовательностей для сценария Решение задачи(фрагмент варианта использования Выполнение задания от момента инициализациипользователем процесса решения до его завершения).Анализ описания варианта использования показывает, что необходимо рассмотреть триварианта последовательности действий:а) нормальный процесс;б) прерывание процесса пользователем;в) возникновение исключения при выполнении алгоритма.Нормальный процесс предполагает, что при выдаче команды Создать создается объектРешение, управляющий данным сценарием. Следующее сообщение Начать активизирует этотобъект. Объект Решение запрашивает у объекта класса Задание тип объекта Алгоритм, создаетобъект требуемого класса и активизирует его, сохраняя способность получать и обрабатыватьсообщения (параллельный процесс).Объект класса Алгоритм, реализующий метод, запрашивает у объекта класса Заданиеданные и начинает обработку, используя вспомогательные объекты.
Нормально завершивобработку, объект класса Алгоритм, реализующий метод, передает объекту класса Заданиерезультаты и возвращает объекту Решение признак нормального завершения. Объект Решениеуничтожает объект класса Алгоритм, реализующий метод, и возвращает вызвавшему егообъекту признак нормального завершения решения (рис. 7.8, а).В случае прерывания процесса объект Решение прерывает процесс решения, уничтожаетобъект Алгоритм и возвращает признак прерванного выполнения (рис.
7.8, 6). В этом случаепри выполнении обработки возникает194аварийная ситуация, результатом которой является генерация исключения. Обрабатываяисключение, объект класса Решение, генерирует соответствующее сообщениепользователю, уничтожает объект класса Алгоритм, реализующий метод, и возвращаетпризнак завершения выполнения с ошибкой (рис. 7.9).195Диаграмма кооперации. Диаграмма кооперации - это альтернативный способпредставления взаимодействия объектов в процессе реализации сценария, который позволяетпо-другому взглянуть на ту же информацию. В отличие от диаграмм последовательностейдиаграммы кооперации показывают потоки данных между объектами классов, что позволяетуточнить связи между ними.Пример 7.4.
Разработать диаграмму кооперации для сценария Процесс решения.Изобразим на одной диаграмме три возможных случая реализации сценария, нумеруясообщения в порядке их возможной генерации (рис. 7.10).196Такое представление позволяет описать потоки данных, передаваемых между объектамиклассов Решение, Задание и Алгоритм, реализующий метод, для сценария Процессрешения.7.3. Уточнение отношений классовПроцесс проектирования классов начинают с уточнения отношений между ними.
Наэтапе проектирования помимо ассоциации и обобщения различают еще два типа отношениямежду классами: агрегацию и композицию.К сожалению, до настоящего времени не существует единой устоявшейся терминологииобъектно-ориентированного проектирования. В табл. 7.1 приведены соответствия междуосновными терминами, используемыми наиболее известными авторами в этой области.Агрегацией называют ассоциацию между целым и его частью или частями.
Агрегациювместо ассоциации указывают, если отношение «целое-часть» в конкретном случаесущественно. Например, если колесо нас интересует только как часть автомобиля, то междусоответствующими классами целесообразно указать отношение агрегации, а если колесо товар, также как и автомобиль, то связь целое-часть не существенна.Композиция - более сильная разновидность агрегации, которая подразумевает, чтообъект-часть может принадлежать только единственному целому.
Объект-часть при этомсоздается и уничтожается только вместе со своим целым.Уточненные отношения между классами фиксируют на диаграмме классов. Для этогоиспользуют специальные уловные обозначения (рис. 7.11).Поскольку отношение ассоциации и его подвиды (агрегация и композиция) означаютналичие обмена сообщениями между объектами классов целеТаблица 7.1НотацияUMLБучКоалЯкобсонОделлРамбоШлеср/ МеллорКлассКлассКласс, объектТерминыАссоциацияОбобщениеИспользованиеНаследованиеСвязь экземпляров ОбобщениеспециализацияАгрегацияВключениеЧасть-целоеОбъектродстваТип объектаАссоциацияНаследованиеСостоит изСвязьПодтипКомпозицияКлассАссоциацияОбобщениеАгрегацияОбъектСвязьПодтипНе определена197сообразно уточнить направление передачи сообщений. Навигацию (направление ассоциации)показывают стрелкой на конце линии ассоциации.
Если стрелки указаны с обеих сторон, тоэто означает двунаправленную ассоциацию.Специальное обозначение на диаграмме классов этапа проектирования используютдля указания абстрактных классов и методов: на диаграмме классов их имена выделяюткурсивом, либо перед именем класса указывают стереотип «abstract».UML также включает специальную нотацию для обозначения параметризованныхклассов или шаблонов (рис. 7.12, а). Получение из такого класса класса с конкретнымитипами элементов называют связыванием. Связывание можно обозначить двумя способами:явно указав тип параметра (рис.