简介

对象图和类图的基本概念是类似的,可以看作类图在系统某一时刻的镜像,显示了该时刻系统中参与交互的各个对象以及它们之间的关系。

对象图的元素包括对象、链接、包,元素之间的关系和类图相似。

对象图建模步骤

    - 参照相应的类图确定参与交互的各个对象,通常类在"class", "new", "extends", "implements" 等关键字后,对象名在类名后

    - 确定类之间的关系,如依赖、泛化、关联、聚合、组合、实现等

    - 参考交互图中某个特定时刻各个对象的状态,使用对象图为这些对象建模

    - 根据建模目标绘制各个对象的关键状态,以及关键对象之间的连接关系

对象图的元素

对象图中的元素包括对象、链接、包。

  • 对象

  对象是类的实例,对象图中的对象由两栏组成,即对象名和属性,无操作。

      - 对象名:实例的名称,表示方法为对象名:类名[状态]

          - 对象名:是个字符串,必须加上下划线(和类名一起使用时需要加上下划线以示区分)

          - 类名:可选,如果包含了类名则必须加上":"

          - 状态:由“[]“括起、逗号分隔开,表示该对象的状态

      - 属性:对象是一个类实例化的事物,所以其每个属性都有固定的值,通常会在属性栏列出关键属性名及相应具体值

  对象有三种不同的表示方式:

      - 对象名:类名    # 对象名在前,类名在后,中间用”:“连接,对象名和类名都加下划线

      - :类名         # 匿名对象的表示方法,用于尚未给对象取名的情况

      - 对象名        # 省略掉类名

    

  • 链接

  链接是两个或多个对象之间的连接关系,分为单向链接和双向链接

      - 单向链接

      - 双向链接

  UML中的包直接对应java中的包,用来表示层次和组织内容。

对象图的关系

对象图中元素之间的关系跟类图相似,可参考 Python设计模式 - UML - 类图(Class Diagram)类图的关系部分

对象图示例

以公司架构为例应用对象图:

对象图与类图的区别

    - 分栏个数:对象图两个分栏;类图三个分栏

    - 名称格式:对象名称带下划线;类名称不带下划线

    - 是否包含操作:对象图标中不包含操作;类图标中包含操作

    - 作用范围:对象图标表示单一实例;类图标代表该类的所有实例

    - 连接关系:对象之间的连接关系为相互独立的链接;类之间的关系为依赖、关联、泛化

对象图注意事项

    - 通常单个类的对象可能有很多个,所以我们需要确定出哪些对象对系统具有重大影响

    - 重要对象本身可能具有多个功能,所以需要确定出其中的主要功能

    - 对象图中的元素名词务必直观、清晰、一目了然

    - 如果同一个类有两个或两个以上的重要对象时注意捕获不同对象各自的属性值

    - 添加适当的注释作为补充说明

Python设计模式 - UML - 对象图(Object Diagram)的更多相关文章

  1. Python设计模式 - UML - 部署图(Deployment Diagram)

    简介 部署图也称配置图,用来显示系统中硬件和软件的物理架构.从中可以了解到软件和硬件组件之间的物理拓扑.连接关系以及处理节点的分布情况. 部署图建模步骤 - 找出需要进行部署的各类节点,如网络硬件设备 ...

  2. Python设计模式 - UML - 总览

    说到设计模式就不得不涉及建模思想,说到建模思想自然而然会应用UML,目前业界开源的UML工具很多,用起来也非常便捷.近几年来随着软件应用领域开发模式转向快速迭代试错,UML在敏捷开发,尤其是web及m ...

  3. Python设计模式 - UML - 类图(Class Diagram)

    简介 类图是面向对象分析和设计的核心,用来描述系统各个模块中类与类之间.接口与接口之间.类与接口之间的关系,以及每个类的属性.操作等特性,一般在详细设计过程中实施. 类图本身就是现实世界的抽象,是对系 ...

  4. Python设计模式 - UML - 通信图(Communication Diagram)

    简介 通信图表示对象之间的消息往来,是表述时序图中信息交互的另一种UML图,介绍完时序图就要对照学习一下通信图,二者是一体两面的. 通信图和时序图可以相互转换,二者的侧重点不同,通信图侧重哪些对象发送 ...

  5. Python设计模式 - UML - 交互概述图(Interaction Overview Diagram)

    简介 交互概述图是将不同交互图衔接在一起的图,属于UML2.0的新增图.交互概述图并没有引入新的建模元素,其主要元素来自于活动图和时序图.交互概述图侧重从整体上概览交互过程中的控制流,包括交互图之间的 ...

  6. Python设计模式 - UML - 定时图(Timing Diagram)

    简介 定时图也是一种交互图,用来描述对象或实体随时间变化的状态或值,及其相应的时间或期限约束.定时图应用较广,并不局限于软件工程领域. 定时图侧重与时间线相关的值或状态的改变,这些改变可能来自于收到消 ...

  7. Python设计模式 - UML - 时序图(Sequence Diagram)

    简介 时序图表示参与者与对象之间.对象与对象之间的动态交互过程及时序关系. 时序图详细而直观地展示了对象随时间变化的状态.调用关系和消息时序,时序图中的主要元素有:参与者(Actor), 对象(Obj ...

  8. 【UML】对象图Object diagram(转)

    http://blog.csdn.net/sds15732622190/article/details/48894751 前言 今天要说的是UML中的对象图.他与类图,合作图都有关系,是类图的实例化. ...

  9. Python设计模式 - UML - 状态图(State Machine Diagram)

    简介 状态图主要用于描述对象在其生命周期中各种状态.状态之间的转换过程.触发状态转换的各种事件(条件)及执行的动作. 状态图构建步骤 - 找出适合用状态图描述的类.确定类中需要做状态图的重要对象 - ...

随机推荐

  1. IOC注入框架——Unity中Web.Config文件的配置与调用

    Unity 应用程序块可以从 XML 配置文件中读取配置信息.配置文件可以是 Windows Forms 应用程序的 App.config 或者 ASP.NET 应用程序的 Web.config.当然 ...

  2. Java核心-多线程-并发控制器-Exchanger交换器

    1.基本概念 Exchanger,从名字上理解就是交换.Exchanger用于在两个线程之间进行数据交换,注意也只能在两个线程之间进行数据交换. 线程会阻塞在Exchanger的exchange方法上 ...

  3. LeetCode【101. 对称二叉树】

    对称二叉树,就是左节点的左节点等于右节点的右节点,左节点的右节点等于右节点的左节点. 很自然就想到迭代与递归,可以创建一个新的函数,就是另一个函数不断的判断,返回在主函数. class Solutio ...

  4. 实现Linux下od -tx -tc XXX的功能

    实现Linux下od -tx -tc XXX的功能 一.od命令 (1)功能 od命令用于将指定文件内容以八进制.十进制.十六进制.浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直 ...

  5. hex转mif文件 verilog

    用FPGA来跑ARM 核的时候,刚开始将Keil编译产生的hex文件拿来仿真和下到板子上的时候,发现程序运行不正确.细细观察仿真波形发现,在Altera的ROM IP中直接调用Keil产生的hex文件 ...

  6. Linux下自己实现getopt功能

    实现思路: 通过 pid_t pid = getpid() 来获取当前进程id,然后 sprintf(fname, "/proc/%d/cmdline", pid); 读取fnam ...

  7. android.support.v4.app.NotificationCompat引用包

    在导入使用了ViewPage,ActionBar,Fragment的工程后出现错误,很有可能是没有导入4.0版本的支持包.本人也是碰到这个问题,特意搜索了一下,得到解决办法如下,记录下来,以免忘记.  ...

  8. 神经网络常用的Numpy功能笔记

    数组初始化 x=np.array([[1,2]]) x=np.zeros((2,3)) 生成随机数 w=np.random.randn(2,3) PIL image转换成array img = np. ...

  9. PHP URL安全的Base64位编码

    先将内容编码成Base64结果; 将结果中的加号”+”替换成中划线“-“; 将结果中的斜杠”/”替换成下划线”_”; 将结果中尾部的“=”号全部保留; 实现 编码 function urlsafe_b ...

  10. Android 开发 RecyclerView设置间距

    实现步骤 首先要创建一个类继承RecyclerView.ItemDecoration 然后重新这个类的getItemOffsets方法,删除方法里的super.getItemOffsets(outRe ...