UML常用的基本图形简介
UML概述
统一建模语言UML是说明、可视化、构造和文档软件系统语言,也是一种定义良好的、易于表达、
功能强大的通用建模语言,它提供了一种机制使得不同的开发人员之间可以有效地共享和交流。
UML提供了多种图。一个图就是系统架构在某一方面的表示,每一种UML的视图就是由一个或多个图组成,
所有的图共同组成系统的一组完整视图,这组视图被称为一个模型(Model)。模型是对现实系统的一种抽象,
反映了现实系统中最主要的方面,是理解、分析、开发现实系统的一种最常用方式。
UML提供的基本的图形:
类型 | 包含的图 |
静态图 | 类图、对象图、包图 |
行为图 | 状态图、活动图 |
用例图 | 用例图 |
交互图 | 序列图、合作图 |
实现图 | 组件图、部署图 |
UML的常用图
类图(Class Diagrams)
类图是UML中最基本的图。它既可以描述类和接口,也可以表示类之间关系。
图1 描述类和接口的类图表示
图一左边的图用UML表示一个类Person。矩形方框代表类的图标。它被分为3个区域:
最上面的区域是类名,中间区域是类的属性,最下面的区域是类的操作。右边的图表示
接口,区别仅仅是类名上要加interface
类名如果是正体字,表明类是具体的(Concrete),即可以实例化的类;如果类是斜体,
表明类是抽象的,并且类名是不可省略的。
在属性层,一个属性可以是private,public,protected。类的属性左边如果是 + ,表示
该属性是public;如果是 - ,表示它是private;如果是 # ,表示它是protected。如果
是 ~ ,表示它是implementation。
第三个区域方法名的左边的符号与属性相同,括号里是方法参数,冒号后面是方法的返回值。
如果方法或者属性是static,下面就会有下划线。如果方法是抽象的,则用的斜体描述。
类之间的关系也可以用UML表示。
泛化关系是类于类之间的继承关系。图2展示这种关系。
图2 Point、Line和Square类继承Shape
关联关系是类与类之间的连接,它使得一个类知道另一个类的属性和方法。关联既可以是双向的,
也可以是单向的。单向的关联使用一个箭头表示关联的方向。每一个关联都有两个端点,端点
可以有一个角色名,显出关联的对象。在每一个关联的端点还可以有基数(Cardinality),
表明这一端的类有几个实例,常见基数如下表:
基数 | 含义 |
0..1 | 0个或一个实例 |
0..\*或\* | 对实例的数目没有限制 |
1 | 只有一个实例 |
1..\* | 至少一个实例 |
m..n | m~n个实例 |
图3 聚合关系的实例
图3展示了聚合的关系:飞机场跟飞机关联,飞机场拥有飞机,飞机场是整体,飞机是个体;
图中的基数表示当有了一个飞机场,机场可以有任意架飞机,一架飞机既可以属于机场,
也可以不在机场。
图4 合成关系实例
图4表示合成关系:汽车拥有轮胎,且轮胎是汽车的必要部分,轮胎与汽车的生命周期相同;
图中的基数表示一辆车拥有4个或5个轮胎,而轮胎必须属于这辆车。在图4中,汽车与加油站
存在依赖关系,汽车会使用加油站。
对象图(Object Diagrams)
对象的表示也是一个矩形,但与类表示的不同之处在于对象名下面要带下划线。
图5 对象图的表示形式
在图5的左边的表示中,具体实例的名字位于冒号的左边,右边为所属的类。右边表示一个
匿名对象。
序列图(Sequence Diagrams)
可以用来表示对象之间如何交互的UML图称为交互图(Interaction Diagrams),交互图中最常见
的就是序列图。
图6 用户在ATM上查询账号信息的序列图
在图6的序列图中,最上面的每个矩形代表一个特定的对象;垂直的虚线代表对象的生命跨度;
对象彼此之间发送消息通过垂直线之间的水平线。
用例图(Use Case Diagrams)
用例是从用户的观点对系统行为的一个描述。用例图从用户的角度出发描述系统的功能、需求,
展示系统外部的各类角色与系统内部各种用例之间的关系。用例图包含多个模型元素,这些模型
包括系统,参与者和用例,并且用例图也显示这些元素之间存在的各种关系。
图7 自动售货机的一个用例模型
图7展示了一个自动售货机系统的一个用例模型,参与者有客户和售货员;椭圆代表用例,
有买饮料、放置饮料和收款。
状态图(Statechart Diagrams)
状态图是对类的描述的补充。它用于显示类的对象在一个生命周期实例期间能够具备的所有可能状态,
以及那些引起状态改变的事件。状态的变化称为转换,转换也可以有一个与之相连的动作,后者用于
指定完成这个状态转换系统应该执行的操作。
图8 电梯运行状态图
图8所示的是电梯运行状态图,其中包括初始状态(实心圆)、各种状态以及触发事件。
合作图(Collaboration Diagrams)
合作图描述对象之间的协作关系,也是交互图的一种。除了显示消息的交互外,合作图也显示
对象及他们之间的关系。在实际建模中,如果重点强调对象之间的关系,那就选择合作图。
图9 打印服务器的合作图
部署图(Deloyment Diagrams)
UML部署图显示了基于计算机系统的物理体系结构,他可以描述计算机,展示他们之间的连接,
以及驻留在计算机中的软件。每台计算机用一个立方体表示,立方体之间的连线表示计算机
之间的通信关系。
图10 部署图实例
图10表示的是一些人事软件和一些应用软件分别部署在客户端和数据库服务器上,客户端
与数据服务器之间可以通信。
活动图(Avtivity Diagrams)
活动图是状态图的一种特殊情况,它用于显示一系列的顺序的活动,可以捕获动作及他们的结果。
活动图可以用于不同的目的,包括:显示一组相关的动作将如何执行,以及他们怎样影响周围的对象;
显示一个用例的实例在动作和对象状态方面如何执行的;显示一个业务在参与者、工作流程、组织
和对象方面是如何运转的。图11是一个工程管理系统的文件打印的活动图。
图11 活动图的例子
组件图(Component Diagrams)
组件图是根据系统的代码组件来显示系统代码的物理结构。其中组件可以是源代码组件,
二进制组件或可执行组件。组件包含了它所实现的一个或多个逻辑类的相关信息,因此
也就创建了一个从逻辑视图的映射。根据组件图中显示的组件之间的依赖关系,可以很
容易的分析出其中某个组件的变化将会对其他组件产生什么样的影响。图12 给出了组件
图的表示方式。
图12 组件图的表示
包图(Package Diagrams)
包提供一种用于组织各种UML元素的分组机制。在UML中,包用来给元素进行分组,并为
这些元素提供一个命名空间。包所拥有的或引用的所有模型元素称为包的内容。如果从模型
中删除一个包,那么这个包所拥有的元素也将被删除。图13显示了包的图形表示
图13 包的图形表示
永久更新地址:http://www.xhcoding.cn/archives/154.html
参考链接:
维基百科
UML官方网站
UML常用的基本图形简介相关推荐
- ML之相似度计算:图像数据、字符串数据等计算相似度常用的十种方法简介、代码实现
ML之相似度计算:图像数据.字符串数据等计算相似度常用的十种方法简介.代码实现 目录 相似度 1.余弦相似性-夹角余弦(Cosine_Distance)距离 2.代码实现-余弦距离.余弦相似度 2.皮 ...
- 数据库原理—常用的DBS产品简介(六)
数据库原理-常用的DBS产品简介(六) 一.SQL Server 二.Oracle 三.MySQL 四.DB2
- 几种常用的差异分析方法简介
几种常用的差异分析方法简介 如今在生物学研究中,差异分析越来越普遍,也有许多做差异分析的方法可供选择.但是在实际应用中,大多数人不知道该使用哪种方法来处理自己的数据,所以今天我就来介绍下目前几种常用的 ...
- 信息系统项目管理师必背核心考点(三)UML的14种图形工具
科科过<每天一小时 俩月拿证>为您带来软考信息系统项目管理是核心重点考点(三):UML的14种图形工具,内含思维导图+真题.本资料由科科过整理. [信息系统项目管理师核心考点]UML的定义 ...
- 几种常用深度学习框架简介
几种常用深度学习框架简介 一.TensorFlow 1.1 Tensorflow简介 1.2 使用文档 1.3 预训练模型 二.Pytorch 2.1 Pytorch简介 2.2 使用文档 2.3 预 ...
- Matplotlib中图形简介
Matplotlib中图形简介 折线图 定义 1.plot()函数 2.同时绘制多条折线图 3.实例 柱形图 定义 1.bar()函数 2.绘制柱形图 3.绘制多组柱形图 4.绘制堆积柱形图 条形图 ...
- 《大象--Thinking in UML》已经发售!简介及目录
本书由互动出版网首发,购买地址: http://www.china-pub.com/129881 本书将在 全国各大书店发售,比互动网晚一周,根据路上运输时间不同,全国各大书店的见货时间也会有几天的 ...
- [3]工欲善其事必先利其器-------UML常用的图(三)
该部分主要针对UML中常用的类图,用例图,顺序图,状态图,活动图这四个部分进行简要介绍. 一.类图 1.类图用于描述系统中类的静态结构,它包括系统中每个类的结构以及类与类之间的关系的描述. 其中类的结 ...
- 4.3 matlab常用的特殊图形(条形图、直方图、饼图、散点图等)
1.其他坐标系下的二维曲线图 (1)对数坐标图 ①semilogx(x1, yl,选项1, x2,y2,选项2,-) 半对数坐标:x轴为常用对数刻度而y轴仍保持线性刻度 ②semilogy(x1, y ...
最新文章
- 从千万级数据查询来聊一聊索引结构和数据库原理
- 日志汇总:logging、logger
- 2018年最佳深度学习书单
- Win7删除不常用的自带应用程序
- 细谈eclipse PDT开发WordPress插件
- 计算机版的微信的功能是什么,计算机上的微信有没有收藏功能?电脑端如何打开微信收藏?...
- pat2020春季考试7-2 The Judger (25 分) 7-4 Replacement Selection (30 分)
- qcap 教程_给winpe添加explorer教程(续):文件列表
- 计算机网络第一章概述
- android仿微信发布动态功能,android实现微信朋友圈发布动态功能
- 从Workflowy到印象笔记
- Android Binder驱动的工作机制之要旨
- 清理桌面状态下鼠标右键“打开好桌道壁纸”选项
- Android中微信抢红包助手的实现
- 微信小程序客服之如何接入多客服
- velocity 模板语法
- 简单的朋友圈界面-Android(一)
- 活码裂变工具对比(2019年最新版)
- 前台离岗提示语_前台接待的礼貌用语
- 支持markdown的服务器,Algernon:支持Lua,Markdown,HTTP/2的全功能Web服务器
热门文章
- 使用Tableau进行基础图表制作
- ios和android 浏览器适配问题总结
- python 白噪声检验-利用python实现平稳时间序列的建模方式
- python安装失败0x80070570_0x80070570 文件或目录损坏且无法读取 CHKDSK 修复方法
- 图片生成 php源码_php图像验证码生成代码
- 云服务器及其存储性能测试方法
- 神经网络和算法的关系,神经网络的算法有哪些
- golang 常量 iota
- 探索 Zynq MPSoC:配套 PYNQ 和机器学习应用一起使用 - 序言鸣谢目录20211231
- push()与pop()的使用