Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 400107.doc
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
568.32 Кб
Скачать

Жизненные циклы

Любой объект может находиться в разных состояниях и переходить из одного состояния в другое, другими словами, иметь динамическое поведение. Переход от одного состояния в другое означает изменение значения одного или нескольких атрибутов. Разумеется, обратное утверждение в общем случае неверно; изменение значения атрибута (ов) не обязательно означает переход в другое состояние. В ряде случаев для понимания динамического поведения объектов рекомендуют составить модель состояний, отражающую жизненные циклы объектов. Такую модель желательно построить в следующих случаях.

Объекты создаются и уничтожаются (активизируются и деактивизируются) в ходе работы.

Объекты мигрируют от одного класса к другому (в пределах одного суперкласса).

Объекты накапливают значения своих атрибутов постепенно, на протяжении жизненного цикла.

Объект отчетливо проходит через разные стадии цикла.

Объект возникает или производится поэтапно.

Объект вступает в связи и выходит из них.

Если объект – это оборудование, нормальное функционирование или сбой которого оказывает влияние на другие объекты.

Если нет ни одного из перечисленных случаев, то можно обойтись и без этой модели.

Понятие класс отражает существенные черты множества объектов. Поэтому в дальнейшем будем говорить о жизненных циклах классов, подразумевая, что таким же являются жизненные циклы всех объектов данного класса. Переход объектов класса из одного состояния в другое задает характерные черты их поведения. Исследование жизненных циклов проводим, исходя из следующих предпосылок:

Объект может в любой момент времени находится только в одном состоянии.

Переход от одного состояния в другое происходит скачкообразно;

Имеются четкие критерии, позволяющие отличить одно состояние от другого

Допустимы не все переходы между состояниями: часть переходов противоречит законам природы, часть правилам эксплуатации.

Существуют инциденты, заставляющие выполнить переход от одного состояния в другое.

Чередование состояний образует жизненный цикл, который может быть представлен на модели состояний, состоящей из:

множества состояний;

множества инцидентов;

правил перехода указывающие, какое новое состояние достигается, если с объектом в данном состоянии происходит некоторый инцидент;

действий, которые должны быть выполнены при достижении объектом определенного состояния.

Модель состояний можно представить графически в виде диаграммы переходов или в виде таблицы. Проиллюстрируем это на примере, заимствованном из [7]. Составим модель состояний для простой микроволновой печи, которая работает по следующим правилам.

Если дверь печи закрыта, и Вы нажмете на единственную кнопку управления, то печь будет включена на одну минуту.

Если Вы во время работы печи нажмете на кнопку, то каждое нажатие добавляет одну минуту.

Нажатие кнопки при открытой двери не имеет никакого эффекта.

В печи имеется лампочка, которая горит во время приготовления пищи или когда дверь открыта.

При открытии двери нагревательный элемент выключается независимо от того исчерпано время или нет.

Если время истекло, то будут выключены как нагревательный элемент, так и лампочка.

При закрытой двери и выключенном нагревателе лампочка не горит.

Модель состояний ниже представлена в виде таблицы (табл. 2.1.), а на рис. 2.8. – графически.

Таблица 2.1.

События

Состояния

Нажата кнопка

Время истекло

Открыли дверь

Закрыли дверь

1.Без действия, дверь закрыта

2

Невозможно

5

Невозможно

2.Приготовление

3

4

6

Невозможно

3.Удлинение приготовле-ния

3

4

6

Невозможно

4.Приготовление завершено

Игнорируется

Невозможно

5

Невозможно

5.Без действия дверь открыта

Игнорируется

Невозможно

Невозможно

1

6.Приготовле-ние прервано

Игнорируется

Невозможно

Невозможно

1

Таблицу следует понимать следующим образом: если объект был в состоянии 1 (без действия, дверь закрыта) и поступило событие “Нажата кнопка”, то объект переходит в состояние 2.

Рассмотрим более подробно составные части модели состояния.

Состояние – это положение объекта, которое характеризуется набором соответствующих значений его атрибутов, применяемым набором правил поведения. Каждому состоянию присваивается уникальный номер в пределах модели. Различают состояние создания, текущее и заключительное. В состоянии создания объект появится впервые, для него отсутствует предшествующее состояние. Текущее состояние – это одно из многих состояний, в котором может находиться объект. Заключительное состояние – это конец жизненного цикла объекта. В этом состоянии объект либо уничтожается, либо его дальнейшее поведение рассматривается на другой модели. Различают два типа жизненных циклов.

Циклические, в нем отсутствуют состояния создания и заключительное состояние, объекты двигаются циклически между состояниями. Пример такого цикла был приведен выше.

Рождение – смерть, объект создается, проходит ряд состояний и исчезает.

Закрыли дверь

1 Без действий, дверь закрыта

5 Без действий, дверь закрыта

Открыли дверь 5.Порождается:

Вкл. Лампочку

1.Порождается 6.Порождается

Выкл. лампочку Выкл. нагреватель Открыли дверь

6 Приготовление прервано

Нажать на кнопку

Окрыли дверь

2 Приготовление пищи

  1. 2.Порожлаются:

-установить счетчик времени(1 мин.)

включается нагревательный элемент

и лампочка

Нажать на кнопку Время истекло

4 Приготовление завершено

3 Увеличение времени приготовления

Время истекло

3.Порождается: 4.Порождаются

Добавляется 1(2,3,…) мин. -Выкл. нагреватель

-Выкл. лампочка

-Звучит сигнал

Нажать на кнопку – события

3.Порождается: событие, порождаемое при достижении состояния 3.

Рис. 2.8. Модель состояний

Событие – это абстракция инцидента или сигнала, сообщающее о передвижении чего-либо в новое состояние. Каждое событие имеет значение, предназначение, метку и данные. Значение события заключается в короткой фразе, сообщающее, что произошло. Предназначение события – это состояние, которое принимает событие. Метка события – это его идентификатор, позволяющий отличить одно событие от другого. Данные события включают идентифицирующие данные, позволяющие определить, какому объекту предназначено событие и дополнительные данные, необходимые для обеспечения реакции на это событие. Один инцидент в реальном мире может стать причиной более чем одного события на модели состояний. На стадии ООА необходимо составить список инцидентов и проанализировать, к каким событиям они приведут. Сюда же относится и анализ отказов: отказ – это тоже инцидент, который может быть отражен на модели состояний обычным образом.

Действие – это операция, которая должна выполняться объектом, когда он достигает определенного состояния. На стадии ООА рассматриваем классы, предполагая, что все объекты класса в аналогичной ситуации выполняют идентичные действия. Начало действия обеспечивается данными события, вызвавшим переход. Действие может:

выполнить вычисления;

порождать новые события для любого объекта любого класса;

читать и записывать атрибуты других объектов собственного или других классов;

менять атрибуты объекта.

Действие должно:

сохранить объект непротиворечивым;

сохранить связи объекта непротиворечивыми;

модифицировать атрибуты объекта с учетом поступившего события.

Действия описываются обычно прямо на модели.

Если объект имеет внутреннюю структуру, то жизненные циклы объекта в целом и его составных частей координируются. Событие для объекта в целом как правило, порождает множество действий, направленных на составные части объекта.

До сих пор рассмотрение жизненного цикла ограничивалось двухуровневой модели класс – объект. Возникает вопрос, на каком уровне построить модель состояний, если имеется структура суперкласс – класс – объект? Необходимо различать два случая:

Миграция, когда один и тот же объект может принадлежать разным классам в течение жизненного цикла, но все эти классы относятся к одному суперклассу.

Немиграция, когда объект в течение жизненного цикла принадлежит только одному классу.

В случае миграции составляют несколько моделей жизненных циклов.

Для суперкласса: включает все переходы между классами и состояния, через которые проходят объекты, когда они принадлежат разным классам этого суперкласса.

Для каждого класса: отражает только состояния своего класса, возможно более подробно, чем на модели суперкласса.

В случае немиграции возможны варианты:

жизненные циклы суперкласса и класса отличаются несущественно – составляют одну модель (для суперкласса), возможно с разветвлениями (рис. 2.9.).

отличаются существенно – придется составить разные модели.

Результаты исследования жизненных циклов:

Модель состояний, представленная с помощью диаграммы переходов, описания всех действий на диаграмме.

Список определенных на модели событий, например, в виде таблицы.