目录
[2、 对象图和类图关系](#2、 对象图和类图关系)
对象图对包含在类图中的事物的实例建模。
对象图显示了在某一时间点上一组对象以及它们之间的关系。
对象图用于对系统的静态设计视图或静态交互视图建模。
对某一时刻的系统快照建模,表示出对象集、对象的状态以及对象之间的关系。
对象之间不会传递消息
对象图不仅对可视化、详述和文档化结构模型是重要的,而且对通过正向工程和逆向工程构
造系统的静态方面也是重要的。
用 UML,可以使用类图来可视化系统构造块的静态方面。还可以使用交互图来可视化系统的
动态方面,交互图由构造块的实例和在它们中间分发的消息组成。对象图包含一组类图中事
物的实例。因此,对象图表达了交互的静态部分,它由协作的对象组成,但不包含在对象之
间传递的任何消息。在这两种情况下,对象图都表示冻结了的系统运动的某一瞬间,
1、对象图的组成
对象、链、注解和约束,有时也把类放在对象图种。
2、 对象图和类图关系
1、类图描述了一般的情形,实例图描述了从类图派生的具体实例。对象图主要包含对象和链。
2、部署图也可以按照一般的和实例的形式出现:
一般形式的部署图描述结点类型,实例形式的部署图描述了由这些类型描述的结点实例的具体配置。
3、对对象结构建模
在构造类图、构件图或部署图时,真正要做的是获取一组感兴趣的抽象,形成一个组,在这
样的语境下,要显现出组中各抽象的语义及其相互之间的关系。这些图只表示出潜在的可能
性。如果类A到类B有一对多的关联,那么类A的一个实例就可能对应着类B的5个实例,类A的
另一个实例还可能只对应着类B的一个实例。此外,在某一给定的时刻,A的实例和相关的B
的实例,它们的属性和状态机都有一定的值。
如果冻结一个运行的系统,或者只想象被建模的系统的某一瞬间,就会发现这样的一组对象
:每一个对象都处于一个特定的状态,并与其他对象有特定的关系。可以用对象图来可视化
、详述、构造和文档化这些快照的结构。对象图对于复杂的数据结构建模特别有用。
在为系统的设计视图建模时,可以用一组类图完整地详述抽象的语义以及它们之间的关系。
然而,用对象图则不能完整地详述系统的对象结构。对于一个类,可以有多个可能的实例,
对于相互间存在关系的一组类,对象间可能的配置是相当多的。因此,在使用对象图时,只
能有意义地显示一组感兴趣的具体对象或原型对象。这就是所谓的为对象结构建模,即对象
图显示了在某一时刻相互联系的一组对象。
识别想为之建模的机制。机制描述了正建模的系统部分的某些功能或行为,它由一组类、接
口和其他事物的交互产生。
例如,下图显示了取自一个自主机器人的实现中的一组对象。该图关注机器人为了计算一
个在其中移动的世界模型而使用的机制中所涉及的对象。运行系统还涉及更多的对象,但是
这幅图只关注直接涉及到创建这个世界视图的那些抽象。
如图所示,一个对象表示机器人自身(r是 Robot的实例),而 r当前处于被标记为
moving的状态中。这个对象有一个到w(World的一个实例)的链,World表示该机器人的世
界模型的一个抽象。
此时,w被连接到Area的两个实例。其中之一(a2)具有分别连接到3个Wall对象和一个
Door对象的链。Wall的每个对象都标有各自的当前宽度,并且都与相邻的Wall对象相连。
像这个对象图显示的那样,机器人已经识别出其所在的区域,该区域三面有墙,另一面有门
4、逆向工程
选择要进行逆向工程的目标。通常将语境设为一个操作的内部,或者与一个特定类的实例相关。
通过使用工具或简单地走查脚本,在特定的时刻停止执行。
识别出在该语境中相互协作的一组感兴趣的对象,并在对象图中表示它们。
按照理解语义的需要,显露这些对象的状态、识别这些对象之间存在的链。
若最终的图过于复杂,则要修剪它------通过删除与需要回答的关于脚本的问题无密切关系的
对象来实现。若图过于简化,则把某些感兴趣的对象的邻居扩充进来,并更深入地显露出各
对象的状态。
通常,必须手工地添加或标记目标代码中非显式的结构。丢失的信息提供了隐含在最终的代
码中的设计意图。
5、对象图构建要求
注重于表达系统静态设计视图或静态交互视图的一个方面。
表示由一个交互图描绘的动态场景中的一个画面。
只包含对理解该方面不可缺少的那些元素。
提供与它的抽象层次相一致的细节,应该只显露出对理解是不可缺少的那些属性值和其他修饰。
不要过分地简化,这样会使读者对重要的语义产生误解。
当绘制一个对象图时,要遵循如下策略。
给出能表达其用途的名称。
对图中元素进行布局,尽量减少线段交叉。
在空间上组织元素,使得在语义上接近的事物在物理位置上也靠近。
用注解和颜色作为可视化提示,以引起对图的重要特征的注意。
根据表达意图的需要,在图中包括每个对象的值和状态。