对象图描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看做是类图在某一时刻的实例。

8.1 对象图的概念

  • 一个对象图主要集中在特定的对象实例和其槽,以及实例之间的连接。
  • 同一个类图所对应的对象图可以有多个,多个对象图合在一起共同展示了随着时间的推移,在不同时间点系统的对象状态。
  • 与类图的抽象性相比,对象图是具体的,其通常用来提供所对应类图的结构示例,或者作为所对应类图的测试用例。

    8.2 对象图的表示

    实例的记号和类一样,但是取代顶端区域中仅有的类名,它的名字是经过拼接的: Instance Name : Class Name

  • 对象名:由于对象是一个类的实例,因此其名称的格式是“对象名:类名”,这两个部分是可选的,但如果是包含了类名,则必须加上“:”,另外为了和类名区分,还必须加上下划线。

  • 属性:由于对象是一个具体的事物,因此所有的属性值都已经确定,因此通常会在属性的后面列出其值。
  • 关联关系必须与类图的关系相一致,而且关联的角色名字也必须与类图相一致。

    8.3 对象图术语

    在UML中,对象实例是采用实例规范(instance specification)来表示的,对象实例所具有的结构化特性(feature)是采用槽(slot)来表示的,对象实例与对象实例之间的关系则是采用连接(link)来表示。
    与类图相对比

  • 实例对应于类对象

  • 槽对应于类属性的实例
  • 连接则对应于类与类之间关联的实例
    1. 槽(slot)是用于表示实例规范中被建模实体结构特征的值,槽对应于类图中类的属性,是类属性的实例
    2. 一个槽具有三个属性:
      1. definingFeature 表示这一槽所对应的结构化特性是什么。
      2. owningInstance 表示这一槽是属于哪一个实例规范的。
      3. value 指示槽的值是多少。

        8.4 对象图和类图的区别

  • 类图:
    • 类具有3个分栏(类名、属性及操作);
      • 在类的类名分栏中只有类名;
      • 类的属性分栏定义了所有属性的特征;
      • 类中列出了操作;
    • 类使用关联连接,关联使用名称、角色、多重性以及约束等特征定义。
  • 对象图:
    • 对象只有2个分栏(名称、属性);
      • 对象的名称形式为“对象名:类名”;
      • 匿名对象的名称形式为“:类名”;
      • 对象只定义了属性的当前值; 对象图中不包含操作;
    • 对象使用链连接,链拥有名称、角色,但是没有多重性。