交互图是uml中描述系统中的对象如何进行交互动作的 。

废话不多说,还是来张图:

概念

         交互图,主要描述的是系统中的一组对象的消息的传递的,为对象间的交互定义了一个可视的表示方法。

构成

         交互图并不是一个图,而是一些图的统称,就像我们在类图里说的超类一样。顺序图、通信图、定时图等都可以说是交互图。就像男人和女人都可以称为人类一样。
 
       其中,应用的最多的就是顺序图和通信图(也有称为合作图、协作图)。有趣的是,这两种图是可以相互转换的,而且转换时不会丢失信息。而定时图和交互概述图是两种变体。

顺序图

 
                
 
              图片引用自卓家进师哥的博客:http://blog.csdn.net/zhuojiajin/article/details/27358017?reload
 
       顺序图强调的是消息的时间顺序,把参与交互的对象写在最上方如上图的刘备,把发起交互的写在最左边(一般情况下)依次放在右边,这样控制流随着时间推移就可以清晰的展示。
         这里的向下的虚线就是对象的生命线,当关羽败走麦城被孙权处死后,关羽的这条虚线就会结束。这就是对象的销毁。
 
       在生命线上的长条矩形,就是控制焦点,表示对象执行一个动作所经历的时间。
 
       一个箭头,加一条线,再在线上写上内容就是消息的传递。消息主要有五种类型:调用、返回、发送、创建和销毁。下图是这几种消息的表示方式。
 
                
 
       在三国的图中,每个消息前面都有一个数字,这就是消息的序列,消息就是按照序列进行的传递。

通信图

                图片引用自卓家进师哥的博客:http://blog.csdn.net/zhuojiajin/article/details/27358017?reload

 
       通信图的重点是说的联系,在这里,对象还是那个对象,消息也还是那个消息,不过是把原来的故事换了一种方式来提现罢了。顺序图主要说的是打仗的步骤,而通信图却是侧重于打仗时各个对象的关系。
 
       链:如果非要说多了什么的话,那就是相关连的对象之间多了一条线。表示消息的路径。
         通常情况下,我们都是使用顺序图来表示我们的系统的交互。这样更加的清晰。
 时序图:给uml的顺序图的控制焦点加上时间限制就是时序图。
 
       交互概况图:交互的顺序图和活动图的结合就是交互概况图。

绘制交互图

 
       交互图通常是在分析模型或设计模型中提现,分析模型侧重于分析类的职责分配和交互流程,而设计模型中的交互图侧重于设计类的引入和实际方法的调用与流程控制。
 
       交互图的设计思路是:先确定对象,然后确定消息的交互流程,然后完善交互图。

交互图的应用

         交互图在分体阶段主要用于确定业务的逻辑流程。交互模型后,可以引入基础的类,然后优化设计。以便于提高代码的质量。在设计极端的交互图的作用主要是精化交互模型,然后使其与实际代码更加吻合。

交互图与活动图

 
       交互图与活动图都是描述系统动态的关系。这两种模型的区别是:交互图强调的是对象的控制流,而对象图强调的是活动流程。比如,张三让他儿子去买酒。交互图强调的是:买酒的信息由张三发出,由他儿子接受;而活动图强调的是:张三先找到他儿子,然后他儿子去买酒。



uml系列(七)——交互图的更多相关文章

  1. [UML]UML系列——状态机图statechart diagram

    系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...

  2. [UML]UML系列——协作图(通信图)collaboration diagram

    系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...

  3. [UML]UML系列——时序图(顺序图)sequence diagram

    系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...

  4. [UML]UML系列——用例图中的各种关系(include、extend)

    用例图中的各种关系 一.参与者与用例间的关联关系 参与者与用例之间的通信,也成为关联或通信关系. 二.用例与用例之间的关系 包含关系(include) 扩展关系(extend) 包含关系 (1)  概 ...

  5. [UML]UML系列——类图Class

    相关文章       [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) 一.类图的概念及组成 1.类图的概念 类图是描述类.接 ...

  6. [UML]UML系列——类图class的关联关系(聚合、组合)

    关联的概念 关联用来表示两个或多个类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象的应用. 程序演示:关联关系(code/assocation) 假设:一个公司 ...

  7. [UML]UML系列——类图class的依赖关系

    相关文章          [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列—— ...

  8. [UML]UML系列——类图class的泛化关系

    系列文章       [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列——类图C ...

  9. [UML]UML系列——类图class的实现关系Realization

    系列文章 [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列——类图Class   ...

  10. [UML]UML系列——包图Package

    系列文章 [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列——类图Class   ...

随机推荐

  1. 比较全的JavaScript倒计时脚本

    JavaScript倒计时在Web中用得非常广泛,比如常见的团购啊.还有什么值得期待的事情,都可以用到倒计时.现在举了四个例子,比如时间长的倒计时,小时倒计时,最简的倒计时,还有秒表等等,应该可以满足 ...

  2. HUST 1372 marshmallow

    很简单的博弈题.....算几组能得到规律了. 某个状态先手要赢 等价于 之前有一种状态是后手赢,先手可以保证让现在这个状态到达那个状态 #include<cstdio> #include& ...

  3. POJ3255次短路

    POJ3255 题意:给定一个图,求从1到n的次短路 分析:我们需要在dijkstra上作出一些修改,首先,到某个顶点v的次短路要么是到其他某个顶点u的最短路在加上u到v的边,要么是到v的次短路再加上 ...

  4. 为什么无线信号(RSSI)是负值(转)

    源:为什么无线信号(RSSI)是负值 为什么无线信号(RSSI)是负值 答:其实归根到底为什么接收的无线信号是负值,这样子是不是容易理解多了.因为无线信号多为mW级别,所以对它进行了极化,转化为dBm ...

  5. VR元年,VR虚拟现实这只风口上的猪有怎样的变化?

    走过了2016年,无论我们承认不承认,这一年到底是不是VR元年,我们都很难否定,在这一年,VR虚拟现实生态圈有很大的变化,那么,这一年VR虚拟现实到底有怎样的改变呢?我们的VR虚拟现实生态圈,发生了什 ...

  6. 【转】25个Git用法技巧

    Andy Jeffries 给 Git 中级用户总结分享的 25 个小贴士.你不需要去做大量搜索,或许这些小贴士对你就很有帮助的. 我从开始使用git到现在已经差不多18个月了,以为自己已经很懂git ...

  7. 设置git账号并生成新的ssh(切换电脑用户之后)

    1.设置账号 2.设置邮箱 3.检查确认 4. 5.check-----成功~

  8. Python第三天 序列 数据类型 数值 字符串 列表 元组 字典

    Python第三天 序列  数据类型  数值  字符串  列表  元组  字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...

  9. Python关键字yield的解释

    yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器. >>> def createGenerator() : ... mylist = range(3) . ...

  10. 一个a::before的写法

    #key_table table tr td a::before{//这是个a前面的蓝色小圆点    background: #48A7D9;    content: "";//这 ...