
- •Содержаhие
- •2. Классические математические
- •3. Стохастические модели
- •4.4. Имитация случайных событий…………………..… 78
- •5. Обработка результатов
- •6. Моделирование вероятностных
- •7. Модели систем
- •8. Алгоpитмизация пpоцеccов
- •9. Унифицированный
- •Введение
- •1. Концепция моделирования
- •1.1. Понятие модели
- •1.2. Концепции определения моделей
- •2. Классические математические модели
- •2.1. Примеры моделей в виде дифференциальных уравнений
- •2.2. Классические модели в виде дифференциальных уравнений
- •2.3. Инерционные модели
- •2.4. Модели на основе передаточных функций
- •2.5. Конечные автоматы
- •3. Стохастические модели объектов
- •3.1. Математические модели случайных процессов
- •3.2. Классификация моделей случайных процессов
- •3.3. Модели марковских процессов
- •4. Имитация случайных событий
- •4.1. Понятие статистического моделирования
- •4.2. Датчики случайных чисел
- •4.3. Проверочные тесты
- •4.4. Имитация случайных событий
- •4.5. Имитация непрерывных случайных величин
- •4.6. Имитация марковского процесса
- •5. Обработка результатов моделирования на эвм
- •5.1. Выбор числа опытов
- •5.2. Значимость оценки
- •5.3. Формулы и алгоритмы для оценки результатов моделирования
- •6. Моделирование вероятностных автоматов
- •6.1. Аналитическое определение вероятностных автоматов
- •6.2. Табличное задание функций переходов и выходов
- •6.3. Имитационное моделирование вероятностных автоматов
- •7. Модели систем массового обслуживания
- •7.1. Общие сведения
- •7.2. Модель входного потока заявок и времени обслуживания
- •7.3. Модель Эрланга
- •7.4. Исследование модели пуассоновского процесса с помощью производящих функций
- •7.5. Модель для определения времени задержки в виде интегро-дифференциальных уравнений Линди-Такача-Севастьянова
- •7.6. Имитационное моделирование одноканальной смо
- •7.7. Имитационные модели многофазных смо
- •7.8. Имитационные модели многоканальных смо
- •7.9. Алгоритмизация имитационной модели смо произвольной структуры
- •8.1. Моделиpующие алгоpитмы
- •9. Унифицированный язык моделирования uml
- •9.1. Основные компоненты
- •9.2. Понятия и компоненты
- •9.3. Диаграммы вариантов использования
- •9.4. Диаграммы классов
- •Вертикальная координата : : Подвеска : : Машина
- •9.5. Типы связей между классами
- •9.6. Расширения понятия класса в uml
- •9.7. Связи между объектами
- •9.8. Диаграммы взаимодействия
- •9.9. Диаграммы состояний
- •9.10. Диаграммы деятельностей
- •10. Объектно-ориентированное моделирование
- •10.1. Определение объекта
- •10.2. Наследование
- •10.3. Полиморфизм
- •10.4. Типы данных и пакеты
- •Библиографический список
- •Аналитические и имитационные модели
Вертикальная координата : : Подвеска : : Машина
Имя объекта может быть опущено. В этом случае в первой секции пишется двоеточие и имя класса. Имя класса данного объекта также может быть опущено вместе с двоеточием.
Вторая секция содержит в себе список имен атрибугов с их типами и значениями. Каждая строка из списка имеет следующий синтаксис:
<имя атрибута>: <тип>=<значение>
Указание типа атрибута и его значения не является обязательным. Некоторые из атрибутов, не представляющие интереса, также могут быть опущены.
Объект может принимать некоторые состояния. Чтобы обозначить это, рядом с именем объекта в квадратных скобках указывается список его состояний, содержащий состояния объекта, в которых он может находиться в течение жизненного цикла. Состояния объекта формируются на этапе анализа проектируемой системы, т.е. вьщеляются некоторые основные фазы, в которых может находиться объект, далее при проектировании системы эти состояния можно корректировать.
Составной объект (composite objekt) - экземпляр составного класса, т.е. класса, имеющего отношение композиции с другими классами. Cоставной объект состоит из других, возможно, также составных объектов и представляется на диаграмме так же, как и простой объект. Имя объекта располагается в верхней секции прямоугольника, а в нижней секции вместо атрибугов объекта располагаются части составного объекта (см. рис. 9.8).
Рис. 9.8
Содержание составного объекта может быть опущено и сообщения, предназначенные для внугренних составляющих объекта, могуг обращаться непосредственно к самому объекту. Внутренние сообщения, которыми обмениваются составляющие объекта, также могут быть опущены. Сообщения обычно показываются на одной диаграмме вместе с составляющими объекта.
Активный объект (active objekt) имеет возможность инициировать действие. Пассивный объект может содержать в себе данные, но не может инициировать действия. Однако пассивный объект может посылать сообщения в процессе обработки запроса, который он получил. Активный объект ‑ это объект, имеющий поток управления. Он представляется на диаграмме как обычный объект, обведенный толстой сплошной линией. Часто он представляется как композиция из вложенных частей, как это показано на рис. 9.8.
9.5. Типы связей между классами
Чтобы на диаграмме показать взаимодействие классов, между ними необходимо обозначить связь. Возможны связи следующих типов: ассоциации, зависимости, агрегации и сообщения.
Ассоциация (association) определяет логическую связь между классами. В UML одна ассоциация может специфицировать связь между двумя и несколькими классами. Ассоциации первого типа называются бинарными, а второго типа ‑ N-арными.
Бинарная ассоциация (binary association) характеризует логическую связь между двумя классами. Возможна также связь класса с самим собой, которая называется рефлексивной ассоциацией. Изображается ассоциация в виде сплошной линии, соединяющей символы классов. Каждая ассоциация, как и любая связь, обладает направлением или в терминах UML - ролью (association role). Ролей может быть две, чтобы иметь возможность подчеркнуть возможные различия во «взаимоотношениях» между классами, например у «Начальника» могут быть сосредоточены все права, а у «Подчиненного» - только обязанности.
Рядом с линией, изображающей ассоциацию, мотут быть следующие пометки:
- имя ассоциации определяет необязательное имя ассоциации;
- класс ассоциации определяет для ассоциаций атрибуты, операции и другие свойства (соединяется с линией ассоциации пунктиром). Эта метка используется в случае, если необходимо присоединить к ассоциации некую дополнительную информацию.
Роль (association role) - неотделимая часть ассоциации, описывающая роль класса в данной ассоциации. У роли могуг быть следующие свойства:
- имя роли - строка, стоящая рядом с концом линии ассоциации, причем, поле не обязательное, но если имя задано, то оно должно отображаться на диаграмме;
- навигация в направлении роли означает, что партнеры ассоциации могут просматривать объекты, соответствующие этой роли. Если в направлении, соответствующем роли есть навигация, то на конце линии может быть изображена стрелка;
- множественность показывает количество конкретных объектов, которые могут быть связаны с данным партнером ассоциации, показывает нижнюю и верхнюю границы количества объектов, которые участвуют в ассоциации;
- квалификатор представляет собой список атрибутов класса с противоположного конца линии ассоциации, по значениям которых можно однозначно разбить множество объектов этого класса на подмножества. Используется для связи объекта класса-партнера ассоциации с группой объектов другого класса-партнера ассоциации;
- агрегация показывает, что ассоциация является отношением типа целое/часть.
Множественность (multiplicity) показывает возможное количество объектов, которые могут быть связаны в соответствии с этой ассоциацией. Множественность указывается для ролей ассоциации и имеет следующий формат (см. рис. 9.9):
<нижняя граница>. . <верхняя граница>
Рис. 9.9
Верхняя граница и нижняя граница указывают минимальное и максимальное количество объектов, участвующих в ассоциации. Если для верхней границы стоит символ «*», то это значит, что она бесконечна.
Пример
0. .1
10
0. . *
3. .5,10. .20,100,200. . *
В работающей системе между объектами ассоциированных классов устанавливаются связи (экземпляры ассоциации). Но в некоторых случаях требуется, чтобы можно было разбить множество объектов одного класса, которые будут связаны с объектом другого класса в соответствии с данной ассоциацией, на подмножества по значениям некоторых атрибутов этих объектов, и наложить ограничения на число объектов в том или ином подмножестве.
В UML предоставляется такая возможность: у ассоциации может быть атрибут под названием квалификатор (qualifier), который содержит один или несколько атрибутов класса, прикрепленного к другому концу ассоциации. По значению этих атрибутов происходит групповая выборка объектов этого класса со стороны объекта противоположного по данной ассоциации класса. Квалификатор изображается в виде маленького прямоугольника, присоединенного к началу линии ассоциации (см. рис. 9.10). В нем указываются атрибуты другого класса-партнера ассоциации.
Рис. 9.10
Квалификатор, приведенный на рис. 9.10, можно трактовать, как ограничение на использование трассы машинами с определенным весом, и на количество одновременно проезжающих по этой трассе машин.
Если у роли ассоциации установлен атрибут «aggregation», то вся ассоциация является отношением агрегации. Такой атрибут может быть установлен только у одной из ролей. Агрегация (aggregation) ‑ это отношение между классами типа целое/часть. Агрегируемый класс в той или иной форме является частью агрегата. На практике это может быть реализовано по-разному. Например, объект класса-агрегата может хранить объект агрегируемого класса, или хранить ссылку на него.
В UML допускается возможность агрегации одного класса многими, т.е. один класс может являться частью нескольких целых. Но имеется специальный вид агрегации, называемый композицией (composition), который этого не допускает. Композиция является специальным видом агрегации (так называемая сильная агрегация). Она указывает на то, что данный класс может являться частью только одного класса. В частности, агрегируемый объект может быть создан только тогда, когда создан агрегат, а с уничтожением агрегата уничтожаются и все агрегируемые объекты. Агрегация изображается на диаграмме полым ромбом на конце линии ассоциации со стороны агрегирующего класса (агрегата). Композиция показывается так же, как и агрегация, но ромбик рисуется не пустым, а заполненным (см. рис. 9.11).
Рис. 9.11
В некоторых случаях два и более элемента модели могут быть семантически связаны. Например, класс А использует методы класса В. При изменении класса В необходимо произвести соответствующие изменения в классе А. Поэтому в нотации UML предусмотрено такое отношение, как зависимость (dependency).
Для рассмотренного примера на диаграмме классов необходимо указать, что класс А зависит от класса В. Отношение зависимости является универсальным, если с помощью него можно связывать различные типы сущностей UML. Зависимость изображается пунктирной линией, проведенной между двумя элементами диаграммы, и считается, что элемент, «привязанный» к концу стрелки, зависит от элемента, «привязанного» к началу этой стрелки. Зависимость может быть снабжена именем и спецификатором. Существуют следующие виды зависимостей:
- trace показывает историческую связь между двумя элементами, которые представляли одно и то же понятие на разных этапах;
- refine - историческая связь между элементами, как правило, показывает, что один элемент как бы произошел от другого;
- uses - ситуация, когда один элемент модели использует другой;
- bind - устанавливается между шаблоном и экземпляром шаблона;
- friend - аналог ключевого слова С++friend.
Наследование (inheritance) - это отношение типа «общее-частное» между элементами модели. Наследование обозначается сплошной линией, идущей от частного элемента к более общему (в терминологии ООП - от потомка к предку или от подкласса к суперклассу). Со стороны более общего элемента рисуется большой полый треугольник.
Один из атрибутов отношения наследования ‑ дискриминатор (discriminator) ‑ строка, задающая имя группы потомков. Его использование полезно, если у данного класса много потомков, и необходимо разбить их на несколько групп. Отсутствие дискриминатора означает, что дискриминатор - пустая строка (дискриминатор по умолчанию). Изображается дискриминатор текстовой строкой, стоящей возле линии наследования, как это показано на рис. 9.12.
Рис. 9.12