Вы создаете (создают), родительский элемент (содержат) и удаляют (уничтожают) объекты в графиках Stateflow® через методы конструктора в API Stateflow. Для всех кроме объектов Редактора и Буфера обмена создание объектов устанавливает указатель на них, что можно использовать в доступе к их свойствам и методам, чтобы изменить график.
Объекты Stateflow содержатся (порожденные) другими объектами, как задано в иерархии Stateflow объектов (см. Иерархию Объектов API Stateflow). Вы управляете включением неграфических объектов в Model Explorer.
Вы создаете объект Stateflow как дочерний элемент родительского объекта через методы конструктора API. Каждый тип объекта Stateflow имеет свой собственный метод конструктора. Смотрите Методы конструктора для списка допустимых методов конструктора.
Используйте этот процесс, чтобы создать объекты Stateflow с API Stateflow:
Получите указатель на родительский объект, как описано в доступе к Объектам в Вашей диаграмме Stateflow.
Вызовите соответствующий метод конструктора для создания объекта с помощью родительского (содержащего) объект в качестве аргумента.
Например, эта команда создает и возвращает указатель s
к новому объекту состояния в объекте диаграммы с указателем ch
:
s = Stateflow.State(ch);
По умолчанию недавно созданное состояние от предыдущей команды появляется в левом верхнем углу графика.
Конструктор возвращает указатель на объект API для недавно созданного объекта Stateflow. Используйте этот указатель на отображение или измените объект через его свойства и методы.
Используйте указатель на объект, возвращенный конструктором, чтобы внести изменения в объект в графике.
Например, можно теперь использовать указатель s
определять его имя (Name
свойство) и положение (Position
свойство. Можно также соединить его с другими состояниями или соединениями путем создания Объекта перехода и установки его Source
или Destination
свойство к s
.
Используйте предыдущий процесс, чтобы создать все объекты Stateflow в вашем графике. Для примера того, как создать состояния, видят переходы и объект данных в графике, Создают Графики при помощи API Stateflow.
Нет никакого конструктора для диаграммы Stateflow. Чтобы создать график с API Stateflow, используйте sfnew
функция.
Как обсуждено в предыдущем разделе, Создайте Объекты Stateflow, конструктор API Stateflow устанавливает родительский элемент для недавно созданного объекта путем взятия указателя для родительского объекта в качестве аргумента конструктору.
Когда вы создаете графические объекты (состояния, поля, примечания, функции, переходы, соединения), они появляются полностью в их содержании родительского объекта. В графике графическое включение является необходимым и достаточным условием для установления содержания родительского элемента.
Меняя местоположение графического объекта через его Position
свойство может изменить свой родительский элемент или вызвать неопределенное родительское состояние ошибки. Парсинг графика, в котором ребра одного объектного перекрытия с другим производит неопределенное родительское состояние ошибки, которое не может разрешить синтаксический анализатор Stateflow. Можно проверять на это условие путем исследования значения BadIntersection
свойство Объекта диаграммы, который равняется 1, если ребра графического объекта перекрываются с другими объектами. Установите размер и положение объектов так, чтобы они были отдельными от других объектов.
Когда вы создаете неграфические объекты (данные, события, сообщения), они появляются в Model Explorer на иерархическом уровне их объекта владения. Включение для неграфических объектов устанавливается через Model Explorer только. Смотрите Использование Model Explorer с Объектами Stateflow.
Большинство объектов Stateflow имеет метод деструктора под названием delete
. В этом примере, объекте State, s
, удален:
s.delete;
Предыдущая команда эквивалентна выполнению выбора мыши, и клавиатура удаляют операцию в графике. После удаления графические объекты Stateflow отправляются в буфер обмена; удалены неграфические объекты, такие как данные, события и сообщение. Переменная s
рабочей области все еще существует, но больше не указатель на удаленное состояние.