独家秘诀:用YAKINDU StatechartTools进行Java开发的图形状态机

Neumann 2019-12-05

全文共2602字,预计学习时长8分钟

独家秘诀:用YAKINDU StatechartTools进行Java开发的图形状态机

来源:Pexels

你有没有过看着自己的代码,意识到它实际上是一个正尝试使用的状态机?

通常你会开始使用switch-case语句或采用状态模式。这种方法对于较大的状态机来说难以快速读取和维护。

YAKINDU Statechart Tools附带了一个图形编辑器,可以为状态图建模并自动生成相应的Java代码。人们还可以在图形模型中直接使用Java代码。本文将展示YAKINDU Statechart Tools,并演示操作步骤。

YAKINDUStatechart Tools中的深度Java集成可供人们直接访问状态图中的Java APIs,因此有助于在Java开发过程中促进状态机建模的集成!深度Java集成包含以下功能:

· 可在状态图中导入Java的类(classes)、接口(interfaces) 和枚举 (enums) ,并将它们用于状态图变量。

· 可直接从状态图访问变量、方法等所有公共 (public) 和静态 (static) 的成员,这样可以避免许多样板代码的出现。

· 状态图中使用的Java操作方法可在模拟期间调用。这避免了模拟过程中对返回值进行繁琐的模拟操作。

以下视频包含一千多字,录制这个简短的视频是希望读者能对本文描述的功能有一个印象。请享受观看的乐趣,如果看完后仍存好奇,请阅读下文。

对状态图变量使用Java类型

在YAKINDU中,状态图有一个域(domain)。为了使用本文中提到的功能,须采用Java域。可以在状态图的属性中选择Java域,也可以在创建新的状态图时选择。

独家秘诀:用YAKINDU StatechartTools进行Java开发的图形状态机

Java域状态图需使用面向Java的类型系统。可以在变量声明中使用本机Java 类型(如int)或其包装器类型(如Java.lang.Integer)。

独家秘诀:用YAKINDU StatechartTools进行Java开发的图形状态机

此外,还可以使用import语句导入Java类、接口或枚举。内容助手[Ctrl]+[Space] 列出了项目类路径上的所有类。可以从JRE中导入类,也可以从自己的运行环境中导入。

独家秘诀:用YAKINDU StatechartTools进行Java开发的图形状态机

在状态图中使用Javatypes还意味着可以使用泛型,就像是在Java代码中使用它们一样。

独家秘诀:用YAKINDU StatechartTools进行Java开发的图形状态机

面向Java的类型系统能够推断泛型信息,并在类型不匹配时识别错误。这样便可在生成代码前避免编译错误。

独家秘诀:用YAKINDU StatechartTools进行Java开发的图形状态机

实例化与Java中的实例略有不同。构造函数被转换为名为 new()的静态工厂方法,而不是将关键词new导入状态图语言。

访问公共成员

一旦有了Java type的变量,就可以访问方法、变量等公共成员。同样,内容助手提供了所有可访问成员的概述,其中包含所有公共实例和静态类成员。

独家秘诀:用YAKINDU StatechartTools进行Java开发的图形状态机

在模拟中调用Java APIs

YAKINDUStatechart Tools提供了一个内置模拟工具,用于在生成代码前验证系统行为。可以通过Run-> Run As -> Statechart Simulation 的步骤在上下文菜单中启动模拟。

至于Java域状态图,该模拟直接调用了引用的Java方法。可在模拟视图中查看效果,还可以在该视图中手动更改可访问变量的值,以查看系统反应。还可以在状态图和转换处上设置断点,就像调试Java代码一样。

独家秘诀:用YAKINDU StatechartTools进行Java开发的图形状态机

代码生成及客户代码集成

作者已经调整了YAKINDUStatechart Tools标准版附带的Java代码生成器,以便为Java域状态图生成正确的Java代码。要在Java应用程序中使用生成的状态机代码,需执行以下基本步骤:

private void setup() {

// 1. Initialize the state machine

IPlayerStatemachine statemachine = new PlayerStatemachine();

statemachine.init();

// 2. Raise in-events on button clicks

playBtn.setOnAction((e) -> {

statemachine.getSCInterface().raisePlayPressed();

});

stopBtn.setOnAction((e) -> {

statemachine.getSCInterface().raiseStopPressed();

});

// 3. React on out-events

statemachine.getSCInterface().getListeners().

add(new SCInterfaceListener() {

@Override

public void onPlayBtnEnabledRaised(boolean value) {

playBtn.setDisable(!value);

}

@Override

public void onStopBtnEnabledRaised(boolean value) {

stopBtn.setDisable(!value);

}

});

// 4. Run the state machine

statemachine.enter();

}

行动起来

准备好在Java 项目中使用状态机了吗?以下几点介绍了如何启用状态机:

1. 下载YAKINDU Statechart Tools专业版。

2. 解压已下载的文件并打开应用程序。

3.首先会看到的是欢迎页面。单击Examples并选择Music Player(Java)。

4. 如果按钮右上角出现Install Dependencies 的字样,单击它并按照说明操作。可能需要重启一次应用程序。

5. 点击按钮voilá完成操作,操作界面中会出现音乐播放器示例,就可以使用了。

最后一条是关于许可证的说明。下载YAKINDU Statechart Tools后,可以在没有任何功能限制的情况下使用该应用程序一个月。一个月后,需要购买许可证。但如果不将其用于工作,可以申请学术或非商业许可证。

独家秘诀:用YAKINDU StatechartTools进行Java开发的图形状态机

来源:Pexels

大家尽情享受吧!

独家秘诀:用YAKINDU StatechartTools进行Java开发的图形状态机

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

相关推荐

tuniumobile / 0评论 2018-12-26
陶赫Qt开发学习 / 0评论 2018-12-26