对象图的功能

类图用于说明类以及类之间的关系,但是它相对抽象,有时会比较难理解。比如下面的例子:

上图是一个图形编辑软件的例子,我们有一个超类Shape和它的五个子类。其中ShapeComposite可以管理其他的Shape。还有一个Canvas类,管理ShapeComposite。

这些是好理解的部分。那么以下的部分呢?

比如说,ShapeComosite也是Shape的一种,也可以被另外一个ShapeComposite管理,这种关系可以无限次迭代。这一点就会稍微有一些难度。

UML对于这种问题给出的答案就是对象图(object diagram),用它来表示系统某一时刻各类的实例以及实例之间关系。

我们继续举例:假设有人使用软件画了下面一幅图。

上图中三角形,椭圆形,长方形共同组成了一个复合图形,另外还有一个文本输入框。这个例子的对象图画出来就是下面这样:

上图中,:Triangle,:Ellipse,:Rectangle组合成为一个复合图形Lamp:ShapeComposite,而Lamp:ShapeComposite又和ABC:TextBox一起被All:ShapeComposite管理。最后是Canvas对象,作为对象树的根节点管理着All:ShapeComposite对象。

对象图也可以说是系统的快照。

对象图要素

对象图主要有两种要素,对象和链接。

对象表示为中间被水平横线分割的矩形。上半部分用于显示对象名和类名。语法为:objectname:classname。其中下划线是必须的,objectname是可以省略的;下半部分用于显示对象的属性值。语法为attributename:type=value,其中type可以省略。属性值可以有多个,每个占一行。

链接是对象之间的连线,是关联等的实例。链接端也可以有代表角色的名称。

EA中的设定方法

像类名一样,对象名也是通过属性对话框的名称栏设定的。这里不重复。

属性值的设定比较特别,按照以下步骤进行:

  1. 在【Project Browser】窗口中选中需要设定属性值的对象。

  2. 启动上下文菜单并选中【Set Run State...】项目。

  3. 在出现的对话框中设定属性值。

具体如下图:

如果阅读本文能给您带来些许收获,欢迎分享给更多的朋友!

新文章,请扫描下面二维码,关注公众号【面向对象思考】

EAUML日拱一卒--类图::对象图(object diagram)相关推荐

  1. EAUML日拱一卒--序列图(Sequence Diagram)::生命周期

    在实际的程序中,创建对象,删除对象这样的控制对象生命周期的处理可以说比比皆是. 创建对象 下面以图形编辑软件中用户双击鼠标创建新对象为例说明. 处理流程: 用户双击鼠标. Framework生成QMo ...

  2. EAUML日拱一卒-活动图:: 对象流

    如果你足够细心,应该可以注意到上一篇文章最后的示例流程中,有一个地方与众不同,就是下图中红框中的部分. 这部分就是今天的内容,对象流. 语义 控制流(control flow)描述了两个活动节点之间执 ...

  3. EAUML日拱一卒-活动图::OMG UML2.5中文译文 16.12 Expansion Regisons

    16.12.1 Summary(概要) An ExpansionRegion is a StructuredActivityNode that executes its contained eleme ...

  4. EAUML日拱一卒 时序图入门

    有些文章将TimingDiagram翻译为定时图,但总是差那么点意思.经过权衡,本文将TimingDiagram译为时序图.对于本系列早期文章中将SequenceDiagram翻译成时序图的情况,将来 ...

  5. EAUML日拱一卒--序列图(Sequence Diagram)::交互和交互使用

    画时序图就和写作文一样,经常会遇到一发而不可收的情况,结果就是得到一个巨大的时序图.这种情况下,作者首先会因为完成了一件大工程而感到自豪,可是一旦他把完成的时序图拿给别人看或者是需要维护的时候就开始意 ...

  6. EAUML日拱一卒 总目录

    用例图 EA&UML日拱一卒 用例图开篇 EA&UML日拱一卒 用例包含关系 EA&UML日拱一卒 用例泛化关系 EA&UML日拱一卒 用例扩展关系 类图 EA& ...

  7. EAUML日拱一卒-为类添加操作和方法

    看到标题,也许有人会问,操作和方法不是一回事么?还真不是一回事. 操作 操作指明了目标对象状态的转换或返回给操作调用者值的查询.它有名称和参数列表,包括返回参数.操作指定了行为的结果,而不是行为本身, ...

  8. EAUML日拱一卒-状态图::庖丁解牛

    思考题答案 前两个问题只有读者自己知道,所以省略. 用什么方法才能发现这些问题呢? 继续关注本公众号,并且勤加练习.<-你可以说是广告,管他呢. 应该如何解决这些问题呢? 两个字:分解 四个字: ...

  9. EAUML日拱一卒-微信小程序实战:位置闹铃 (13)-使用类优化程序结构

    虽然Javascript是一种脚本语言,但是依然可以定义和使用类.在这个小程序中,将监控点相关的功能做成了一个类. alarm.js //alarm.js: const util = require( ...

最新文章

  1. 预编译、作用域链和闭包理解
  2. matlab图片矢量化,matlab图形矢量化解决方案
  3. cmd命令生成webservice_使用wsimport命令生成webService客户端代码实例
  4. error:cannot load driver JL2CM3.dll
  5. (十五)算法设计思想之“回溯算法”
  6. 《黑天鹅》读书笔记(part3)--那些声称注重过程而非结果的人并没有完全讲真话
  7. CSS行内元素和块级元素的水平居中,垂直居中,水平垂直居中实现
  8. BP算法和RNN_模型CNN-RNN-LSTM和GRU简介
  9. 潜伏者与谍报密码(洛谷P1071题题解,Java语言描述)
  10. C++多进程并发框架FFLIB
  11. Nginx反向代理实现负载均衡web集群
  12. oracle循环数据,oracle循环插入数据
  13. PLM -Aras Innovator 安装
  14. web开发前台,懒人建站资源库
  15. 90% 的前端都会使用 ES6 来简化代码,你都用过哪些?
  16. 触动精灵 python_触动精灵远程Log模块
  17. lwip【4】 lwIP配置文件opt.h和lwipopts.h初步分析之一
  18. 神马? 网飞(Netflix)程序员的基本薪资居然是谷歌的2倍多...
  19. 全新8.6版本SEO快排系统(可源码级搭建)
  20. 美容店多店会员管理系统

热门文章

  1. 管理信息系统和计算机信息系统的关系,管理信息系统(MIS)与其他学科的关系...
  2. 欧姆龙 CJ1W-SCU 无协议功能
  3. 百度跨平台AI推理加速引擎:Anakin
  4. Ubuntu16.04安装charm-cryto总结及遇到问题记录
  5. 节奏音乐制作工作站-Native Instruments Maschine 2 v2.13.0 WiN
  6. 用C++实现RGB转256色
  7. EF Core一对多和多对多
  8. 合创视觉工作8年设计师告诉你的平面设计真相
  9. 详细解析张雪峰老师对计算机专业的评价“进可攻,退可守”--【职场篇】
  10. Mybatis自定义类型映射处理器