当前位置:首页 > 芯闻号 > 充电吧
[导读]在写介绍UML/EA的文章的时候,要不断的理解UML规范。随着理解的深入,感觉到模型提供的信息,应该是可以满足直接执行的要求的。比如下面的活动图:有没有可能让上面的活动图直接执行呢?为了达成这个小目标

在写介绍UML/EA的文章的时候,要不断的理解UML规范。随着理解的深入,感觉到模型提供的信息,应该是可以满足直接执行的要求的。比如下面的活动图:




有没有可能让上面的活动图直接执行呢?为了达成这个小目标,作者编了一段程序。姑且就叫它UML Interpreter吧。


使用方法大致如下:


首先根据UML图搭建C++对象构造,例如上面的活动图翻译成C++程序,就是下面这样。



代 码中出现的 InitialNode,ValueSpecificationAction,AddVariableValueAction,ActivityFinalNode,ControlFlow,ObjectFlow 等UML中的元素,本公众号中都有过介绍。如果有必要可以回头看看以前的文章。


上述代码执行后,得到下面的结果:



这里只是计算了1+1,在第10行也得到了正确的的结果:2.


当然,真正应用时并不需要输入代码构建UML模型,解析UML规范中的XMI文件就可以了。


在EA中输出XMI文件的方法如下:


【Project Browser】中选择对应package,然后打开上下问菜单选择【Import/Export】-【Export package to XMI file...】项目即可输出XMI文件。


上面的文件中包含我们需要的所有信息。


虽然目前只是计算了一个1+1=2,但是也可以计算2+2,如果你愿意再花几个小时的话,它也可以实现四则运算。但更加重要的是UML Interpreter提供了实现活动图的基本思路和扩展的平台,将来可以在此基础上增加其他的功能。


同时作者坚信:


只有真正去实现UML,才能更好的理解UML。



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

其实在 c++语言里面const修饰的才算是一个真正的常量,在 c 语言中 const 可以说是个“冒牌货”。为什么会这样?其实是 c++ 编译器对 const 进行了加强,当 c++ 编译器遇到常量声明时,不会像 c...

关键字: c++ C语言 const

返回函数的引用去初始化一个新的引用这个和前面一样,都是不会产生副本,但是现在是用返回值去初始化一个引用声明c,也就是说这时候变成了变量temp的别名,在c的生命周期内temp是一直有效的,这样做完全可以。

关键字: c++ 返回值 引用声明

C++是一种面向对象的高级程序设计语言,是C语言的超集。

关键字: c++ C语言

9.4.3.1 Features(特征) Each Feature is associated with a Classifier called its featuringClassifier

关键字: ea uml

分析:这是Adobe 公司2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++ 基本功底外,还能考察反应能力,是一道很好的题目。 在Java 中定义了关键字final ,被final 修饰的

关键字: c++ class

泛型算法中的定制操作很多算法都会比较输入序列中的元素,通过定制比较动作,可以控制算法按照编程者的意图工作。本文以string排序为例进行说明,首先是缺省的排序动作: vector v{"This","

关键字: c++

为什么是lambda?讲了这么多天的lambda表达式,有一个很基本的问题没有回答:为什么叫lambda表达式呢?首先这个lambda就是罗马字母λ,lambda表达式即λ表达式。数学上有一个概念叫λ

关键字: c++

在创建类图时,我们提到过增加新类时要保证Language选项为C++。这是因为EA上手时缺省状态的设定值都是Java。每次修改太麻烦,我们介绍一种简单的做法。说明只需一张图。 多少有些画蛇添足,

关键字: ea uml

        假设我们有个函数用来揭示处理程序的优先权,另一个函数用来在某动态分配所得的Widget 上进行某些带有优先权的处理:int priority () ; void processWi

关键字: c++ effective

判断链表中是否有环最经典的方法就是快慢指针,同时也是面试官大多想要得到的答案。       快指针pf(f就是fast的缩写)每次移动2个节点,慢指针ps(s为slow的缩写)每次移动1个节点,如果快

关键字: c++ 链表 快慢指针
关闭
关闭