Практическая работа 1213 Построение диаграмм состояний на языке uml с помощью ms visio
Скачать 3.46 Mb.
|
Отношение композиции – частный случай отношения агрегации, и служит для спецификации более сильной формы отношения «часть-целое», при которой составляющие части тесно взаимосвязаны с целым. Особенность: с уничтожением целого уничтожаются и все его составные части. Пример (рис. 10): Программное средство представляет собой базу данных «Автоматизация процесса составления расписания в учебном заведении». Программное средство обеспечивает корректировку данных, а именно в БД «Группы» может изменяться перечень предметов в соответствие с курсом группы и отделением; в БД «Предметы» могут изменяться номера аудиторий и фамилии преподавателей; осуществляет поиск по ФИО преподавателя, номеру аудитории, названию предмета и номеру группы. Программное средство составляет расписание работы для конкретного преподавателя на неделю; для 42 группы на неделю; для группы по конкретному предмету, а также отчет о загрузке аудиторий на каждый день. Рисунок 58 – Пример диаграммы классов 3 Методика выполнения В качестве примера рассматривается моделирование системы продажи товаров по каталогу. 1. Запустите Visual Paradigm for UML CE. 2. Откройте проект, содержащий диаграмму вариантов использования, построенную в практическом занятии №12. 3. Для добавления новой диаграммы достаточно в меню Diagram > New Diagram выбрать тип диаграммы Class Diagram и нажмите кнопку Next. 4. Задайте имя диаграммы SaleSystemClassDiagram. Нажмите OK. 5. В результате отобразится пустая рабочая область с элементами для построения диаграммы классов (рис. 11). 43 Рисунок 59 – Рабочая область для построения диаграммы классов Далее будут описаны принципы построения диаграммы классов. Для создания класса необходима на панели инструментов выбрать Class и затем курсором мыши выбрать место расположения на диаграмме (Рисунок 12). После создания класса необходимо задать его имя (Рисунок 13). Рисунок 60 – Создание класса Рисунок 61 – Задание имени в созданном классе Для создания ассоциативной связи между классами выберите Association > Class (Рисунок 14). Перетащите курсор мыши на пустое место на диаграмме для создания нового или на уже существующий класс для соединения. Отпустите кнопку мыши (Рисунок 15). Рисунок 62 – Выбор типа связи Рисунок 63 – Создание ассоциативной связи 44 Для создания связи агрегации между классами выберите Aggregation -> Class (Рисунок 19). Рисунок 64 – Создание связи агрегации Чтобы изменить кратность ассоциативной связи, щелкните правой кнопкой мыши на конце ассоциации, выберите Multiplicity из всплывающего меню, а затем выберите кратность (Рисунок 17). Либо выделите связи и нажмите Enter (рисунок 18). Рисунок 65 – Изменение кратности связи Рисунок 66 – Изменение кратности связи Чтобы показать направление ассоциации, щелкните правой кнопкой мыши на связи и выберите Presentation Options > Show Direction из всплывающего меню (Рисунок 19). 45 Рисунок 67 – Определение направления связи Направление стрелки покажет связанный элемент диаграммы (Рисунок 20). Рисунок 68 – Результат определения ассоциации Для создания связи обобщения между классами выберите Generalization -> Class (Рисунок 23). Перетащите курсор мыши на пустое место на диаграмме для создания нового или на уже существующий класс для соединения. Отпустите кнопку мыши (Рисунок 24). Рисунок 69 – Выбор связи Рисунок 70 – Создание связи обобщения 46 Для создания атрибута щелкните правой кнопкой мыши на классе и выберете Add > Attribute в выпадающем меню (Рисунки 23-24). Рисунок 71 – Создание атрибута Рисунок 72 – Класс с созданным атрибутом Для ускорения процесса создания атрибутов нужно сразу же после созданного атрибута на жать на клавиатуре клавишу Enter. Для добавления типа данных атрибута выделите его и нажмите Enter либо щелкните правой кнопкой мыши и выберите Open Specification… в окне свойств выберите тип данных (рис. 25). Рисунок 73 – Задание типа данных атрибута Для создания операции щелкните правой кнопкой мыши на классе и выберете Add > Operation в выпадающем меню (Рисунки 26-27). 47 Рисунок 74 – Создание операции Рисунок 75 – Созданная операция Для того чтобы переупорядочить члены класса необходимо зацепить курсором мышки один из членов и перетащить (Рисунки 28-29) Рисунок 76 – Перетаскивание члена класса Рисунок 77 – Результат перетаскивания Для копирования члена из одного класса в другой необходимо выбрать курсором мыши этот член класс с зажатой клавишей Ctrl и указать другой класс (Рисунки 30-31). Рисунок 78 – Копирование члена класса Рисунок 79 – Результат копирования члена класса Перетаскивание члена класса из одного класса в другой производится подобным образом что и копирование, за исключением того, что не нужно зажимать клавишу Ctrl. 48 Для того чтобы выбрать все члены класса необходимо выбрать один член класса и нажать сочетание клавиш Ctrl+A. Связывание классов производится по следующему алгоритму. 1. Выбрать тип связи из панели инструментов (Рисунок 32). Рисунок 80 – Выбор зависимости 2. Переместить курсор мыши на атрибут-источник исходного класса (Рисунок 33). Рисунок 81 – Определение связи по члену класса 3. Зажать клавишу мыши и не отпускать ее. 4. Переместить курсор мыши на член другого класса для связи (Рисунок 34). Рисунок 82 – Определение члена класса в целевом классе 5. Отпустить клавишу мыши для определения соединения. В спецификации можно убедиться, что связь определена именно по указанным атрибутам (Рисунок 35). Рисунок 83 – Созданная связь Основываясь, на описанных выше принципах построения диаграммы классов, постройте диаграмму классов для системы продажи товаров по каталогу в соответствии с рисунком 36. 49 Рисунок 84 – Фрагмент диаграммы классов, описывающей реализацию систем продаж товаров по каталогу 4 Задание Построить диаграмму классов в соответствии с вариантом. Отчет по практическому занятию выполняется в формате MS Word, который содержит пошаговое описание процесса построения диаграммы, а также скриншоты результатов согласно заданию. 5 Варианты 1. «Отдел кадров»; 2. «Агентство аренды»; 3. «Аптека»; 4. «Ателье»; 5. «Аэропорт»; 6. «Библиотека»; 7. «Кинотеатр»; 8. «Поликлиника»; 9. «Автосалон»; 10. «Таксопарк». 11. «Издательство»; 12. «Прокат велосипедов»; 13. «Спортивный клуб». 6 Контрольные вопросы 1. Дайте определение понятию «диаграмма классов» и ее назначение. 2. Дайте определение следующим понятиям «класс», «атрибут», «операция», «отношение». 50 3. Опишите отношение ассоциаций между экземплярами классов. 4. Опишите отношение обобщения между экземплярами классов. 5. Опишите отношение агрегации между экземплярами классов. 6. Опишите отношение композиции между экземплярами классов. 7. Приведите пример графического представления основных компонентов диаграммы классов. 8. Дайте определение «квантор видимости» и его классификацию. 51 Практическая работа №20 Разработка диаграмм состояний с помощью Visual Paradigm for UML Цель: изучение основ создания диаграмм состояний на языке UML с помощью case-средства Visual Paradigm for UML CE, применение приобретенных навыков для построения объектно-ориентированных моделей определенной предметной области. 1 Задачи Основными задачами практической работы являются: ‒ получить навыки создания диаграмм состояний с помощью case-средства Visual Paradigm for UML CE; ‒ изучить основные стереотипы классов. 2 Краткие теоретические сведения Для представления динамических особенностей взаимодействия элементов модели, в контексте реализации вариантов использования, предназначены диаграммы кооперации и последовательности. Однако для моделирования процессов функционирования большинства сложных систем, особенно систем реального времени, этих представлений недостаточно. Диаграмма состояний (statechart diagram) – диаграмма, которая представляет конечный автомат, в которой вершины обозначают состояния, а дуги показывают переходы между двумя состояниями. Назначение диаграммы состояний – описать возможные последовательности состояний и переходов, которые в совокупности характеризуют поведение моделируемой системы в течение всего ее жизненного цикла. Диаграмма состояний представляет динамическое поведение сущностей, на основе спецификации их реакции на восприятие некоторых конкретных событий. Диаграммы состояний используются для описания поведения отдельных систем и подсистем. Они также могут быть применены для спецификации функциональности экземпляров отдельных классов, т. е. для моделирования всех возможных изменений состояний конкретных объектов. Диаграмма состояний по существу является графом специального вида, который служит для представления конечного автомата. Диаграммы состояний могут быть вложены друг в друга, образуя вложенные диаграммы для более детального представления состояний отдельных элементов модели. Для понимания семантики конкретной диаграммы состояний необходимо представлять особенности поведения моделируемой сущности, а также иметь общие сведения из теории конечных автоматов. Конечный автомат (state machine) – модель для спецификации поведения объекта в форме последовательности его состояний, которые описывают реакцию объекта на внешние события, выполнение объектом действий, а также изменение его отдельных свойств. В контексте языка UML понятие конечного автомата обладает дополнительной семантикой. Вершинами графа конечного автомата являются состояния и другие типы элементов модели, которые изображаются соответствующими графическими символами. Дуги графа служат для обозначения переходов из состояния в состояние. Конечный автомат описывает поведение отдельного объекта в форме последовательности состояний, охватывающих все этапы его жизненного цикла, начиная от создания объекта и заканчивая его уничтожением. Каждая диаграмма состояний представляет собой конечный автомат. Состояние (state) – условие или ситуация в ходе жизненного цикла объекта, в течение которого он удовлетворяет логическому условию, выполняет определенную деятельность или ожидает события. Состояние может быть задано в виде набора конкретных значений атрибутов объекта некоторого класса, при этом изменение отдельных значений этих атрибутов будет отражать изменение состояния моделируемого объекта или системы в целом. Однако не каждый атрибут класса может характеризовать состояние его объектов. Как правило, имеют значение только те свойства элементов системы, которые отражают динамический или функциональный аспект ее поведения. В этом случае состояние будет характеризоваться некоторым инвариантным условием, включающим в себя только принципиальные для поведения объекта или системы атрибуты классов и их значения. Такое условие может соответствовать ситуации, когда моделируемый объект находится в состоянии ожидания возникновения внешнего события. В то же время нахождение объекта в некотором состоянии может быть связано с выполнением определенных действий. В последнем случае соответствующая 52 деятельность начинается в момент перехода моделируемого элемента в рассматриваемое состояние, а после и элемент может покинуть данное состояние в момент завершения этой деятельности. Состояние на диаграмме изображается прямоугольником со скругленными вершинами (рис. 1). Этот прямоугольник может быть разделен на две секции. Если указана лишь одна секция, то в ней записывается только имя состояния (рис. 1, а). В противном случае в первой из них записывается имя состояния, а во второй – список некоторых внутренних действий или переходов в данном состоянии (рис. 1, б). При этом под действием в языке UML понимают некоторую атомарную операцию, выполнение которой приводит к изменению состояния или возврату некоторого значения (например, «истина» или «ложь»). Рисунок 85 – Графическое изображение состояний на диаграмме состояний Имя у состояния может отсутствовать, т. е. оно необязательно для некоторых состояний. В этом случае состояние является анонимным. Если на одной диаграмме состояний несколько анонимных состояний, то все они должны различаться между собой. Действие (action) – спецификация выполнимого утверждения, которая образует абстракцию вычислительной процедуры. Каждое действие записывается в виде отдельной строки и имеет следующий формат: <метка действия '/ ' выражение действия> Метка действия указывает на обстоятельства или условия, при которых будет выполняться деятельность, определенная выражением действия. При этом выражение действия может использовать любые атрибуты и связи, принадлежащие области имен или контексту моделируемого объекта. Если список выражений действия пустой, то метка действия с разделителем в виде наклонной черты '/' не указывается. Перечень меток действий в языке UML фиксирован, причем эти метки не могут быть использованы в качестве имен событий: Входное действие (entry action) – действие, которое выполняется в момент перехода в данное состояние. Обозначается с помощью ключевого слова – метки действия entry, которое указывает на то, что следующее за ней выражение действия должно быть выполнено в момент входа в данное состояние. Действие выхода(exit action) – действие, производимое при выходе из данного состояния. Обозначается с помощью ключевого слова – метки действия exit, которое указывает на то, что следующее за ней выражение действия должно быть выполнено в момент выхода из данного состояния. Внутренняя деятельность(do activity) – выполнение объектом операций или процедур, которые требуют определенного времени. Обозначается с помощью ключевого слова – метки деятельности do, которое специфицирует так называемую "ду-деятельность", выполняемую в течение всего времени, пока объект находится в данном состоянии, или до тех пор, пока не будет прервано внешним событием. Пример: аутентификацию клиента для доступа к ресурсам моделируемой информационной системы (рис. 2). Список внутренних действий в данном состоянии может включать следующие действия. Первое действие – входное, которое выполняется при входе в это состояние и связано с получением строки символов, соответствующих паролю клиента. Далее выполняется деятельность по проверке введенного клиентом пароля. При успешном завершении этой проверки выполняется действие на выходе, которое отображает меню доступных для клиента опций. Рисунок 86 – Пример состояния с непустой секцией внутренних действий Кроме обычных состояний на диаграмме состояний могут размещаться псевдосостояния. 53 Псевдосостояние (pseudo-state) – вершина в конечном автомате, которая имеет форму состояния, но не обладает поведением. Примерами псевдосостояний, которые определены в языке UML, являются начальное и конечное состояния. Начальное состояние(start state) – разновидность псевдосостояния, обозначающее начало выполнения процесса изменения состояний конечного автомата или нахождения моделируемого объекта в составном состоянии. В этом состоянии находится объект по умолчанию в начальный момент времени. Оно служит для указания на диаграмме состояний графической области, от которой начинается процесс изменения состояний. Графически начальное состояние в языке UML обозначается в виде закрашенного кружка (рис. 3, а), из которого может только выходить стрелка-переход. Рисунок 87 – Графическое изображение начального и конечного состояний На самом верхнем уровне представления объекта переход из начального состояния может быть помечен событием создания (инициализации) данного объекта. В противном случае этот переход никак не помечается. Если этот переход не помечен, то он является первым переходом на диаграмме состояний в следующее за ним состояние. Каждая диаграмма или под-диаграмма состояний должна иметь единственное начальное состояние. Конечное состояние(final state)– разновидность псевдосостояния, обозначающее прекращение процесса изменения состояний конечного автомата или нахождения моделируемого объекта в составном состоянии. В этом состоянии должен находиться моделируемый объект или система по умолчанию после завершения работы конечного автомата. Оно служит для указания на диаграмме состояний графической области, в которой завершается процесс изменения состояний или жизненный цикл данного объекта. Графически конечное состояние в языке UML обозначается в виде закрашенного кружка, помещенного в окружность (рис. 3, б), в которую может только входить стрелка-переход. Каждая диаграмма состояний или подсостояний может иметь несколько конечных состояний, при этом все они считаются эквивалентными на одном уровне вложенности состояний. Переход (transition) – отношение между двумя состояниями, которое указывает на то, что объект в первом состоянии должен выполнить определенные действия и перейти во второе состояние. Переход осуществляется при наступлении некоторого события: окончания выполнения деятельности (do activity), получении объектом сообщения или приемом сигнала. На переходе указывается имя события, а также действия, производимые объектом в ответ на внешние события при переходе из одного состояния в другое. Событие (event) – спецификация существенных явлений в поведении системы, которые имеют местоположение во времени и пространстве. Формально, событие представляет собой спецификацию факта, имеющего место в пространстве и во времени. Про события говорят, что они «происходят», при этом отдельные события должны быть упорядочены во времени. После наступления события нельзя уже вернуться к предыдущим, если такая возможность явно не предусмотрена в модели. Семантика понятия события фиксирует внимание на внешних проявлениях качественных изменений, происходящих при переходе моделируемого объекта из состояния в состояние. Переход называется |