Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод.рекомендации по разработке и стандартизац...doc
Скачиваний:
27
Добавлен:
27.11.2019
Размер:
310.78 Кб
Скачать

5. Структурирование элементов модели с использованием пакетов

В больших моделях целесообразно структурировать элементы модели, размещая их в разных пакетах. Для этого добавьте в пакет "Главный пакет" три новых пакета - "Границы", "Сущности" и "Управление". С помощью Проводника переместите классы "Выбор заказа" и "Детали заказа" в пакет "Границы", класс "Заказ" в пакет "Сущности", а классы "Менеджер заказов" и "Менеджер транзакций" - в "Управление". Обратите внимание на изменения произошедшие в Проводнике и на диаграммах.

Дополнительно особенности любого элемента модели можно обозначить с использованием стереотипа. Существует стандартизованный набор стереотипов с фиксированной семантикой, но в рамках отдельного проекта допускается использование новых стереотипов. Создайте три новых стереотипа Boundary, Entry и Control (верхнее меню Visio, раздел UML, операция Stereotypes) для спецификации типа класса, принадлежащего определенному пакету. Присвойте классам "Выбор заказа" и "Детали заказа" стереотип Boundary, классу "Заказ" стереотип Entry, а классам "Менеджер заказов" и "Менеджер транзакций" - Control. Обратите внимание на изменения произошедшие на диаграммах.

Структура модели в Проводнике к данному моменту должна иметь следующий вид.

6. Создание диаграмм классов

Создайте в "Главном пакете" диаграмму статической структуры (Static Structure Diagram), назовите ее "Главная диаграмма пакетов" и включите в диаграмму три созданных ранее пакета.

Создайте в "Главном пакете" диаграмму статической структуры (Static Structure Diagram), назовите ее "Главная диаграмма классов" и включите в диаграмму все созданные ранее классы. Аналогично создайте диаграммы классов каждого пакета, назовите диаграммы "Диаграмма классов 1" и т.д.

Выберем в качестве языка будущей реализации язык программирования C++. Это позволяет определить типы атрибутов классов и сигнатуры операций. В процессе определения атрибутов классов можно заметить, что класс "Заказ" может содержать несколько заказываемых товаров и у каждого из них могут быть свои собственные данные и поведение. В этом случае одну позицию заказа лучше рассматривать как объект отдельного класса. Назовем этот класс "Позиция заказа" и поместим этот класс в пакет "Сущности". Соответственно необходимо переделать диаграмму последовательности следующим образом (назовите новый вариант диаграммы "Последовательность 4").

После исправления диаграммы последовательности следует проверить правильность набора операций в каждом классе.

Доработайте "Главную диаграмму классов" в соответствии с рисунком, приведенным ниже. Для этого в начале необходимо добавить в пакет "C++ Data Types" два новых типа данных (Data Types) - String (строка) и Date (дата). После этого можно определить атрибуты и их типы, затем сигнатуры операций. Для ассоциаций между классами необходимо определить множественность и показать направление связи.

7. Создание диаграммы состояний

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

Выделив класс "Заказ" в Проводнике вызовите контекстное меню и создайте для этого класса диаграмму состояний (Statechart Diagram), включите в диаграмму начальное, конечное, два обычных и составное (Composite) состояния. Переименуйте новые элементы модели в соответствии с рисунком.

Добавьте в "Диаграмму внутренних состояний" два состояния, переход с событием (Event) и переход с событием и условием выполнения (Guard expression), в соответствии с рисунком.

В соответствии со следующим рисунком, аналогично составьте "Диаграмму состояний", дополнив состояния действиями при входе в состояние (Entry actions), действиями при выходе (Exit actions) и/или внутренними переходами (Internal Transitions).