- UML 教程
- UML - 首页
- UML - 概述
- UML - 构建块
- UML - 架构
- UML - 建模类型
- UML - 基本符号
- UML - 标准图
- UML - 类图
- UML - 对象图
- UML - 组件图
- UML - 部署图
- UML - 用例图
- UML - 交互图
- UML - 状态图
- UML - 活动图
- UML - 总结
- UML 2.0 概述
- UML 2.0 - 概述
- UML 有用资源
- UML - 有用资源
- UML - 知识测试
- 实用工具
- UML - 工具与实用工具
- UML - 讨论
UML - 对象图
对象图是从类图派生的,因此对象图依赖于类图。
对象图表示类图的一个实例。类图和对象图的基本概念是相似的。对象图也表示系统的静态视图,但此静态视图是系统在特定时刻的快照。
对象图用于呈现一组对象及其关系作为实例。
对象图的目的
要实际地实现对象图,必须清楚地理解其目的。对象图的目的与类图类似。
不同之处在于,类图表示由类及其关系组成的抽象模型。然而,对象图表示特定时刻的实例,其本质是具体的。
这意味着对象图更接近实际系统的行为。其目的是捕获系统在特定时刻的静态视图。
对象图的目的可以概括为:
正向和反向工程。
系统的对象关系
交互的静态视图。
从实践的角度理解对象行为及其关系
如何绘制对象图?
我们已经讨论过,对象图是类图的一个实例。这意味着对象图由类图中使用的实例组成。
因此,这两个图都是由相同的基本元素组成,但形式不同。在类图中,元素是抽象形式,用于表示蓝图;在对象图中,元素是具体形式,用于表示现实世界中的对象。
为了捕获特定系统,类图的数量是有限的。但是,如果我们考虑对象图,则可以有无限数量的实例,这些实例本质上是唯一的。只考虑那些对系统有影响的实例。
从上面的讨论可以看出,单个对象图无法捕获所有必要的实例,或者更确切地说,无法指定系统的全部对象。因此,解决方案是:
首先,分析系统并确定哪些实例具有重要数据和关联。
其次,只考虑那些能够覆盖功能的实例。
第三,进行一些优化,因为实例的数量是无限的。
在绘制对象图之前,应记住并清楚地理解以下几点:
对象图由对象组成。
对象图中的链接用于连接对象。
对象和链接是用于构建对象图的两个元素。
之后,在开始构建图表之前,需要确定以下事项:
对象图应该有一个有意义的名称来指示其目的。
要识别最重要的元素。
要阐明对象之间的关联。
需要捕获不同元素的值以包含在对象图中。
在需要更多清晰度的地方添加适当的注释。
下图是一个对象图的示例。它表示我们在类图章节中讨论过的订单管理系统。下图是系统在特定购买时间的实例。它包含以下对象:
客户
订单
特价订单
普通订单
现在,客户对象 (C) 与三个订单对象 (O1、O2 和 O3) 关联。这些订单对象与特价订单和普通订单对象 (S1、S2 和 N1) 关联。客户在考虑的特定时间有以下三个订单,编号分别为 (12、32 和 40)。
客户将来可以增加订单数量,在这种情况下,对象图将反映这一点。如果观察订单、特价订单和普通订单对象,您会发现它们具有一些值。
对于订单,值分别为 12、32 和 40,这意味着对象在捕获实例的特定时刻(此处,购买完成的特定时间被视为时刻)具有这些值。
特价订单和普通订单对象也是如此,它们的订单数量分别为 20、30 和 60。如果考虑不同的购买时间,这些值将相应地发生变化。
下图是考虑上述所有要点绘制的对象图。
在何处使用对象图?
可以将对象图想象成在特定时刻运行系统的快照。让我们考虑一个正在运行的火车为例。
现在,如果您拍摄正在运行的火车的照片,您会发现它具有以下静态图像:
正在运行的特定状态。
特定数量的乘客,如果在不同的时间拍摄照片,这个数量将会改变。
在这里,我们可以想象正在运行的火车的照片是一个具有上述值的物体。对于任何现实生活中简单或复杂的系统,这都是正确的。
简而言之,可以说对象图用于:
制作系统的原型。
反向工程。
对复杂数据结构建模。
从实践的角度理解系统。