本文地址

点击关注微信公众号 wenyuqinghuai

分享提纲:

  1. 概述

  2. UML类图

  3. UML时序图

  4. 参考资料 

1.概述

1.1)百度百科:
又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置
  2)【分类】
UML有很多种图,大体可以分为两类:
      结构型的图(Structure Diagram)
      类图(Class Diagram)
      对象图(Object Diagram)
      构件图(Component Diagram)
      部署图(Deployment Diagram)
      包图(Package Diagram)
      行为型的图(Behavior Diagram)
      活动图(Activity Diagram)
      状态机图(State Machine Diagram)
      顺序图(Sequence Diagram)
      通信图(Communication Diagram)
      用例图(Use Case Diagram)
      时序图(Timing Diagram)

2. UML类图

参考链接

 2.1)一个示例
  2.2)类之间的关系

泛化关系(generalization)

类的继承结构表现在UML中为:泛化(generalize)与实现(realize):

继承关系为 is-a的关系;两个对象之间如果可以用 is-a 来表示,就是继承关系:(..是..)

eg:自行车是车、猫是动物

泛化关系用一条带空心箭头的直接表示;如下图表示(A继承自B);

eg:汽车在现实中有实现,可用汽车定义具体的对象;汽车与SUV之间为泛化关系;

注:最终代码中,泛化关系表现为继承非抽象类;

实现关系(realize)

实现关系用一条带空心箭头的虚线表示;

eg:”车”为一个抽象概念,在现实中并无法直接用来定义对象;只有指明具体的子类(汽车还是自行车),才 可以用来定义对象(”车”这个类在C++中用抽象类表示,在JAVA中有接口这个概念,更容易理解)

注:最终代码中,实现关系表现为继承抽象类;

聚合关系(aggregation)

聚合关系用一条带空心菱形箭头的直线表示,如下图表示A聚合到B上,或者说B由A组成;

聚合关系用于表示实体对象之间的关系,表示整体由部分构成的语义;例如一个部门由多个员工组成;

与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在;例如, 部门撤销了,人员不会消失,他们依然存在;

组合关系(composition)

组合关系用一条带实心菱形箭头直线表示,如下图表示A组成B,或者B由A组成;

与聚合关系一样,组合关系同样表示整体由部分构成的语义;比如公司由多个部门组成;

但组合关系是一种强依赖的特殊聚合关系,如果整体不存在了,则部分也不存在了;例如, 公司不存在了,部门也将不存在了;

关联关系(association)

关联关系是用一条直线表示的;它描述不同类的对象之间的结构关系;它是一种静态关系, 通常与运行状态无关,一般由常识等因素决定的;它一般用来定义对象之间静态的、天然的结构; 所以,关联关系是一种“强关联”的关系;

比如,乘车人和车票之间就是一种关联关系;学生和学校就是一种关联关系;

关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向,如下图,表示A知道B,但 B不知道A;

注:在最终代码中,关联对象通常是以成员变量的形式实现的;

依赖关系(dependency)

依赖关系是用一套带箭头的虚线表示的;如下图表示A依赖于B;他描述一个对象在运行期间会用到另一个对象的关系;

与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化;

显然,依赖也有方向,双向依赖是一种非常糟糕的结构,我们总是应该保持单向依赖,杜绝双向依赖的产生;

注:在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系处理临时知道对方外,还是“使用”对方的方法和属性;

3.UML时序图

参考链接

  3.1)时序图的概念

      时序图定义 : 描述了对象之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间顺序的交互图;

      时序图描述的事物: 时序图描述系统中类和类之间的交互, 将这些交互建模成消息交换, 时序图描述了类以及类之间的交换完成的期望行为的消息, 时序图中每条消息都代表了类的一个操作 或者 引起状态机改变的触发事件;

         时序图表示 : 参与交互的对象在时序图顶端水平排列, 每个对象的底端绘制了一条垂直虚线, 对象A像对象B发送消息, 用一条带箭头的实线表示, 该实线起始于对象A底部的虚线, 终止于对象B底部的虚线; 实线箭头水平放置, 越靠近顶端越早被发送.

      时序图轨迹 : 时序图提供了随时间推移的清晰的 可视化的轨迹;

  3.2) 时序图组成

       时序图组成 : 时序图包括四个元素 对象(Object)生命线(Lifeline)激活(Activation)消息(Message);

      (1) 对象(Object)

      

      对象 : 时序图中的对象在交互中扮演的角色就是对象;

      对象的符号 : 时序图中的对象与对象图中的表示方法一样, 使用矩形将对象名称包含起来, 并且对象名称下有下划线;

      对象创建时机 : 对象可以在交互开始的时候创建, 也可以在交互过程中进行创建;

      -- 处于顶部 : 如果对象的位置在时序图顶部, 说明在交互开始的时候对象就已经存在了;

      -- 不在顶部 : 如果对象的位置不在顶部, 那么对象在交互过程中创建的;

     (2) 生命线(Lifeline)

      

      生命线 : 生命线是一条垂直的虚线, 这条虚线表示对象的存在, 在时序图中, 每个对象的底部都有生命线;

      生命线作用 : 生命线是一个时间线, 从时序图顶部一直到底部都存在, 其长度取决于交互的时间;

      对象的生命线 : 对象与生命线结合在一起就是对象的生命线, 这个概念包含对象图标 以及 对象下面的生命线图标 如上图;

      (3) 激活(Activation)

      

      激活(Activation) : 代表时序图中对象执行一项操作的时期, 激活期可以理解为语义中 {} 中的内容, 表示该对象被占用以完成某个任务;

      去激活(Deactivation) : 指对象处于空闲状态, 在等待消息激活这个对象;

      激活的表示 : 当对象处于激活时期, 生命线可以拓宽为矩形, 这个矩形条成为激活条;

      激活去激活的时机 :

      -- 激活 : 对象激活是在激活条的顶部激活;

      -- 去激活 : 激活条的底部去激活, 通常发生在一个消息离开对象生命线;

    (4) 消息

      消息概念 : 定义 交互 和 协作 中 交换信息 的类, 对 对象之间的 通信内容 建模;

      消息动作 :

-- 动作种类 : 消息允许在实体间传递信息 (传递参数), 允许实体请求其它服务, 对象之间通过 发送 和 接收 消息 进行通信;

-- 产生结果 : 消息可以触发操作唤起信号, 或使目标对象创建 或 销毁;

消息的异步和同步通信 :

-- 异步通信 : 消息是信号的时候, 发送信号之后, 等待对方触发相应方法, 这是明确的 命名的 对象间的异步通信;

-- 同步通信 : 直接调用对象的方法, 执行方法返回结果, 这种具有返回控制机制的操作是同步通信;

时序图和协作图中消息的区别 : 时序图中的消息强调顺序, 协作图中的消息强调交换消息的对象间的关系;

消息类型 :

--  : 两个对象间绘制消息;

--  : 两个对象之间的过程调用;

--  : 两个对象之间的异步消息;

--  : 过程调用中返回的消息;

       --  : 绘制反身消息;

  3.3)一个时序图示例

4. 参考资料

  1)看懂UML类图和时序图:http://www.cnblogs.com/me115/p/4092632.html

  2)UML入门 之 交互图 -- 时序图 协作图详解 :http://blog.csdn.net/doniexun/article/details/38317537

转载于:https://www.cnblogs.com/aiweixiao/p/6526137.html

【工具大道】UML的点点滴滴相关推荐

  1. 工具 | Plant UML介绍及使用

    工具 | Plant UML介绍及使用 时间:2023-02-13 文章目录 工具 | Plant UML介绍及使用 1.相关资料 1-1.PlantUML简述 2.在`VSCode`中使用`Plan ...

  2. 网络最强CASE工具 + 经典UML学习电子资下载汇总

    网络最强CASE工具 + 经典UML学习电子资下载汇总,软件设计与开发人员必备 http://club.topsage.com/forum.php?mod=viewthread&tid=149 ...

  3. 网络最强CASE工具 + 经典UML学习电子资下载汇总,软件设计与开发人员必备

    CASE工具: Sybase PowerDesigner 15.0 完美版+特别文件 UML建模和CASE工具 Visual Paradigm Suite 4.2 SP2 企业版下载(含授权文件) U ...

  4. 常用的画图工具(UML图、业务流程图、时序图)

    画图工具 http://draw.io http://draw.io是一个免费的画图工具,为用户提供最强大.易用的作图功能,既支持在线画图,也支持离线画图! 支持创作系统架构图.流程图.UML图.时序 ...

  5. linux打开另一台linux的图形化,【工具大道】ssh登录Linux服务器,并显示图形化界面...

    点击关注微信公众号 "程序员的文娱情怀" 分享提纲: 1. 概述 2. mac版实现ssh登录,显示图形化 1. 概述 平时ssh登录到Linux服务器都是在命令行下进行操作的,简 ...

  6. ssh开启图形界面_【工具大道】ssh登录Linux服务器,并显示图形化界面

    点击关注微信公众号 "程序员的文娱情怀" 分享提纲: 1. 概述 2. mac版实现ssh登录,显示图形化 1. 概述 平时ssh登录到Linux服务器都是在命令行下进行操作的,简 ...

  7. 【实用工具】UML图六种箭头的含义

    文章参考资源,安利一波: W3Cschool UML教程 UML各种图总结-精华 uml图六种箭头的含义 UML类图中箭头和线条的含义和用法 各种关系的强弱顺序: 泛化 = 实现 > 组合 &g ...

  8. UML建模工具EA和Rose比较

    UML建模工具EA和Rose比较 自从1997年正式发布UML以后,大量商用UML建模CASE工具粉墨登场.这样为我们提供了许多的选择,同时也要求我们在选择正确的UML建模工具以更好地适应我们业务和软 ...

  9. uml图工具_UML建模工具更新情况(二)

    UMLChina整理的UML建模工具列表请见http://www.umlchina.com/tools/search.aspx最近一段时间更新: 工具最新版本:Software Ideas Model ...

最新文章

  1. pyqt5 QtDesigner文件打开位置
  2. 深度丨解密Python为什么能够风靡全宇宙
  3. JAVA---AWT 图形绘制
  4. iOS 实现不定参数方法
  5. 【不采用】人工智能如何帮助银行反欺诈
  6. python第k序列元素查找_Python寻找第k小的元素
  7. C语言 | 变量的存储方式
  8. sqoop建表_使用Sqoop创建/导入配置单元表
  9. python如何引用txt_python项目依赖库生成requirements.txt文件
  10. Extjs6(六)——增删查改之查询
  11. HTML5自定义属性
  12. 值得收藏!中国金融体系主要指标大全
  13. 总结——达内视频(二)
  14. Axure 8.1.0.3388授权码
  15. 计算机硬故障指什么原因是,计算机常见硬故障的诊断及排除(7页)-原创力文档...
  16. 猫加路由加服务器加交换机怎么配置文件,光猫接交换机和路由器,怎么设置?...
  17. python爬虫实战2:爬取近100期双色球开奖记录
  18. 一套代码快速实现一个语音聊天室
  19. 华为云linux登录用户名密码,华为云Linux服务器安装宝塔Linux面板详细图文教程
  20. UR机器人装箱姿态_ur机器人坐标系说明来了,感兴趣的朋友可以看看

热门文章

  1. requirejs插件-domReady插件
  2. 基于java SSM框架的旅游网站设计开发(含源文件)
  3. excel批量更改超链接_批量新建Excel指定名称工作表并设置超链接!你,学会了吗?...
  4. Redis文档阅读笔记-Pub/Sub官方解析
  5. Arduino笔记-ESP8266模块实现https远程关熄灯功能
  6. number类型转换java_Number()数据类型转换
  7. ad采样做按键开关_电池应用中的电流采样电阻设计
  8. python自学行_有编程基础Python自学行吗?
  9. 浪潮服务器nf5280m2安装系统,破茧化蝶之作 浪潮NF5280M2服务器评测
  10. 操作系统之进程管理:14、读者-写者问题