[跟我学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 类图元素在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.3 图 1.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)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机无法安装hp网络打印机,安装HP网络打印机步骤

打印机在连接上网线以后会通过路由器的DHCP服务自动设置一个IP,但是此IP不一定与你的计算机的IP处在同一个IP段(同段IP为192.168.0.***,即前三位相同(不一定为192.168.0),只有最后一位不同),IP不在同一段是无法连接的。此时应手动…

VTP (vlan trunking protocol)

VTP(vlan trunking protocol)vlan中继协议,是一个二层协议,主要用于在一个vtp域内同步vlan信息(vlan的添加、删除、重命名)。所谓vtp域,就是配置了相同vtp域名的所有连接在一起的交换机组成的网…

隐藏GridControl的“Drag a column header here to group by that column”

打开设计器,找到OptionsView,往下拉设置showGroupPanel为false 转载于:https://www.cnblogs.com/Cruise-Yang/p/7490052.html

实例分享--告诉你如何使用语音和自然语言控制智能家居

ZigBee作为一种短距离、低功耗的无线通信局域网协议,其优点是超低功耗、安全性高和自组网,并且可容纳多个设备,因此在智能家居控制中占有很大的优势。 但是,仅仅使用ZigBee技术来控制家居设备显得比较单薄,或者不够“智…

html中input两个圆括号,如何使用Jquery将光标聚焦在两个括号(括号)之间?

我有一个与按钮一起工作的计算器来分配值。主要想法是生成公式。这些值被无缝添加到“输入”中。所有支架输入您相应的按钮时,我需要发生的是继续在括号如何使用Jquery将光标聚焦在两个括号(括号)之间?输入值的Jquery$(document).ready(function() {$(&q…

Spring框架中的Bean是线程安全的吗

答: 不是安全的。 Spring中的Bean默认是单例模式的,框架并没有对bean进行多线程的封装处理。 注:单例bean是指IOC容器中就只有这么一个bean,是全局共享的,有多少个线程来访问用的都是这个bean。 如果Bean是有状态的,…

python--14 递归

递归是神马 >>> def recursion():  ... recursion()  ...   >>> recursion()  Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "<stdin>", line 2, in recursion   …

使用Reflector.FileDisassembler反编译DLL

转自http://www.cnblogs.com/wuliangbo Reflector for .NET 下载地址&#xff1a;http://www.aisto.com/roeder/dotnet/ Reflector.FileDisassembler.dll cs文件的工具下载地址 &#xff1a; http://www.denisbauer.com/Downloads/Reflector.FileDisassembler.zip 1.下载Refl…

NOD32最新升级ID

2009年08月20日NOD32最新升级ID —————————————————————————— 两个EAV激活码&#xff1a; M26F-0233-3WRA-7M6W-H4QL-8K7J M26F-0233-3WRA-8DET-U646-T94T 用户名 密码 版本 EAV-19640855 - rtr3afv8pa >> ess E…

IOS https抓包及10.3.3版本证书不生效问题解决

Charles安装HTTP抓包HTTPS抓包1. Charles安装 官网下载安装Charles:https://www.charlesproxy.com/download/ 2. HTTP抓包 &#xff08;1&#xff09;查看电脑IP地址 &#xff08;2&#xff09;设置手机HTTP代理iphone连上wifi&#xff0c;点击“设置->无线局域网->连接的…

C# 备忘

1.使用partial来修饰类和结构&#xff0c;运行跨多个*.cs文件来定义c#类型。类型名必须是一致的&#xff0c;并且定义在相同的.NET命名空间中。 2.C#提供了关键字sealed来防止发生继承&#xff0c;如果将类标记为sealed&#xff0c;编译器将不会允许我们从这个类型派生。有时不…

计算机网络上网时间,电脑怎么限制上网时间

孩子的学习和娱乐都离不开电脑,很多事情的完成都是需要借助电脑,但其负面影响也逐渐体现下面是学习啦小编为大家整理的关于电脑怎么限制上网时间&#xff0c;一起来看看吧!电脑怎么限制上网时间先登录路由器主页。如果知道家长和孩子电脑的Mac地址的可以直接跳到第四步。很多人…

计算机画面的音乐素材,音效素材:高科技用户界面UI点触计算机数据分析全息音效合集...

音效素材&#xff1a;高科技用户界面UI点触计算机数据分析全息音效合集包含1000多组模块化用户界面音效&#xff0c;由最好的制造商“EURORACK”亲自录制。MODULAR UI是由世界著名的音响设计师和音乐家理查德迪瓦恩共同创建的一个用户界面音效库。设计并完全由理查德迪瓦恩的个…

cacti安装FAQ

为什么80%的码农都做不了架构师&#xff1f;>>> CACTI中MSN和EMAIL不能同时预警 描述 CACTI中使用thold可以实现邮件的预警&#xff0c;超过阀值的时候&#xff0c;基本上可以在半个小时之内把邮件发出来&#xff0c;这种方式是比较稳定的方式。 另外可以使用MSN…