python中的一个模块,由一个.py文件表示,有一个标题,表示导入。它可以包含许多类,所有类都在模块命名空间中,可以直接相互通信,并可以访问模块导入的包/模块/类。我怎样才能在图表中绘制这个?
更新1: 最后,我偶然发现了一个网页,在那里我发现了一些似乎相关的东西...... 在本网站(http://www.alan-g.me.uk/l2p/tutclass.htm)的章节"混合类和模块"中,作者说:
" ...我们可以通过两种方式在UML中以图形方式表示。合乎逻辑的 可以使用Package表示类的分组,也可以使用 将物理文件表示为组件...."
如果这是正确的,python中的模块就像UML中的一个组件。 我仍然试图弄清楚,这是如何工作的(因为我认为UML中的一个组件与python中的模块不同),以及我可以在哪个图表中对其进行建模。
更新2: 我正在使用视觉范例社区版(没有它的代码生成功能)对其进行测试。现在,我能够看到,在UML模型中,component-element具有类似文件夹的行为,就像包一样。当我用鼠标悬停在组件中包含的类上时,我可以看到代表自己命名空间的组件所需的效果。
现在(如果这是建模的正确方法),我可以在哪里指定这个模块应导入哪些其他包/模块/类?当我在视觉范例中选择一个包时,它为我提供了一个导入包的选项。但是当我选择一个组件时,没有提供导入功能。非常感谢。
答案 0 :(得分:1)
请注意,模块概念只是一种在Python中提供代码可重用性和组织的方法。 Python模块与UML包和组件之间的链接不是直接的,取决于特定模块的角色。
抱歉,我不是用Python编程,所以我可能对典型的模块使用情况有不正确的理解(或者我可能会错过一些东西)。但是,据我了解文档,您可以使用Python模块两个基本但有点不同的目的。它可能代表一个组件(系统的一部分)或一个库(即可重用的一组类)。
前者在UML中具有直接表示,即组件。请注意,Component是其拥有(包括已导入)元素的命名空间。但是,组件无法作为命名空间导入,它可以导入包(见下文)。
另一方面(对于库),你有一个可以轻松用来模拟应该可导入的模块的包。 Package也是一个命名空间,但它可以由任何其他Namespece导入(例如其他包和组件)。当Package被导入某些Namespece时,其拥有的元素在导入Namespace中可用(有一些限制,有关详细信息,请参阅UML规范的7.4.3.3和12.2.3.2)。
导入通常显示在包装图中。
是的,你的思维方向很好。