[跟我学UML] UML中的对象图
UIS UML Infrastructure Specification UML基础结构规范
UML Unifed Modeling Language 统一建模语言
USS UML Superstructure Specification UML上层结构规范
参考资料
《UML Infrastructure Specification, v2.2》
《UML Superstructure Specification, v2.2》
《UML类图中的关联、聚合和组合》
《UML类图中的依赖》
《UML类图中的泛化》
《UML类图中的类》
《UML包图中的包和命名空间》
1 对象图
对象图用于描述被建模系统的模型元素实例之间的结构化信息,其所表达的是特定时间被建模系统在结构上的部分或是全部视图。一个对象图主要集中在特定的对象实例和其槽,以及实例之间的连接。同一个类图所对应的对象图可以有多个,多个对象图合在一起共同展示了随着时间的推移,在不同时间点系统的对象状态。与类图的抽象性相比,对象图是具体的,其通常用来提供所对应类图的结构示例,或者作为所对应类图的测试用例。应当说每一幅对象图都有其侧重点,因而,每一幅对象图应当只侧重表达其所侧重内容。
在UML中,对象实例是采用实例规范(instance specification参见1.1)来表示的,对象实例所具有的结构化特性(feature)是采用槽(slot,参见1.2)来表示的,对象实例与对象实例之间的关系则是采用连接(link,参见1.3)来表示。与类图相对比,实例对应于类对象,槽对应于类属性的实例,而连接则对应于类与类之间关联的实例。有了这些对应关系,在掌握了类图的情况下,就更加的容易理解和掌握对象图了。
图 1.1是对象图相关建模元素在UML规范中的语法定义,后面在讲解具体的概念时我们会更加具体的说明。
1.1 实例规范
实例规范(instance specification,参见USS的7.3.22节)是用于表示被建模系统中的实例实体,它描述了模型实例实体的部分或是全部。我们平时编程时,口头上所说的实例,在UML中就称之为实例规范。实例规范所描述的内容可能包括:
1)一个或是多个实例所属的分类器。在实例规范中一个分类器如果是类,那么它所描述的是这个类的对象;如果一个分类器是关联,那么它所描述的是这个关联的一个连接。
2)结构化特性的值。结构化特性对应于类的属性用于描述类的结构组成,在类图中行为化特性是采用操作(operation)来表示的,而在对象图中并不表示类的行为特性。在实例规范中,我们并不是一定要表示所有实例的所有结构化特性。
3)如何计算、推导或是构造实例。
一个实例规范用于指示被建模系统中存在的实体,在实例规范中其信息可以是不完整的,其只侧重于表达所关心的信息。从图 1.1可以得到以下信息:
1)一个实例规范是一个可打包元素,因为一个InstanceSpecification“是一个”PackageableElement。
2)一个实例规范可以包含任意多个的槽,这从其slots组成属性可以看出。
3)一个实例规范最多可以包含一个值规范(value specification,参见USS的7.3.54节),这从其specification组成属性可以看出。简单地说,值规范就是表示对于一个对象的可取值范围是什么。
4)一个实例规范可以包含任意多个的分类器,这从其classifiers关联属性可以看出。
一个实例规范可以包括槽,而每一个槽实际上是一个结构化特性的表达。实例规范是一个或是多个分类器的对象实例,因此,它是遵循分类器所定义的结构或是(和)行为规范的。一个没有槽的实例规范,并不是表示它没有结构化的特性,因为有可能那些结构特性并不是这一对象图所关心的。
需要注意的是实例规范并不是被建模系统运行时的精确描述,而只是一个示例,其只是表示了相关的结构信息。我们不能从实例规范中推导任何的运行时对象结构方面的详细信息。
图 1.2是一个使用实例规范的一个例子,其中每一个矩形框都是一个实例规范。图 1.3是其所对应的类图。其中my_car是一个不带有槽的实例,而其它的Window实例都是带有两个槽。你会注意到,实例规范的表示方法与类图中的类是相似的,但也有以下的区别:
1)其名称下面具有一根下划线,在线上标明了这一实例的名称以及其所属的分类器),实例名与分类器之间采用‘:’进行分割,而如果有多个所属分类器,那么分类器之间采用逗号分开。图 1.2中所有的实例规范都只有一个分类器,比如my_car所属分类器是Car类,也就是说my_car是Car类的一个实例,而front_left、front_right、rear_left和rear_right都分别是Window类的一个实例。
2)槽对应于类中的属性,但其在实例规范中都会有值。如果没有值那么通常不用在实例规范中表示出来。
图 1.2是一个相对简单的对象图,而在现实应用中,我们可以通过多个对象图来展现同样的实例在不同时间点时各实例的状态,不同的状态是通过槽的不同值来表达的。比如,我们可以采用对象图来表示一个算法,而对于同一算法在不同时间点各实例的状态(表现在槽的值不同)采用不同的对象图来表示。
1.2 槽
槽(slot,参见USS的7.3.48节)是用于表示实例规范中被建模实体结构特征的值,槽对应于类图中类的属性,是类属性的实例,而属性是类的结构化特性的描述。从图 1.1中可以看出,一个槽具有三个属性:
1)definingFeature表示这一槽所对应的结构化特性是什么。
2)owningInstance表示这一槽是属于哪一个实例规范的。
3)value指示槽的值是多少。
图 1.2中每一个Window实例规范都有两个槽。其中name槽的definingFeature应当就是窗口名称,显然name槽的owningInstance是各 Window实例,而value对于每一个Window实例就不同了,有的叫“front left”,也有的叫“rear left”。相类似地,is_automatic槽用于表示每一个车窗是不是自动的。
1.3 连接
在UML规范中没有专门用于介绍连接(link)的章节,但在实例规范章节中有所提及。其定义了实例规范之间的关系,从类图的角度来看,一个连接就是一个关联关系的实例。图 1.2中示例了Car类实例规范与Window类实例规范之间的四个连接。对比图 1.2和图 1.3我们可以发现,图 1.2中的四个连接都是图 1.3中关联关系的实例。
2 总结
对象图用于表示被建模系统中不同对象在不同时间点的结构状态快照,其所表达的是类图中更为细化的结构化信息。当我们掌握了类图后,学习对象图就相对的简单了许多。
致读者
如果你想参与讨论UML相关的话题,请加入UML技术圈(g.51cto.com/UltraUML)。
[跟我学UML] UML中的对象图相关推荐
- UML模型中的图-静态图【类图、对象图】
前言 前一篇博文为大家分享了UML模型中的用例图.在完成用例图后,就可以根据用例图的参与者/角色以及用例来进行UML模型的静态设计了,这将会使用UML模型模型中的静态图.本篇博文继续为大家分享UML模 ...
- [跟我学UML] UML包图中的包引入和包合并
缩略语 UIS UML Infrastructure Specification UML基础结构规范 UML Unifed Modeling Language ...
- uml图中的各种箭头_设计模式学习笔记(二):UML与面向对象设计原则
1 UML 1.1 UML UML(Unified Modeling Language)是统一建模语言,1997年11月UML1.1版本提交给OMG并正式通过,成为建模语言的个那个也标准.2003年6 ...
- UML中类图与对象图的区别
UML中类图与对象图的区别 类图 对象图 类具有3个分栏:名称.属性和操作 对象只有两个分栏:名称和属性 在类的名称分栏中只有类名 对象的名称形式为"对象名:类名",匿名对象的名称 ...
- UML模型中的图-行为图【交互图-序列图、协作图】
前言 上一篇博文小编为大家分享了UML建模中行为图里面的状态图和活动图,今天继续为大家分享行为图中的内容- 交互图 .在UML建模中,交互图包括两种- 序列图.协作图 正文 六.序列图 序列图 ...
- UML模型中的图-用例图
前言 前面的博文为大家分享了UML模型中的事物和关系,本篇将为大家继续分享UML模型的三大基本构造块- 图 正文 在数学中,或者是生活中,我们会接触到各种各样的图.例如对数据分析,想要看看数据的变化趋 ...
- 4 UML 图中,一张交互图显示一个交互,由一组对象及其之间的关系组成,包含它 们之间可能传递的消息,以下不是交互图的是( )
标签: 软考初级程序员易错题,计算机基础, 面向对象基础,统一建模语言 (UML) UML 图中,一张交互图显示一个交互,由一组对象及其之间的关系组成,包含它们之间可能传递的消息,以下不是交互图的是( ...
- 3 在统一建模语言中(UML)中,( )用于描述系统与外部系统及用户之间的交互
标签: 软考初级程序员易错题,计算机基础, 面向对象基础,统一建模语言 (UML) 在统一建模语言中(UML)中,( )用于描述系统与外部系统及用户之间的交互. 问题1 A.对象图 B.类图 C.用例 ...
- [UML]UML系列——用例图中的各种关系(include、extend)
[UML]UML系列--用例图中的各种关系(include.extend) 原文:[UML]UML系列--用例图中的各种关系(include.extend) 用例图中的各种关系 一.参与者与用例间的关 ...
最新文章
- 为自定义控件添加页面响应事件
- Python基础知识(第七天)
- C++文件操作的6种方式
- C:03---运算符优先级
- java 截取汉字首字母,java 取汉字首字母
- linux 编译字符设备驱动错误,linux字符设备驱动框架及编写流程
- linux系统数据文件和信息--unix环境高级编程读书笔记
- 仅使用Python代码从零开始进行Logistic回归
- python字典快速一览
- android 浏览器 内核版本,Android集成三方浏览器之X5内核
- 电脑围棋中的人工智能技术
- 支持向量回归(SVR)的详细介绍以及推导算法
- jQuery 仿iGoogle视频的列表拖动缓冲特效
- 薄透镜焦距的计算公式
- 几个名词解释 TBB VPP KKK
- 【JZOJ6011】天天爱跑步
- Nginx+Tomcat实现动静分离
- 阿里云服务器ECS实例规格性能区别及选择攻略
- cz73 读取速度慢_【闪迪 Ultra Flair 酷铄 CZ73 闪存盘使用总结】速度|读取|写入|手感_摘要频道_什么值得买...
- 你真的了解单点登录(SSO)吗? 单点登录实现方式
热门文章
- XML Schema 基本结构
- shell常用命令之curl: -w,–write-out参数详解
- flex中dispatchEvent的用法(自定义事件) .
- 小波分析实验: 实验1 连续小波变换
- 改善用户体验之Alert提示效果
- vue 出现Elements in iteration expect to have 'v-bind:key' directives
- AFNetworking 对数据进行https ssl加密
- 数据库系统原理(第二章关系数据库 )
- Java:控制台输入车辆信息,将信息保存至数据库中
- 100. Same Tree