
- •Содержа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. Типы данных и пакеты
- •Библиографический список
- •Аналитические и имитационные модели
9.4. Диаграммы классов
Диаграммы классов (class diagrams) показывают статическую структуру системы. Диаграммы классов содержат набор статических элементов, как, например, классы, типы и их связи, объединенные в граф. Среди связей особо выделяют ассоциации и подтипы. На диаграммах классов также изображаются атрибуты классов, операции классов и ограничения, которые накладываются на связи между объектами. Диаграммы классов могут быть логически объединены в пакеты.
Класс (class) - это сущность, описывающая множество объектов со сходной структурой, поведением и связями с другими объектами. На диаграммах класс изображается в виде прямоугольника со сплошной границей, разделенного горизонтальными линиями на З секции, как показано на рис. .9.5.
Рис. 9.5
Верхняя секция (секция имени) содержит имя класса и другие общие свойства (в частности, тип класса). В средней секции содержится список атрибутов, а в нижней - список операций. Атрибуты хранят инкапсулированные данные класса, а операции описывают поведение объектов класса.
Любая из последних двух секций - атрибутов и операций - может не изображаться. Для отсутствующей секции не нужно рисовать разделительную линию и как-либо указывать на наличие или отсутствие элементов в ней.
Классы могут объединяться в более крупные компоненты, называемые пакетами. Область видимости класса ‑ это пакет, в котором он описан. По умолчанию считается, что указываемый класс определен в текущем пакете. Если необходимо сослаться на класс из другого пакета, это указывается явно:
<имя пакета>: :<имя класса>.
Так как иерархия пакетов может иметь глубину вложенности большую, чем единица, то путь к классу может содержать более чем одну ссылку, при этом путь начинается от корня иерархии пакетов:
<имя пакета1>::<имя пакета2>::...::<имя пакетаN>::<имя класса>.
В секции имени класса могут находиться (по порядку сверху вниз):
- тип класса (и/или значок типа в правом верхнем углу) - необязательное поле, опускается, если речь идет о неспецифицированном классе;
- имя класса (если класс абстрактный, то курсивом);
- дополнительные свойства ‑ имя автора и т.п. (необязательное поле).
Средняя и нижняя секции прямоугольника класса содержат списки его атрибутов и операций.
Атрибут (attribute) UML ‑ это элемент данных класса, т.е. элемент данных, который содержится в объекте, принадлежащем описываемому классу.
У атрибута должен быть тип (type exptession), который может представлять собой простой тип или быть сложным:
Array, Real, Vektor, Matrix.
Описание типа зависит от того, какой язык программирования используется разработчиками. Атрибуг изображается в виде текстовой строки, отражающей различные его свойства:
<признак видимости><имя>::<тип>=<значение по умолчанию>{свойства}.
Могут быть следующие свойства:
а) признак видимости имеет С++-семантику видимости членов класса:
- общий атрибут (public) (помечается символом +) означает, что любая сущность, имеющая доступ к объекту определяемого класса, имеет доступ и к этому атрибугу;
- защищенный атрибут (protected) (обозначается символом #) доступен только для методов класса и его потомков;
- приватный атрибут (private) (обозначается символом -) доступен только методам класса;
- признак области видимости может изображаться ключевым словом «public», «protected» или «private» или может быть спущен, что означает, что область видимости не показывается (а не то, что она не определена или «public» по умолчанию);
б) имя ‑ это идентификатор, представляющий имя атрибута;
в) тип ‑ зависящее от языка реализации описание типа атрибута;
г) значение по умолчанию ‑ зависящее от языка реализации выражение, задающее начальное значение для атрибута вновь созданного объекта;
д) свойства ‑ строка дополнительных свойств элемента (необязательная часть). Если свойства не указываются, скобки { } опускаются. Примером свойства может служить имя автора: {Author = Smith}.
По умолчанию атрибут является изменяемым. Указав в его свойствах пометку {frozen}, можно объявить атрибут неизменяемым. Для атрибута можно указывать его множественность. Если она не обозначена, то предполагается, что атрибут может хранить ровно одно значение. Множественность может быть определена в квадратных скобках сразу после имени атрибута:
cords[3]: integer.
В программных классах операции и методы трактуются как программные процедуры, время выполнения которых будет уточняться в диаграммах состояний и деятельностей. С точки зрения моделирования, длительность (непрерывные и дискретные процессы) тех или иных операций чрезвычайно важна на самом раннем этапе. Если длительностью некоторой операции можно пренебречь, то модель может существенно упроститься.
Операция (operation) ‑ это сущность, определяющая некое действие, которое может быть выполнено представителем класса. У операции есть имя и список аргументов. Операция изображается текстовой строкой, имеющей следующую грамматику:
<признак видимости><имя>(список параметров):<тип выражения, возвращающего значения> {свойства},
где: признак видимости, имя и свойства имеют тот же смысл, что и для атрибута; список параметров - список формальных параметров, разделенных запятыми; тип выражения, возвращающего значения - зависящее от языка реализации описание типа значения, возвращаемого функцией. Если оно не указано, то предполагается, что функция не возвращает значения (void для С/С++).
Каждый элемент списка параметров имеет следующий вид:
<имя>: <тип>=<значение по умолчанию>,
где: имя ‑ имя параметра; тип ‑ зависящее от языка реализации описание типа параметра; значение по умолчанию ‑ значение параметра по умолчанию.
Все операции, определенные в классе, можно разделить на две группы: операции класса и операции представителя. Операции класса присущи не объектам класса, а самому классу. Отсюда, в частности, следует, что операции класса не имеют доступа к атрибутам. Типичный пример операции класса функция создания нового объекта (представителя) класса. Операции класса вьщеляются подчеркиванием:
new {Машина} [масса=100, жесткость=10];
Операция, не изменяющая состояние системы, помечается следующим образом: в список свойств операции помещается свойство {guery}.
Элементы списков атрибутов и операций можно группировать по некоторым признакам. В этом случае перед группой элементов ставится заключенная в кавычки строка, определяющая свойство, причем это свойство распространяется на все нижестоящие элементы до нового свойства. Эта возможность хорошо иллюстрируется следующим примером:
“параметры масины”
жесткость подвески
масса машины
…
У каждой секции прямоугольника класса может быть имя. Так как секция «имя класса» обязательна, то ее имя не указывается, как показано на рис. 9.6.
Рис. 9.6
Одним из самых важных понятий объектно-ориентированного программирования является понятие объекта (objekt). Объекты могут исполнять определенные роли. Роль определяет отношение между классом и его экземплярами, вьделяя определенное их подмножество. На диаграмме объект представляется как прямоугольник с двумя секциями (см. рис. 9.7). Верхняя секция содержит в себе имя объекта и его класса, подчеркнутое сплошной линией и имеющего синтаксис:
<имя объекта>:<имя класса>
Рис. 9.7
Имя класса, при необходимости, может содержать в себе полный путь к данному классу. Имена пакетов должны следовать перед именем класса и разделяться парами двоеточий. Например: