对象图可以被称为系统中实例以及它们之间存在的关系的屏幕截图。由于对象图描绘了对象被实例化时的行为,我们能够研究系统在特定时刻的行为。对象图对于描绘和理解系统的功能需求至关重要。
换句话说,“统一建模语言 (UML) 中的对象图是显示特定时间建模系统结构的完整或部分视图的图。 ”
对象和类图之间的区别 –
对象图类似于类图,只是它显示了系统中类的实例。我们使用类图描绘了实际的分类器及其关系。另一方面,对象图表示某个时间点类的特定实例以及它们之间的关系。
什么是分类器?
在 UML 中,分类器是指具有一些共同特征(如方法、属性和操作)的一组元素。分类器可以被认为是一个抽象元类,它为一组具有共同静态和动态特征的实例绘制边界。例如,我们将一个类、一个对象、一个组件或一个部署节点称为 UML 中的分类器,因为它们定义了一组公共属性。
对象图是使用类似于类图的符号的结构图。我们能够通过实例化分类器来设计对象图。
对象图使用现实世界的例子来描述系统在特定时间点的性质和结构。由于我们能够使用对象内可用的数据,对象图提供了对象之间存在的关系的更清晰的视图。
Figure –一个类及其对应的对象
对象图中使用的符号 –
- 对象或实例规范——当我们在系统中实例化一个分类器时,我们创建的对象代表系统中存在的一个实体。我们可以通过创建多个实例规范来表示对象随时间的变化。我们使用矩形来表示对象图中的对象。对象通常链接到对象图中的其他对象。
图 –对象的符号例如 – 在下图中,Student 类的两个对象链接到 College 类的一个对象。
图 –使用链接和 3 个对象的对象图 - 链接——我们使用链接来表示两个对象之间的关系。
图 –链接的符号我们代表链接每一端的链接参与者数量。我们使用术语关联来表示两个分类器之间的关系。术语链接用于指定两个实例规范或对象之间的关系。我们使用实线表示两个对象之间的链接。
Notation Meaning 0..1 Zero or one 1 One only 0..* Zero or more * Zero or more 1..* One or more 7 Seven only 0..2 Zero or two 4..7 Four to seven - 依赖关系——我们使用依赖关系来显示一个元素何时依赖于另一个元素。
图 –依赖关系的表示法类图、组件图、部署图和对象图使用依赖关系。依赖用于描述系统中依赖实体和独立实体之间的关系。一个元素的定义或结构的任何变化都可能导致另一个元素的变化。这是两个对象之间的一种单向关系。
依赖关系是用关键字指定的各种类型(有时在尖括号内)。抽象、绑定、实现、替换和使用是 UML 中使用的依赖关系类型。
例如——在下图中,Player 类的对象依赖(或使用)了 Bat 类的对象。
图 –使用依赖关系的对象图 - 关联——关联是两个对象(或类)之间的引用关系。
图 –关联符号每当一个对象使用另一个对象时,它就被称为关联。当一个对象引用另一个对象的成员时,我们使用关联。关联可以是单向的或双向的。我们使用箭头来表示关联。
例如 – Order 类的对象与 Customer 类的对象相关联。
图 –使用关联的对象图 - 聚合 –聚合表示“具有”关系。
图 –聚合符号聚合是association.on关系的一种特定形式;聚合比普通关联更具体。它是表示部分整体或部分关系的关联。这是一种父子关系,但不是继承。当所包含对象的生命周期不强烈依赖于容器对象的生命周期时,就会发生聚合。
图 –使用聚合的对象图例如 – 图书馆与书籍有聚合关系。图书馆有书籍或书籍是图书馆的一部分。书籍的存在与图书馆的存在无关。在实现时,聚合和关联没有太大区别。我们在包含对象上使用空心菱形,并用一条线将它连接到包含对象。
- 组合 –组合是一种关联类型,其中子项不能独立存在。
图 –组合符号组合也是一种特殊类型的关联。它也是一种父子关系,但不是继承。考虑一个男孩 Gurkaran 的例子:Gurkaran 由腿和手臂组成。在这里 Gurkaran 与他的腿和手臂有构图关系。如果没有父对象的存在,腿和手臂就不能存在。因此,只要孩子不可能独立存在,我们就使用组合关系。我们在包含对象上使用填充的菱形,并用一条线将它连接到包含的对象。
Figure –使用组合的对象图例如——在下图中,考虑对象 Bank1。这里没有银行就不可能存在帐户。
图 –银行由账户组成
关联和依赖之间的区别 –
关联和依赖在用法上经常混淆。一个混乱的来源是在 UML 1 中使用瞬态链接。现在元模型在 UML 2 中的处理方式不同,问题已经解决。
系统中有大量的依赖项。我们只代表那些对于理解系统至关重要的内容。我们需要了解每个关联本身都意味着依赖关系。但是,我们不想单独绘制它。关联意味着一种依赖,类似于泛化的方式。
如何绘制对象图?
- 为系统绘制所有必要的类图。
- 确定需要系统快照的关键时间点。
- 确定涵盖系统关键功能的对象。
- 确定绘制的对象之间的关系。
对象图的用途 –
- 使用原型实例和真实数据对系统的静态设计(类似于类图)或结构进行建模。
- 帮助我们了解系统应该提供给用户的功能。
- 理解对象之间的关系。
- 可视化、记录、构建和设计一个静态框架,显示对象实例及其在系统动态故事中的关系。
- 通过使用对象图作为特定测试用例来验证类图的完整性和准确性。
- 发现特定实例之间的事实和依赖关系,并描述分类器的特定示例。