- •Введение в процесс моделирования
- •Жизненный цикл программного обеспечения
- •Понятие технологии разработки программного обеспечения
- •Модели жизненного цикла
- •Rational Objectory Process – модель жизненного цикла
- •Объектно-ориентированный подход к разработке программного обеспечения
- •Сущность объектно-ориентированного подхода
- •Объект и класс
- •Наследование и полиморфизм
- •Унифицированный язык моделирования uml
- •Введение в язык моделирования uml
- •Строительные блоки uml
- •Сущности
- •Отношения
- •Диаграммы
- •Правила языка uml
- •Общие механизмы языка uml
- •Спецификация
- •Дополнения
- •Принятые деления
- •Механизмы расширения
- •Диаграмма вариантов использования
- •Диаграммы классов
- •Шаблоны классов
- •Диаграммы состояний
- •Диаграммы деятельности
- •Состояния действия и состояния деятельности
- •Переходы
- •Ветвление
- •Разделение и слияние
- •Дорожки. Траектория объекта
- •Диаграммы взаимодействий
- •Диаграммы последовательностей
- •Диаграммы кооперации
- •Семантическая эквивалентность
- •Диаграммы компонентов
- •Диаграммы развертывания
- •Литература
Шаблоны классов
Шаблоном называется параметризованный элемент. В таких языках программирования, как C++ или Ada, предусмотрена возможность создавать шаблоны классов, определяющие семейства классов (можно задавать также шаблоны функций, определяющие семейства функций). Параметрами шаблона могут быть классы, объекты или значения. Шаблон нельзя использовать непосредственно; сначала его нужно инстанцировать, то есть конкретизировать. Процесс инстанцирования - это связывание формальных параметров шаблона с фактическими. В результате из шаблона класса получается конкретный класс, с которым можно работать как с любым другим.
Чаще всего шаблоны классов используют при описании контейнеров, чтобы затем инстанцировать их для хранения конкретных элементов, - такой подход делает их безопасными по отношению к типам.
Язык UML также позволяет моделировать шаблоны классов. Как видно из рисунка 9.2, такой класс изображается в точности как обычный, но в верхнем правом углу его пиктограммы находится дополнительная ячейка, нарисованная пунктиром; в ней перечислены параметры шаблона.
Рисунок 9.2 – Шаблоны классов
Диаграммы состояний
Диаграммы состояний - это один из пяти видов диаграмм в языке UML, используемых для моделирования динамических аспектов системы (к их числу относятся также диаграммы последовательностей и кооперации, диаграммы деятельности и диаграммы прецедентов). Под этим подразумевается моделирование поведения реактивных объектов.
В UML для моделирования поведения объекта с точки зрения порядка возникновения событий используются диаграммы состояний. Из рисунка 10.1 видно, что диаграмма состояний - это просто представление автомата, и основное внимание уделено потоку управления от одного состояния к другому.
Рисунок 10.1. Диаграмма состояний
Диаграмма состояний (State diagram) показывает автомат, фокусируя внимание на потоке управления от состояния к состоянию.
Автомат (State machine) – это описание последовательности состояний, через которые проходит объект на протяжении своего жизненного цикла, реагируя на события, - в том числе описание реакций на эти события.
Состояние (State) - это ситуация в жизни объекта, на протяжении которой он удовлетворяет некоторому условию, осуществляет определенную деятельность или ожидает какого-то события.
Событие (Event) - это спецификация существенного факта, который происходит во времени и пространстве. В контексте автоматов событие - это стимул, способный вызвать срабатывание перехода.
Переход (Transition) - это отношение между двумя состояниями, показывающее, что объект, находящийся в первом состоянии, должен выполнить некоторые действия и перейти во второе состояние, как только произойдет определенное событие, и будут выполнены заданные условия.
Деятельность (Activity) -это продолжающееся неатомарное вычисление внутри автомата.
Действие (Action) - это атомарное вычисление, которое приводит к смене состояния или возврату значения. Диаграмма состояний изображается в виде графа с вершинами и ребрами.
Диаграмма состояний обладает свойствами, общими для всех диаграмм, то есть имеет имя и графическое содержание, проецируемое на модель. От прочих диаграмм она отличается именно этим содержанием.
Обычно диаграмма состояний включает в себя:
простые и составные состояния;
переходы вместе с ассоциированными событиями и действиями.
Диаграмма состояний, по сути, составлена из элементов, встречающихся в любом автомате. Она может содержать ветвления, разделения, слияния, состояния деятельности и действий, объекты, начальные и конечные состояния, исторические состояния и т.д. Как и все прочие диаграммы, диаграмма состояний может содержать примечания и ограничения.
Диаграммы состояний применяются для моделирования динамических аспектов системы. Имеется в виду обусловленное порядком возникновения событий поведение объектов любого рода в любом представлении системной архитектуры, включая классы (в том числе активные), интерфейсы, компоненты и узлы.
При моделировании динамических аспектов системы, класса или прецедента диаграммы состояний обычно используются только с целью моделирования реактивных объектов.
Реактивный или управляемый событиями объект - это такой объект, поведение которого лучше всего характеризовать его реакцией на внешние события. Как правило, реактивный объект находится в состоянии ожидания, пока не получит событие, а когда это случается, его реакция зависит от предшествующих событий. После того как объект отреагирует на событие, он снова переходит в состояние ожидания следующего события. Для таких объектов интерес представляют, прежде всего, устойчивые состояния, события, инициирующие переходы из одного состояния в другое, и действия, выполняемые при смене состояния.
Диаграммы состояний предназначены для моделирования поведения одного объекта на протяжении его жизненного цикла. Диаграммы состояний моделируют поток управления от события к событию.
При моделировании поведения реактивного объекта нужно специфицировать главным образом три вещи: устойчивые состояния, в которых может находиться объект, события, которые инициируют переходы из одного состояния в другое, и действия, выполняемые при каждой смене состояния. Моделирование реактивного объекта подразумевает моделирование всего его жизненного цикла, начиная с момента создания и вплоть до уничтожения, с особым акцентом на устойчивые состояния, в которых может находиться объект.
Устойчивое состояние - такое, в котором объект может находиться неопределенно долгое время. Когда происходит некое событие, объект переходит в новое состояние. События могут также инициировать переходы в себя и внутренние переходы, когда исходное и целевое состояния совпадают. В ходе реакции на событие или изменения состояния объект может выполнить некоторое действие.