从图表/ UML /可视表示中生成Python代码

时间:2020-05-19 20:06:05

标签: python uml code-generation

我有一些Python类,可以用某种可视化工具来管理。每个类都有一些可以执行操作的方法(同时也可以接受参数或返回值或其他类实例)。

让我们说这些类是“人”,“帽子”和“手表”。现在,假设“人员”具有方法getName()putOn(object)

从代码的角度来看,将“手表”或“帽子”附加到“人”(鉴于我刚刚提到的类)将很容易:

person = Person()
if person.getName() == "Fred":
    handwatch = Handwatch()
    person.putOn(handwatch)
else:
    hat = Hat()
    person.putOn(hat)

但是,如果我希望能够“绘制”类实例之间的这种相互作用怎么办?

想象一下一个类似于UML的可视化工具,该工具可以让我通过从“类”的调色板中拖放这些类的“实例”来“表示”代码,然后生成与该类行为完全相同的代码。 / p>

enter image description here

我是否可以使用任何库来乞求实现类似的东西?也许甚至还有一些有关该主题的文献?

1 个答案:

答案 0 :(得分:2)

您不必要求从生成代码(图表是模型的一部分的标准化图片),您需要一种工具来从活动(可以在图表中显示)。

作为状态机,活动是一种行为,可以表示操作的定义,例如与交互相反(可以通过序列图显示)

在您的代码中,获取新创建的 Person 的名称似乎是人为的,该名称在创建时未在参数中给出。假设实例是通过输入参数 person 接收的,表示您的代码的活动可以是:

enter image description here

其中绿色的动作是调用操作动作(被调用的操作命名为要清除),蓝色的是创建对象动作(其名称表示班级要明确)。

另外,为了使图表更加清晰, pin “名称”实际上具有方向 return

从该活动生成Python代码并没有什么不对的地方,请注意还可以帮助您将动作定义为不透明形式,以便您可以直接放置Python代码。

我知道建模者会这样做吗?不,对不起,甚至我曾想像要通过{em> plugin-out 在BoUML中进行操作,就像制造状态机生成器(生成C ++代码)的方式一样,但是没人要求。所以,就这样做吗?

相关问题