【工具大道】UML的点点滴滴
本文地址
点击关注微信公众号 wenyuqinghuai
分享提纲:
1. 概述
2. UML类图
3. UML时序图
4. 参考资料
1.概述
结构型的图(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类图
参考链接
泛化关系(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的点点滴滴相关推荐
- 工具 | Plant UML介绍及使用
工具 | Plant UML介绍及使用 时间:2023-02-13 文章目录 工具 | Plant UML介绍及使用 1.相关资料 1-1.PlantUML简述 2.在`VSCode`中使用`Plan ...
- 网络最强CASE工具 + 经典UML学习电子资下载汇总
网络最强CASE工具 + 经典UML学习电子资下载汇总,软件设计与开发人员必备 http://club.topsage.com/forum.php?mod=viewthread&tid=149 ...
- 网络最强CASE工具 + 经典UML学习电子资下载汇总,软件设计与开发人员必备
CASE工具: Sybase PowerDesigner 15.0 完美版+特别文件 UML建模和CASE工具 Visual Paradigm Suite 4.2 SP2 企业版下载(含授权文件) U ...
- 常用的画图工具(UML图、业务流程图、时序图)
画图工具 http://draw.io http://draw.io是一个免费的画图工具,为用户提供最强大.易用的作图功能,既支持在线画图,也支持离线画图! 支持创作系统架构图.流程图.UML图.时序 ...
- linux打开另一台linux的图形化,【工具大道】ssh登录Linux服务器,并显示图形化界面...
点击关注微信公众号 "程序员的文娱情怀" 分享提纲: 1. 概述 2. mac版实现ssh登录,显示图形化 1. 概述 平时ssh登录到Linux服务器都是在命令行下进行操作的,简 ...
- ssh开启图形界面_【工具大道】ssh登录Linux服务器,并显示图形化界面
点击关注微信公众号 "程序员的文娱情怀" 分享提纲: 1. 概述 2. mac版实现ssh登录,显示图形化 1. 概述 平时ssh登录到Linux服务器都是在命令行下进行操作的,简 ...
- 【实用工具】UML图六种箭头的含义
文章参考资源,安利一波: W3Cschool UML教程 UML各种图总结-精华 uml图六种箭头的含义 UML类图中箭头和线条的含义和用法 各种关系的强弱顺序: 泛化 = 实现 > 组合 &g ...
- UML建模工具EA和Rose比较
UML建模工具EA和Rose比较 自从1997年正式发布UML以后,大量商用UML建模CASE工具粉墨登场.这样为我们提供了许多的选择,同时也要求我们在选择正确的UML建模工具以更好地适应我们业务和软 ...
- uml图工具_UML建模工具更新情况(二)
UMLChina整理的UML建模工具列表请见http://www.umlchina.com/tools/search.aspx最近一段时间更新: 工具最新版本:Software Ideas Model ...
最新文章
- pyqt5 QtDesigner文件打开位置
- 深度丨解密Python为什么能够风靡全宇宙
- JAVA---AWT 图形绘制
- iOS 实现不定参数方法
- 【不采用】人工智能如何帮助银行反欺诈
- python第k序列元素查找_Python寻找第k小的元素
- C语言 | 变量的存储方式
- sqoop建表_使用Sqoop创建/导入配置单元表
- python如何引用txt_python项目依赖库生成requirements.txt文件
- Extjs6(六)——增删查改之查询
- HTML5自定义属性
- 值得收藏!中国金融体系主要指标大全
- 总结——达内视频(二)
- Axure 8.1.0.3388授权码
- 计算机硬故障指什么原因是,计算机常见硬故障的诊断及排除(7页)-原创力文档...
- 猫加路由加服务器加交换机怎么配置文件,光猫接交换机和路由器,怎么设置?...
- python爬虫实战2:爬取近100期双色球开奖记录
- 一套代码快速实现一个语音聊天室
- 华为云linux登录用户名密码,华为云Linux服务器安装宝塔Linux面板详细图文教程
- UR机器人装箱姿态_ur机器人坐标系说明来了,感兴趣的朋友可以看看
热门文章
- requirejs插件-domReady插件
- 基于java SSM框架的旅游网站设计开发(含源文件)
- excel批量更改超链接_批量新建Excel指定名称工作表并设置超链接!你,学会了吗?...
- Redis文档阅读笔记-Pub/Sub官方解析
- Arduino笔记-ESP8266模块实现https远程关熄灯功能
- number类型转换java_Number()数据类型转换
- ad采样做按键开关_电池应用中的电流采样电阻设计
- python自学行_有编程基础Python自学行吗?
- 浪潮服务器nf5280m2安装系统,破茧化蝶之作 浪潮NF5280M2服务器评测
- 操作系统之进程管理:14、读者-写者问题