什么是UML?

UMLUnified Model Language的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语言。

为什么要用UML?

通过使用UML使得在软件开发之前, 对整个软件设计有更好的可读性,可理解性,从而降低开发风险。同时,也能方便各个开发人员之间的交流。

UML提供了极富表达能力的建模语言,可以让软件开发过程中的不同人员分别得到自己感兴趣的信息。

Page-Jones 在《Fundamental Object-Oriented Design in UML》 一书中总结了UML的主要目的,如下:

  1. 为用户提供现成的、有表现力的可视化建模语言,以便他们开发和交换有意义的模型。

  2. 为核心概念提供可扩展性 (Extensibility) 和特殊化 (Specialization) 机制。

  3. 独立于特定的编程语言和开发过程。

  4. 为了解建模语言提供一个正式的基础。

  5. 鼓励面向对象工具市场的发展。

  6. 支持更高层次的开发概念,如协作,框架,模式和组件。

  7. 整合最佳的工作方法 (Best Practices)。

UML图有哪些?

  • UML图分为结构图和行为图。

  • 结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。

  • 行为图又分活动图、用例图、状态机图和交互图。

  • 交互图又分为序列图、时序图、通讯图、交互概览图。

UML图概览

什么是类图?

  • 【概念】 类图是一切面向对象方法的核心建模工具。类图描述了系统中对象的类型以及它们之间存在的各种静态关系。

  • 【目的】用来表示类、接口以及它们之间的静态结构和关系。

在类图中,常见的有以下几种关系。

泛化(Generalization)

  • 【泛化关系】是一种继承关系,表示子类继承父类的所有特征和行为。

  • 【箭头指向】带三角箭头的实线,箭头指向父类。

实现(Realization)

  • 【实现关系】是一种类与接口的关系,表示类是接口所有特征和行为的实现。

  • 【箭头指向】带三角箭头的虚线,箭头指向接口。

关联(Association)

  • 【关联关系】是一种拥有关系,它使得一个类知道另一个类的属性和方法。

  • 【代码体现】成员变量

  • 【箭头指向】带普通箭头的实线,指向被拥有者。双向的关联可以有两个箭头,或者没有箭头。单向的关联有一个箭头。

自己买的车,想什么时候开就开。但是车是车,人是人,没有整体与部分的关系。

聚合(Aggregation)

  • 【聚合关系】是一种整体与部分的关系。且部分可以离开整体而单独存在。聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

  • 【代码体现】成员变量

  • 【箭头指向】带空心菱形的实线,空心菱形指向整体。

电脑有键盘才能输入信息,电脑是整体,键盘是部分,键盘也可以离开电脑,单纯的拿去敲。所以是聚合。

组合(Composition)

  • 【组合关系】是一种整体与部分的关系。但部分不能离开整体而单独存在,组合关系是关联关系的一种,是比聚合关系还要强的关系。

  • 【代码体现】成员变量

  • 【箭头指向】带实心菱形的实线,实心菱形指向整体。

鸟是整体,翅膀是部分。鸟死了,翅膀也就不能飞了。所以是组合。我们再看一下,下面的一组经典的聚合组合关系的例子。

一个公司拥有多个部门,公司和部门之间是组合关系,公司破产了,部门就不复存在了。部门和员工是聚合关系,部门被裁掉,员工就换下家了。

依赖(Dependency)

  • 【依赖关系】是一种使用关系,即一个类的实现需要另一个类的协助。

  • 【箭头指向】带普通箭头的虚线,普通箭头指向被使用者。

老司机只管开车,车是谁的不重要,给什么车开什么车。

什么是组件图?

  • 【概念】描绘了系统中组件提供的、需要的接口、端口等,以及它们之间的关系。

  • 【目的】用来展示各个组件之间的依赖关系。

订单系统组件依赖于客户资源库和库存系统组件。中间的虚线箭头表示依赖关系。另外两个符号,表示组件连接器,一个提供接口,一个需要接口。

什么是部署图?

  • 【概念】描述了系统内部的软件如何分布在不同的节点上。

  • 【目的】用来表示软件和硬件的映射关系。

图中简单的表示,不同机器上面部署的不同软件。

什么是对象图?

  • 【概念】对象图是类图的一个实例,是系统在某个时间点的详细状态的快照。

  • 【目的】用来表示两个或者多个对象之间在某一时刻之间的关系。

图中就是描述的,某时间点bat这个公司有一个研发部,一个销售部,两个部门只有一个人iisheng

什么是包图?

  • 【概念】描绘了系统在包层面上的结构设计。

  • 【目的】用来表示包和包之间的依赖关系。

  • 《Use》关系表示使用依赖,Web Shopping依赖Payment

  • 《Merge》关系表示合并,Web Shopping合并了Shopping Cart就拥有了Shopping Cart的功能

  • 《Access》关系表示私有引入,比如代码中的指定包名类名

  • 《Import》关系表示公共引入,比如Java中的import之后,就可以直接使用import包中的类了。

什么是组合结构图?

  • 【概念】描述了一个"组合结构"的内部结构,以及他们之间的关系。这个"组合结构"可以是系统的一部分,或者一个整体。

  • 【目的】用来表示系统中逻辑上的"组合结构"。

图中描述了Car是由车轴连接着的两个前面轮子、两个后面轮子,和引擎组合的。

什么是轮廓图?

  • 【概念】轮廓图提供了一种通用的扩展机制,用于为特定域和平台定制UML模型。

  • 【目的】用于在特定领域中构建UML模型。

图中我们定义了一个简易的EJB的概要图。Bean是从Component扩展来的。Entity BeanSession Bean继承了BeanEJB拥有RemoteHome接口,和JAR包。

什么是用例图?

  • 【概念】用例图是指由参与者、用例,边界以及它们之间的关系构成的用于描述系统功能的视图。

  • 【目的】用来描述整个系统的功能。

用例图中包含以下三种关系:

  • 包含关系使用符号《include》,想要查看订单列表,前提是需要先登录。

  • 扩展关系使用符号《extend》,基于查询订单列表的功能,可以增加一个导出数据的功能

  • 泛化关系,子用例继承父用例所有结构、行为和关系。

什么是活动图?

  • 【概念】描述了具体业务用例的实现流程。

  • 【目的】用来表示用例实现的工作流程。

图中简单描述了,从开始到登录到查看订单列表,或者登录失败直接结束。

什么是状态机图?

  • 【概念】状态机图对一个单独对象的行为建模,指明对象在它的整个生命周期里,响应不同事件时,执行相关事件的顺序。

  • 【目的】用来表示指定对象,在整个生命周期,响应不同事件的不同状态。

图中描述了,门在其生命周期内所经历的状态。

什么是序列图?

  • 【概念】序列图根据时间序列展示对象如何进行协作。它展示了在用例的特定场景中,对象如何与其他对象交互。

  • 【目的】通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

图中展示的是支付宝条码支付场景的序列图。其中,loop是循环,alt是选择,序列图的其他关系这里就不介绍了。

什么是通讯图?

  • 【概念】描述了收发消息的对象的组织关系,强调对象之间的合作关系而不是时间顺序。

  • 【目的】用来显示不同对象的关系。

图中展示了一个线上书店的通讯图,方框和小人表示生命线,不同生命线之间可以传递消息,消息前面的数字可以表达序列顺序。

什么是交互概览图?

  • 【概念】交互概览图与活动图类似,但是它的节点是交互图。

  • 【目的】提供了控制流的概述。

图中表示一个调度系统的交互概览图,跟活动图很像。其中sd的框代表具体的交互流程,ref框代表使用交互。

什么是时序图?

  • 【概念】时序图被用来显示随时间变化,一个或多个元素的值或状态的更改。也显示时控事件之间的交互和管理它们的时间和期限约束。

  • 【目的】用来表示元素状态或者值随时间的变化而变化的视图。

图中展示了老年痴呆病人随着时间的变化病情的变化。

总结

学习UML,我们没必要纠结比如像聚合关系是带箭头还是不带箭头,这样的问题。更重要的是UML图所给我们带来的画图思想,让我们画UML图或者其他图能让其他人更好的理解我们的设计思想。

当然,你要是明确知道带箭头或者不带箭头哪个是错误的,欢迎留言告诉我。

参考文献:
[1]:《Learning UML 2.0》
[2]: https://www.uml-diagrams.org/
[3]: https://www.visual-paradigm.com/guide/
[4]: https://sparxsystems.com/resources/tutorials/

史上最易懂UML类图知识相关推荐

  1. 史上最全电子产品接口知识大全(含实物图40种,收藏)

    史上最全电子产品接口知识大全(含实物图40种,收藏) 2017-07-31 EDN电子技术设计 1.IDE接口(一种硬盘接口) IDE的英文全称为"Integrated Drive Elec ...

  2. UML类图(上):类、继承和实现

    面向对象设计 对于一个程序员来说,在工作的开始阶段通常都是别人把东西设计好,你来做.伴随着个人的成长,这个过程将慢慢变成自己设计一部分功能来实现,自己实现.如果要自己设计,无论是给自己看,还是给别人看 ...

  3. 【Java】UML类图详解-详细易懂

    基本介绍 统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言.它的特点是简单.统一.图形化.能表达软件设计中的动态与静态信息. UML 从目标系统 ...

  4. 【UML】如何记忆UML类图的画法

    目录 1. 前言 2. 元素 2.1. 访问权限 3. 类之间的各种关系 3.1. 泛化 3.2 关联 3.3. 依赖 4. 另一篇参考的博文 1. 前言 UML类图形象反映系统类之间的关系,在正规的 ...

  5. IDEA高级技巧:集成JIRA、UML类图插件、SSH、FTP、Database管理

    IDEA 还有很多高大上的功能,反正我自从改用idea后,再也没开过eclipse,今天来看几个高级功能: 一.与JIRA集成 jira是一个广泛使用的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服 ...

  6. Java开发设计——UML类图

    此博客系转载:https://www.cnblogs.com/shamao/p/10875550.html 摘要:本文主要介绍了UML类图的相关知识. 1.简介 在UML中,类使用包含类名.属性和操作 ...

  7. 软件方法(下)分析和设计第8章连载[20210816更新]分析 之 分析类图——知识篇

    墙上挂了根长藤,长藤上面挂铜铃 <长藤挂铜铃>:词:元庸,曲:梅翁(姚敏),唱:逸敏,1959 您在阅读<软件方法>时如果发现错误,欢迎通过微信umlchina2告知.如果作者 ...

  8. 看懂UML类图和时序图

    看懂UML类图和时序图 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图 ...

  9. 基础(UML类图,设计原则)

    序言: 面向对象是PHP5之后增加的功能,是PHP走向现代语言的一个标志. 在过程式设计时代,PHP以学习成本低.入门快的特点赢得很多WEB开发者的青睐,但同时也限制了PHP的发展. 借鉴Java和C ...

最新文章

  1. 故对于回调函数来说,在其内部使用 this 是不把稳的做法,解决方案可以在其调用时使用 call / apply / bind 显示绑定。
  2. Swfit 常用特性(Attribute)关键字
  3. 系统的crontab设定:/etc/crontab
  4. 边缘计算与云计算的不同,这篇说明白了!
  5. Guava之RangeMap
  6. 【人工智能中“预测”的知识点】
  7. 敏捷开发_敏捷开发之看板
  8. mysql 排序取前4,mysql分组取每组前几条记录(排序)
  9. linux7自动挂载怎么做,CentOS7 Virtual Box 开机自动挂载共享文件夹
  10. 修改Launcher2欢迎页面字符重叠
  11. ROS 内外网做双网卡绑定负载分流教程bonding 配置教程
  12. 人是中国开源产业发展的战略制高点
  13. 从「广义斯托克斯公式」结合「外微分公式」导出「牛顿-莱布尼茨公式」、「格林公式」、「高斯公式」、「斯托克斯公式」
  14. 效率源应邀出席“第九届刑侦、禁毒、反恐新技术新产品应用交流暨高峰论坛”
  15. 谁来拯救中国的语言文学_习惯累积沉淀_新浪博客
  16. 初创小公司需不需要合伙人?
  17. 隐式内联函数和显式内联函数
  18. LeetCode高频题300. 最长递增子序列
  19. bug记录--------JSON parse error:Cannot deserialize value of type `com.test.EnumTest` from String
  20. 32位与64位系统基本数据类型的字节数

热门文章

  1. 【飞行器】基于matlab四旋翼无人机几何跟踪控制【含Matlab源码 2270期】
  2. 九度1465:最简真分数
  3. Java.lang.Character类详解
  4. 全国计算机等级考试试题研究组,全国计算机等级考试试题研究组
  5. 3c认证是什么,3C认证的6个步骤详解
  6. 最新深信服面试笔试题
  7. MySQL学习(一)
  8. 《STM32单片机开发应用教程(HAL库版)—基于国信长天嵌入式竞赛实训平台(CT117E-M4)》第四章4.9 TIM---输入捕获(脉冲频率测量)实验
  9. [渝粤教育] 西南科技大学 管理学原理 在线考试复习资料(1)
  10. Python都能干什么