128
}
// Конкретное состояние «Кнопка отпущена, лампа включена»
class Released_On : public State {
... // Аналогично
}
// Конкретное состояние «Кнопка нажата, лампа выключена»
class Pressed_Off : public State {
... // Аналогично
}
3.3.2. Инструментальное средство UniMod
Переходя к обсуждению инструментального средства для поддержки объектно-
ориентированного программирования с явным выделением состояний, отметим, что
если для генерации программ по автоматам кроме средств, рассмотренных в
разд. 2.3.3, известны также и многие другие, то рассматриваемое здесь решение
задачи об автоматизации построения объектно-ориентированных программных
систем со сложным поведением в целом единственное в своем роде. Это объясняется
тем, что по сравнению с другими средствами визуального конструирования
объектно-ориентированных программ (IBM Rational Rose, Borland Together, Telelogic
Rhapsody) их проектирование в инструментальном средстве UniMod осуществляется
так же, как выполняется автоматизация объектов управления в промышленности.
Кроме того, по сравнению с аналогами оно является открытым и бесплатным [70].
Авторы проекта UniMod [69, 71] предложили, во-первых, метод и язык
моделирования для описания систем со сложным поведением (язык является
подмножеством UML), а во-вторых, реализовали инструментальное средство,
которое позволяет описывать системы на этом языке, проверять их корректность,
интерпретировать или компилировать их, и даже отлаживать.
Процесс разработки системы со сложным поведением с помощью этого
инструментального средства состоит в следующем.
1. На основе анализа предметной области производится объектная декомпозиция
системы, определяются сущности и отношения между ними.
2. В отличие от традиционных для объектно-ориентированного программирования
подходов, из числа сущностей выделяются источники событий, объекты
управления и автоматы. Источники событий активны – они по собственной
инициативе воздействуют на автомат. Объекты управления пассивны и
выполняют действия по команде от автомата. Они также формируют значения
входных переменных для автомата. Автомат активируется источниками событий
и на основании значений входных переменных и текущего состояния
воздействует на объекты управления и переходит в новое состояние.
3. С использованием нотации диаграммы классов, строится схема связей автомата,
которая задает его интерфейс. На этой схеме слева отображаются источники
событий, в центре – автоматы, а справа – объекты управления. Источники
событий с помощью UML-ассоциаций связываются с автоматами, которым они