当前位置: 首页 > news >正文

【UML用户指南】-15-对高级结构建模-对象图

目录

1、对象图的组成

2、 对象图和类图关系

3、对对象结构建模

4、逆向工程

5、对象图构建要求


对象图对包含在类图中的事物的实例建模。

对象图显示了在某一时间点上一组对象以及它们之间的关系。

对象图用于对系统的静态设计视图或静态交互视图建模。

某一时刻的系统快照建模,表示出对象集、对象的状态以及对象之间的关系。

对象之间不会传递消息

对象图不仅对可视化、详述和文档化结构模型是重要的,而且对通过正向工程和逆向工程构

造系统的静态方面也是重要的。

用 UML,可以使用类图来可视化系统构造块的静态方面。还可以使用交互图来可视化系统的

动态方面,交互图由构造块的实例和在它们中间分发的消息组成。对象图包含一组类图中事

物的实例。因此,对象图表达了交互的静态部分,它由协作的对象组成,但不包含在对象之

间传递的任何消息。在这两种情况下,对象图都表示冻结了的系统运动的某一瞬间,

1、对象图的组成

对象、链、注解和约束,有时也把类放在对象图种。

2、 对象图和类图关系

1、类图描述了一般的情形,实例图描述了从类图派生的具体实例。对象图主要包含对象和链。

2、部署图也可以按照一般的和实例的形式出现:

一般形式的部署图描述结点类型,实例形式的部署图描述了由这些类型描述的结点实例的具体配置。
 

3、对对象结构建模

        在构造类图、构件图或部署图时,真正要做的是获取一组感兴趣的抽象,形成一个组,在这

样的语境下,要显现出组中各抽象的语义及其相互之间的关系。这些图只表示出潜在的可能

性。如果类A到类B有一对多的关联,那么类A的一个实例就可能对应着类B的5个实例,类A的

另一个实例还可能只对应着类B的一个实例。此外,在某一给定的时刻,A的实例和相关的B

的实例,它们的属性和状态机都有一定的值。

        如果冻结一个运行的系统,或者只想象被建模的系统的某一瞬间,就会发现这样的一组对象

:每一个对象都处于一个特定的状态,并与其他对象有特定的关系。可以用对象图来可视化

、详述、构造和文档化这些快照的结构。对象图对于复杂的数据结构建模特别有用。

在为系统的设计视图建模时,可以用一组类图完整地详述抽象的语义以及它们之间的关系。

        然而,用对象图则不能完整地详述系统的对象结构。对于一个类,可以有多个可能的实例,

对于相互间存在关系的一组类,对象间可能的配置是相当多的。因此,在使用对象图时,只

能有意义地显示一组感兴趣的具体对象或原型对象。这就是所谓的为对象结构建模,即对象

图显示了在某一时刻相互联系的一组对象。

        识别想为之建模的机制。机制描述了正建模的系统部分的某些功能或行为,它由一组类、接

口和其他事物的交互产生。

        例如,下图显示了取自一个自主机器人的实现中的一组对象。该图关注机器人为了计算一

个在其中移动的世界模型而使用的机制中所涉及的对象。运行系统还涉及更多的对象,但是

这幅图只关注直接涉及到创建这个世界视图的那些抽象。

如图所示,一个对象表示机器人自身(r是 Robot的实例),而 r当前处于被标记为

moving的状态中。这个对象有一个到w(World的一个实例)的链,World表示该机器人的世

界模型的一个抽象。

此时,w被连接到Area的两个实例。其中之一(a2)具有分别连接到3个Wall对象和一个

Door对象的链。Wall的每个对象都标有各自的当前宽度,并且都与相邻的Wall对象相连。

像这个对象图显示的那样,机器人已经识别出其所在的区域,该区域三面有墙,另一面有门
 

4、逆向工程

选择要进行逆向工程的目标。通常将语境设为一个操作的内部,或者与一个特定类的实例相关。

通过使用工具或简单地走查脚本,在特定的时刻停止执行。

识别出在该语境中相互协作的一组感兴趣的对象,并在对象图中表示它们。

按照理解语义的需要,显露这些对象的状态、识别这些对象之间存在的链。

若最终的图过于复杂,则要修剪它——通过删除与需要回答的关于脚本的问题无密切关系的

对象来实现。若图过于简化,则把某些感兴趣的对象的邻居扩充进来,并更深入地显露出各

对象的状态。

通常,必须手工地添加或标记目标代码中非显式的结构。丢失的信息提供了隐含在最终的代

码中的设计意图。

5、对象图构建要求

注重于表达系统静态设计视图或静态交互视图的一个方面。

表示由一个交互图描绘的动态场景中的一个画面。

只包含对理解该方面不可缺少的那些元素。

提供与它的抽象层次相一致的细节,应该只显露出对理解是不可缺少的那些属性值和其他修饰。

不要过分地简化,这样会使读者对重要的语义产生误解。

当绘制一个对象图时,要遵循如下策略。

给出能表达其用途的名称。

对图中元素进行布局,尽量减少线段交叉。

在空间上组织元素,使得在语义上接近的事物在物理位置上也靠近。

用注解和颜色作为可视化提示,以引起对图的重要特征的注意。

根据表达意图的需要,在图中包括每个对象的值和状态。
 

相关文章:

  • linux操作系统怎么看设备管理器
  • 【JAVA】MyBatis-Plus插入/更新数据时如何自动更新字段时间
  • Vray渲染如何才能更快?渲染100邀请码1a12
  • KVM高级部署
  • leetcode刷题记录38-16. 最接近的三数之和
  • PostgreSQL 如何使用generate_series()函数
  • 短剧app系统开发(对接广告联盟)源码搭建
  • 一文搞定自动化测试
  • Java面试八股之静态变量和实例变量的区别有哪些
  • 绿洲生态【OAS】爱护环境--保护地球
  • 二叉树构建
  • 【CS.PL】Lua 编程之道: 控制结构 - 进度24%
  • 浏览器f12控制台怎么获取vue实例,并且修改data数据
  • C语言学习系列:笔记列表
  • 信号处理中的相位
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 【知识碎片】第三方登录弹窗效果
  • ECS应用管理最佳实践
  • go append函数以及写入
  • java2019面试题北京
  • JS数组方法汇总
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • opencv python Meanshift 和 Camshift
  • Quartz初级教程
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 入口文件开始,分析Vue源码实现
  • 使用docker-compose进行多节点部署
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 学习ES6 变量的解构赋值
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 应用生命周期终极 DevOps 工具包
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • Spring第一个helloWorld
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # Java NIO(一)FileChannel
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • # 数仓建模:如何构建主题宽表模型?
  • #APPINVENTOR学习记录
  • #知识分享#笔记#学习方法
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (175)FPGA门控时钟技术
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (LeetCode 49)Anagrams
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (南京观海微电子)——I3C协议介绍
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .env.development、.env.production、.env.staging
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)