9

在 UML 中,似乎没有与 python 中的模块等效的元素,或者至少我还没有弄清楚。

python 中的一个模块,由一个 .py 文件表示,有一个标头,其中表示导入。它可以包含许多类,所有类都在模块命名空间中,并且可以直接相互通信并可以访问模块已导入的包/模块/类。我怎样才能在图表中画出这个?

更新1:最后,我偶然发现了一个网页,在那里我找到了一些似乎相关的东西......在这个网站上(http://www.alan-g.me.uk/l2p/tutclass.htm) “混合类和模块”一章,作者说:

“......我们可以通过两种方式在 UML 中以图形方式表示。类的逻辑分组可以使用包来表示,或者我们可以将物理文件表示为组件......”

如果这是正确的,python 中的模块就像 UML 中的组件。我仍在试图弄清楚这是如何工作的(因为在我看来 UML 中的组件与 python 中的模块不同),以及我可以如何准确地以及在哪个图表中对其进行建模。

更新 2:我正在使用视觉范式社区版(没有它的代码生成功能)对其进行测试。现在,我能够看到,在 UML 模型中,组件元素具有类似文件夹的行为,就像一个包。当我将鼠标悬停在组件中包含的类上时,我可以看到我想要的效果,该组件代表自己的命名空间。

现在(如果这是对其建模的正确方法),我在哪里可以指定,该模块应导入哪些其他包/模块/类?当我在视觉范例中选择一个包时,它为我提供了一个导入包的选项。但是当我选择一个组件时,没有提供导入功能。提前非常感谢。

4

1 回答 1

2

请注意,模块概念只是在 Python 中提供代码可重用性和组织的一种方法。Python 模块与 UML 包和组件之间的链接不是直接的,而是取决于特定模块的角色。

抱歉,我不是用 Python 编程的,所以我可能对典型的模块用法有不正确的理解(或者我可能会错过一些东西)。但是,据我了解文档,您可以将 Python 模块用于两个基本但略有不同的目的。它可能代表一个组件(即系统的一部分)或一个库(即可重用的类集)。

前者在 UML 中具有直接表示,即组件。请注意,组件是其拥有的(包括导入的)元素的命名空间。然而,组件还不能作为命名空间导入,它可以导入包(见下文)。

另一方面(对于库),在 UML 中,您有一个包,您可以轻松地使用它来对应该可导入的模块进行建模。包也是一个命名空间,但它可以由任何其他 Namespece(例如其他包和组件)导入。当 Package 被导入到某个 Namespece 时,它​​拥有的元素在导入 Namespace 中变得可用(有一些限制,请参阅 UML 规范的 7.4.3.3 和 12.2.3.2 以获得更多详细信息)。

导入通常显示在包图中。

所以是的,你的思维方向是好的。

于 2016-06-03T21:44:36.437 回答