3.1 基于对象的系统瞬问状态建模
我们经常需要考虑软件系统在运行过程中决定它某种行为的瞬间状态是什么,因为在系统运行时,系统的瞬间状态( State) 决定了那一时刻的系统行为特点 ,由于运行中的软件系统的基本组成单位是以对象( Objec t ) 的形式存在的,所以,系统的瞬间状态实际上是由所有参与系统运行的对象的状态所决定的。为了确定在某个特定的时间点上系统行为的状态,需要建立系统在那一时刻所有相关联对象的状态模型,UML 用 对象 图 为这个需要建立模型。
对象图为对象瞬间状态建模,这种建模就像在某 个时间点上给系统的所有参与对象拍下一 张对象状态的快照,这张照片描述了系统在这个时间点上的一系列对象的状态值和它们之间的链接。
3. 2 对 象 图
对象图由对象和对象间的链组成,可以表示为:

3.3 对象图的表示方法
3.3.1 对象
对象( Object)是真实世界中的一个物理上或概念上具有自己状态和行为的实体。UML表示对象的方式十分简单:在矩形框中放置对象的名字,名字下加上下划线表 示这是一个对象。对象名的表达遵循的语法为:

这种表达方法的每个部分都是可选的,因此 ,对象名可以有三种表达形式:
(1) o bjec tname
(2) objectname: ClassName
( 3 ) : ClassName
注意它们都有一个下划线。
例如,类 Order 的对象可写为 myOrder ,如图 3 - 1 所示。
但是,如果表示 myOrder 这个对象所实例化的类的时候,可以 用第二种表达方式,如 图 3- 2 所示。
当对象的名字在上下文环境 ( Conext ) 中并 不 重 要 的 时候 ,也 可以使用一个匿名对象( Anonymous O bjec t ) 来表示对象 ,即 只 用 类 名 字 加下划线表示对象,如图3-3所示

还可以 用两栏的矩形框来描述一个对象,第一栏放置对象名,第二栏放置该 对象的属性。对象图中属性的表达方式 为:

at t ri b u t e s na m e 是属性的名字,t y p e 表示属性的类型,va l ue 是属性的状态值。图 3-4 给出 了类 C o m pa n y 的对象 m yC o m pa n y 及其属性 。

注意 ,对象图 中只列出属性 和它的状态值,而不列出行 为。这是因为对象 图关心的是系统对象 瞬间状态 ,而不是每个对象 所具有的行 为。
3.3.12 链
有的时候仅表示对象 本身并不重要 ,更多时候,需 要表达对象之间在系统的某一个特定的运行时刻是如何 在一起工作的,这就需 要展示对象之间的关系。对象图用链将这些对象捆绑在一起,U ML 将其称为 Li nk ,即链。UM L 用实线表示链,如图 3-5 所示 ,在链上可以加一个标签表示此链接的目的,如 m a na g e r和 e m p l o y e e ,标签是可选的。

3. 4 总 结
本章介绍的对象图描述的是在某个时间点 上系统的一 系列对象、它们之间的 链接和状态。它关注的是所有参与 对象当时的状态,它并不关注对象 之间的关系。过于细致的对象图会降低系统模型的抽象程度,这不利于从更高的层次理解整个系统的架构 和运作。但是通过描述对象 图来证明 系统运行 瞬间行为的准确性时,对象图 模型是一种有效的工具。

