【问题标题】:How to represent the call to a class through another class using an UML Class Diagram如何使用 UML 类图表示通过另一个类对类的调用
【发布时间】:2014-02-06 01:51:05
【问题描述】:

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

下图显示了我表示它的奇怪尝试。我使用了交易范围缩小。我认为这些是针对活动图的,但在 uml-diagrams.org/class-reference.html 中,这些范围被称为 Association Navigability。这就是为什么我使用它们来尝试表示图表。在 HelperClass 和 ClassService 之间,我使用了正常的关联。在课程和服务之间我使用了一个限制(它只是提供信息,以便更清楚):

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

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

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

更新 2:尝试使用建议的更改绘制类图:

UPDATE 3:完整的类图。交易箭头已被协会更改。用户和系统交互已被删除(例如,startsWhenClick 由开始;startsWhenDetection 由开始):

【问题讨论】:

  • 优秀。只有我会将 HelperClass 显示为一个类,并显示它属于哪个组件。
  • 请注意,IBM 理性非常符合 UML 标准。他们有自己的标准,你可能会在理解上遇到问题。
  • @Gangnus,我保证我实际上不知道如何表示你所说的(HelperClass 作为一个显示它所属组件的类)。另一方面,在 UPDATE 2 中,我还添加了一个新的类图,试图遵循您的建议。当它与数据库无关时使用类图对我来说很奇怪,特别是指定乘法。好吗?
  • 查看版本。不,最后一个是迈向可怕过去的一步:-)
  • 只需更改 Comp.Diag。帮助类到类块并将嵌套连接添加到包含它的组件。或者……啊!类本身就是一个组件,不是吗?它完全不属于任何其他活动或服务,是吗?那么,您的第二次诊断是正确的。

标签: android uml class-diagram


【解决方案1】:

是的,您正在混合流程和结构。类图是一个结构图,这里没有显示过程,只是依赖关系。您可以使用依赖项 进行实例化,但这仅意味着一个类需要另一个类以及用于什么。是的,它有点关于流程,但主要是类图是关于结构的。

Android 组件(Activity、Services 等)的协作应该用组件图来展示,而不是类图。在那里你可以画,发送什么消息,谁给谁打电话等等。类图用于更彻底的分析。您也可以在组件图中使用一些类。但是不要忘记显示该类属于哪个组件,就像您在这里忘记的那样。为此使用嵌套/包含关系。

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


关于类图:

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

在关联 HelperClass - ClassService 上,目标端的乘法应该是 0..1。服务并不总是在那里,是吗?

Launcher 是一个糟糕的刻板印象。最好给班级起个名字 Launcher,如果你认为它不能解释情况,请在上面加上注释。

活动类的关系没有定义。


看来,您已尝试将 4 个图表合二为一。它永远不会起作用。将它们分开,或者至少清洁您选择的那个。如果您正在选择要做什么一张图,请选择组件一——它是最常见的,也是最有用的。

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

【讨论】:

【解决方案2】:

绘制带有操作定义的类图。和序列图,您可以在其中定义两个类的生命线之间的通信。为调解员设置第三条生命线并绘制消息。这样你就可以描述两个实例通过中介进行通信了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    相关资源
    最近更新 更多