0°

聊聊UML(4)静态图-对象图



今天我们聊点轻松点的,对象图。

在我们今天理解了对象图之后呢,我们就可以更好的理解后面的“类图”了。

关于对象图

对象图是UML2.4中提出的,但是在UML2.5中却又淡化了的一种图。

你在UML2.5的介绍中基本上搜不到 Object Diagram,除了在Overview部分的惊鸿一瞥。

在UML2.4中,对象图被定义为:

A graph of instances, including objects and data values. A static object diagram is an instance of a class diagram; it shows a snapshot of the detailed state of a system at a point in time.


在UML2.4中,对象图可以说是类图的实例,是一个类在某个生命周期或者时期的实例。


比如人这个类,它的对象图中包括的对象有:婴幼儿、儿童、青少年、成年、老年……


当然根据不同的需要,你可以划分不同的对象实例。

比如,借阅者这个类,可以根据借阅的过程,实例出:借书、还书、补办证件、逾期缴费。


而在UML2.5的Overview部分,把Object Diagram作为一个独立与Class Diagram的内容。

聊聊UML(4)静态图-对象图


换句话说,对象图并不只是类图的某个时期的快照,还可能和其他的图一起搭配使用。

Some other authoritative UML sources state that component diagrams and deployment diagrams containing only instance specifications are also special kinds of object diagrams.


对象图的元素

对象图的元素与类图的元素基本相同,只是对象图的元素更少一些,没有“多重性”。

关于“多重性”我会在类图中做详细的说明。


我觉得对象图更加使用BA来分析、归纳,因为它也不涉及到类图那么复杂的类属性以及操作。


聊聊UML(4)静态图-对象图



对象名

方框里的就是对象名。

如果你要加上这个对象对应的类名,需要写成“对象名:类名”,并且在其下划一道横线,以便与类名进行区分。


当然你也可以只写对象名。


属性

由于对象比较具体,所有的属性值都已经确定,所以呢,通常会在属性的后面列出具体值。


连接

将对象用连线连起来即可,就像上面那张图一样。


不同的画对象图的工具可能会有不同的连接线,比如下面的这张图是用箭头进行连接的,并且在连接上做了一些标识。

这张图也比较复杂,超出了我们BA日常的工作范畴,如果感兴趣的话可以研究一下。

聊聊UML(4)静态图-对象图


如何画对象图

我们先无视UML2.5对对象图的涵义扩展,我们就简单的理解为对象图是类图的实例。

在画对象图的时候,最重要的一点就是,你要清楚你不可能穷尽所有的对象。


我们需要画的是比较重要,我们需要进行分析和追踪的对象。

  • 第一步:分析并且确定我们要画的对象图的范围。

我个人建议的方式是分析那些重要的类,比如用户、订单。

PS,这里涉及到一个问题,到底是先画类图还是先画对象图。我觉得,可以先画简单的类图,然后画对象图,再根据对象图去优化类图。


  • 第二步:在确定的范围内去覆盖需要的功能。


  • 第三步:优化。

我们都知道“神奇的数字7”,也就是说大部分人类可以短期记忆的数量是5=7-2,至9=7+2。

如果你实例出来的对象少于5个,那么说明这个类比较简单,你需要考虑下自己是否真的有必要画对象图。

如果你实例出来的对象多于9个,那么你需要看一下是不是有必要分层绘制,或者进一步分组抽象。


关于对象图的一些思考

根据OOA的思路,“万物皆对象”,再加上UML2.5对对象图的一些扩展。

我个人觉得狭义的对象图,也就是UML2.4中定义的对象图,主要是针对类图的实例化。

而广义的对象图,也就是UML2.5中定义的对象图,主要是将其元素进行了扩展。


因为UML2.5中也没有给出对象图的标准画法,但是,我在网上看到有人把“火柴人”,也就是我们上一篇聊到的“Actor”作为对象图的一个元素。

想想也是有道理的,“Actor”也是一个对象,放在这里也没有什么问题。

但是为了能够更好的与类图或者其他图进行对接,建议还是画方框吧。


另外的一个问题就是对象图与用例图有什么区别

看下面这张我从网上找到的图:

聊聊UML(4)静态图-对象图


其实我们用用例图也可以表达。

这里我们可能需要注意的是,用例图有一个非常重要的作用是“边界”,它划出了系统内外交互的边界。

而对象图是针对某一个对象进行更详细的分析。


虽然上图的对象图粒度已经到了系统设计的层面,但是我们仍然可以看出这些都是针对“一般用户”这个对象的分析。


作为BA,对象图更多的是作为和开发、技术设计人员沟通的工具。

我在想,是不是可以在做用户画像的时候,领域建模的时候使用对象图。



你有啥想法呢?

欢迎留言讨论。



小婧是一名行走在实践路上的资深业务分析师(BA),如果想与我同行,就请关注我吧!

聊聊UML(4)静态图-对象图



「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论