当前位置: 首页 > 知识库问答 >
问题:

如何使用UML类图通过另一个类表示对一个类的调用

冉丰茂
2023-03-14

在Android中,假设我们有两个类,它们具有启动服务的常用方法,因此我们将它们提取到helper类中:

下图显示了我对表示它的奇怪尝试。我使用了交易窄。我认为这些是活动图,但在uml图中。组织/类别参考。html,这些狭义称为关联可导航性。这就是为什么我用它们来表示图表。在HelperClass和ClassService之间,我使用了正常的关联。在类和服务之间,我使用了一个限制(为了更清楚,它只是提供信息):

我是否将类图与活动图混合在一起?

更新1:尝试用组件图表示:

注意:关于如何使用组件图,我最喜欢的解释是:https://www.ibm.com/developerworks/rational/library/dec04/bell/

更新2:尝试绘制带有建议更改的类图:

更新3:完整类图。事务箭头已由关联更改。已删除用户和系统交互(例如,按开始单击;按开始检测):

共有2个答案

邵博远
2023-03-14

绘制带有操作定义的类图。和时序图,您可以在其中定义两个类的生命线之间的通信。将第三条生命线用于中介并绘制消息。这样您就可以描述两个实例通过中介进行通信。

芮安顺
2023-03-14

是的,你在混合过程和结构。类图是一个结构图,这里没有显示任何进程,只是依赖关系。您可以使用依存关系

Android组件(活动、服务等)的协作应该通过组件图而不是类图来显示。在那里你可以画,发送什么信息,谁给谁打电话等等。类图用于更深入的分析。您也可以在组件图中使用一些类。但是别忘了展示这个类属于哪个组件,就像你忘了在这里做的那样。为此使用嵌套/包含关系。

在活动的箭头上使用“点击”一词。你不是想在这里描述用户界面吗?这是另一个图表。没有用于UI规划的标准图,但我可以建议使用类图元素。但使用类图元素的不是类图,而是UI图。

至于类图:

您可以从活动到服务绘制依赖关系。诸如谁开始、谁停止等信息也可以出现在类图的注释中,或者,如果不是绝对必要的话,将其移动到活动图中。

在关联HelperClass-ClassService上,目标端的乘法应为0。。1、服务不总是有的,不是吗?

Launcher是一个糟糕的原型。最好给类起一个名字启动器,如果你认为它不能解释这种情况,就锚定一个注释。

定义活动类的关系。

所以,你似乎已经试着把4个图放在一个图中。这是行不通的。把它们分开,或者至少清理一下你选择的那一个。如果你正在选择一个图要做什么,选择组件一——它是最常见的,也是最有用的。

编辑:如何显示一个类包含在一个组件中——两种方式。您可以将类包含在组件中,并且可以通过嵌套关系将它们连接起来。这两种方式在内容意义上是等价的。

 类似资料:
  • 在我的项目中,我有3个文件: FXMLController.java这是一个JavaFX文件 FXML。这是另一个JavaFX文件 JavaApplication3.java这个文件只包含我的主要方法: 我想从我的主方法启动我的FXMLController类来运行这个程序。怎么做呢?我写的代码不工作可能是因为我有这个错误“没有找到合适的方法启动”。

  • 我想从class1调用class2,但是class2没有一个可以引用的主函数,比如

  • Java,我们可以从另一个类调用main()方法吗?例如,ClassA应该在命令行上运行,因为它定义了main(String[]args)方法。 我想把这个叫做ClassA,在ClassB里面。是否初始化类的新对象,如 或者是否有一种方法可以在ClassB中传递ClassA的命令行选项。 谢啦

  • 问题内容: 在Python中,有没有一种方法可以从另一个类中调用一个类方法?我正在尝试在Python中旋转自己的MVC框架,但无法弄清楚如何从另一个类的一个类调用方法。 这是我想发生的事情: 我正在从PHP慢慢进入Python,因此我正在寻找与PHP等效的Python 。 问题答案: 更新:刚刚在您的帖子中看到了对它的引用。那不一样。用于获取函数对象,然后使用您的参数调用它 现在是一个实际的函数对

  • 问题内容: 我正在尝试做一个简单的Jform,并从另一个类中调用它。我想在服务器客户端应用程序中使用此Jframe,但是我不知道如何从另一个类打开JFrame类。 就像用户必须选择 1-打开Jframe。 2-退出。 那么我在做什么错呢? 以下是代码: 名为Calculas.java的Jframe类 名为Test.java的测试类 问题答案: 如果这很天真,请原谅我,因为我不是Java程序员的任何

  • 嗨我正在努力解决我面临的问题 我想做的是调用test1类的zahl方法 这是我尝试过的,但它什么也没有返回,即使它应该显示我的错误。