【问题标题】:what is the equivalent of a (python-)module in UML什么是 UML 中的(python-)模块的等价物
【发布时间】:2016-06-04 05:44:36
【问题描述】:

在UML中,似乎没有任何元素相当于python中的模块,或者至少我还没有弄清楚。

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

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

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

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

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

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

【问题讨论】:

标签: python uml visual-paradigm


【解决方案1】:

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

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

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

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

导入通常显示在包图中。

所以是的,你的思路很好。

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 2011-09-03
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    相关资源
    最近更新 更多