【问题标题】:Non-UML diagrams to show objects and their creation显示对象及其创建的非 UML 图
【发布时间】:2018-06-29 03:30:58
【问题描述】:

我正在尝试了解新项目。我正在绘制 UML 类图,但在这些图中我缺少一些东西:对象的创建。传统的 UML 图可以描述的是这些类如何相互关联,以及这些类的实例如何与其他类的其他对象关联,但那是在它们已经创建的那一刻。有时谁创造谁并不那么明显,有时这完全是误导。例如,A 类的对象可能会创建 B 类的对象,但 A 对象只是返回此 B 对象并将其提供给其他人,并且不包含对它的任何引用。有时它持有(引用或指针)。有时它对读者很重要。所以实际上有两种类型(片断)的信息:持有和创造。我想出了自己的可视化方式,但也许这里有一些标准?你怎么看?而且我没有想到 UML 对象图,这在阅读 C++ 或 Java 代码并试图理解类和对象的关系时不是很有帮助。而且不是序列图,那是另一种野兽。

【问题讨论】:

  • 您在软件开发中使用特定的软件方法吗?
  • 嗯...我不明白你的问题。你到底是什么意思?
  • 例如:基于 RUP 的方法,或基于敏捷或 Scrum 或其他。
  • 是的,画一些有用的东西。也许在 100 年后它将值 100 万比特币。阅读欧几里得对托勒密所说的关于数学的内容。设计是一样的。
  • 我很惊讶您显然不愿意考虑序列图,因为它们是记录程序中发生的事情的绝佳方式。这是我在尝试理解复杂的 C++/Java 代码时经常做的事情:使用类图创建类,为本地操作/方法创建活动,为使用来自另一个类的操作创建序列图,在创建全局概览时组合片段系统。

标签: uml


【解决方案1】:

如果您想坚持使用类图,可以使用 UML Standard Profile(UML 2.5 规范的第 22 章)中的 «create» 使用依赖项。

«创建» |用法 |表示客户端分类器创建实例的使用依赖关系 供应商分类器。

例如这里 A 创建了 B 的一个实例,而 C 只是对 B 的引用。

【讨论】:

  • 谢谢。我想这正是我想要的。
【解决方案2】:

type of UML diagrams 通过抽象系统的其他方面仅显示系统的一个特定视图。例如,class diagram 仅显示系统的静态方面,而不显示动态行为,例如:

创建对象的时间

系统建模的核心思想是尝试一次处理(或关注)一个方面,同时通过忘记系统的其他方面来消除复杂性。

在这种情况下,“由谁(另一个对象)在特定时间创建一个对象”应该处理行为视图,因此,我们可以使用sequence diagram对动态行为进行建模:

可以在图中看到一个序列图的Dimension:

  1. 横向,对象生命周期
  2. 垂直,时间

然后您可能会感兴趣,我如何将这些模型关联在一起?他们之间会不会有什么矛盾?正确的!如果您对此感到困惑,那么您就在正确的轨道上!

看!模型是相互联系的,举个例子,你可以创建一个use case,一个用例可以细化多个场景,然后..每个场景都可以用时序图建模,时序图提示您构建系统需要哪些对象(以及其中的哪些操作和属性),对吗?

【讨论】:

  • 你说得对,但是……你生活在一个完美的世界里。当然,最好给自己几个星期的时间来绘制所有这些漂亮的图表,然后查看它们并了解系统。但在普通开发人员进入一个新项目并且必须快速实现用户故事的情况下,这不是一种选择。他或她不会画出所有这些图表,而是会快速绘制一些草图,以便将所有软件一次放在一张纸上,并对整体设计充满信心。当我问这个问题时,这就是我正在寻找的东西。
猜你喜欢
  • 2018-10-06
  • 2014-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多