UML基础

这篇具有很好参考价值的文章主要介绍了UML基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

统一建模语言(UML是 Unified Modeling Language的缩写, 是用来对软件系统进行可视化建模的一种语言。UML为面向对象开发系统的产品 进行说明、可视化、和编制文档的一种标准语言。


UML基础,后端

共有9种图

UML中的图其实不止九种 (相同的图还可能会有不同的名称), 这里的九种图是被普遍认可的基础图, 分别为:用例图、类图、对象图、状态图、构件图、部署图、协作图、交互序列图、活动图。

之前在惠普时,用过时序图(即顺序图,交互序列图)


UML图也可分为用例视图、设计视图、进程视图、实现视图和拓扑视图

又可以根据静动分为静态视图动态视图

  • 静态图分为:用例图,类图,对象图,包图,构件图,部署图

  • 动态图分为:状态图,活动图,协作图,序列图

UML基础,后端
UML基础,后端
UML基础,后端

一般情况下,又以类图,状态图,用例图最为重要


类图(Class Diagram)


类图是使用频率最高的UML图之一

If someone were to come up to you in a dark alley and say, 'Psst, wanna see a UML diagram?' that diagram would probably be a class diagram. The majority of UML diagrams I see are class diagrams.”

--- Martin Fowler 《UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition》[1]

“如果有人在黑暗的小巷中向你走来并对你说:‘嘿,想不想看一张UML图?’那么这张图很有可能就是一张类图,我所见过的大部分的UML图都是类图”(《UML精粹:标准对象建模语言简明指南(第3版)》)

深入浅出UML类图[2]


显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。那它其实就是用来帮助我们识别出人、事、物和业务的概念,并理清它们的关系的一种方法

计算机可以分为笔记本电脑和台式机,现在有主板、硬盘、内存、显示器、键盘、鼠标、无线鼠标、有线鼠标、机械鼠标、光电鼠标、蓝牙鼠标,请画出类之间的关系,不需要写属性,需要假设的地方在图中注明,如假设计算机只有一个显示器


类之间的关系

类与类之间的关系通常有6种,即

  • 依赖关系(Dependency): 用带箭头的虚线表示,箭头从使用类指向被依赖的类

  • 关联关系(Association): 单向关联用一个带箭头的实线表示,箭头从使用类指向被关联的类; 双向关联用带箭头或者没有箭头的实线来表示

    • 聚合关系 (Aggregation) : 是关联关系的一种,表示整体和部分之间的关系(成员也可以脱离整体而存在),如学校和老师,车子和轮胎. 用带空心菱形的实线来表示聚合关系, 菱形指向整体

    • 组合关系 (Composition) : 也是关联关系的一种,是一种比聚合关系还要强的关系(部分对象不能脱离整体对象而单独存在,如人的身体和大脑之间的关系,大脑不能脱离身体而单独存在), 用带实心菱形的实线来表示组合关系,菱形指向整体

  • 实现关系(Realization/implements): 即 接口和实现类之间的关系。类实现了接口中的抽象方法。用带空心三角箭头的虚线来表示实现关系,箭头从实现类指向接口。

  • 泛化关系(Generalization/extends): 也称继承关系, 是父子类之间的继承关系,表示一般与特殊的关系,指定子类如何特殊化父类的特征和行为。 用带空心三角箭头的实线来表示泛化关系,箭头从子类指向父类。


UML基础,后端
UML基础,后端

六种关系中,从弱到强依次是:

依赖关系 < 关联关系 < 聚合关系 < 组合关系 < 实现关系 = 泛化关系

其中,依赖关联还区分单向双向


六大类UML类图之间的关系[3]

UML类图详解[4]

UML基础,后端
UML基础,后端


实例

UML基础,后端

车的类图结构为<<abstract>>,表示车是一个抽象类;

它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;

小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;

小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;

学生与班级之间是聚合关系,使用带空心箭头的实线表示;

学生与身份证之间为关联关系,使用一根实线表示;

学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示;


实例来自

看懂UML类图[5]

常用的UML建模详解[6]



状态(机)图(State Diagram)


状态机图描述的是围绕某一事物状态变化的图。它和活动图的区别在于,活动图是描述事物发生的流程,是多个角色参与的,而状态机描述的是事物的状态变化,并没有角色这个概念。


UML基础,后端

1、和活动图一样,状态机图也是只能有一个开始状态,可以有多个结束状态。

2、状态是通过某一事件来进行变迁的。

3、状态是离散的,且一般用形容词或名词描述。

4、转换也可加上条件,表示分支结构。

UML基础,后端

如:

空调开机进入自检状态,检测不通过进入错误状态并且亮红灯,检测通过默认进入制冷状态,按遥控器模式切换可以在制冷、制热、吹风切换,制冷可以设置温度,并有温度监控程序,室温低于设定温度则停止制冷,高于则开始制冷;制热则反过来;吹风就只能吹风,没有其他功能



实例

UML基础,后端
UML基础,后端
UML基础,后端
UML基础,后端
UML基础,后端
UML基础,后端

实心圆表示开始,只能有一个;

"空心套实心圆"表示结束,可以有多个.

圆角矩形里都是状态,

转移(即直线箭头)上是动作或返回的状态




用例图(Use Case Diagram)


描述了作为一个外部观察者,以其视角对系统的印象。

通俗理解, 用例就是软件的功能模块,所以是设计系统分析阶段的起点

强调这个系统是什么而不是这个系统怎么工作。


角色是人状的图标,用例是一个椭圆,通讯是连接角色和用例的线。


用例之间的关系

  • 包含(include)

  • 扩展(extend)

  • 泛化(generalization)

UML—用例图,Use Case[7]



实例

UML基础,后端
UML基础,后端

用例图的使用案例与分析[8]



在线画图网站:

VisualParadigm[9]

亿图图示[10]

参考资料

[1]

《UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition》: https://book.douban.com/subject/1231832/

[2]

深入浅出UML类图: http://www.uml.org.cn/oobject/201211231.asp

[3]

六大类UML类图之间的关系: https://segmentfault.com/a/1190000021317534

[4]

UML类图详解: https://juejin.cn/post/6844903893327937550#heading-2

[5]

看懂UML类图: https://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html

[6]

常用的UML建模详解: https://note.youdao.com/web/#/file/WEBe8ba4466b3d1775023be4d1dab9cd6c6/note/A895F3772E37471A96C0B73F97C5C1E6/

[7]

UML—用例图,Use Case: https://www.jianshu.com/p/3cde67aed8e9

[8]

用例图的使用案例与分析: https://blog.csdn.net/ljtyzhr/article/details/45875975

[9]

VisualParadigm: https://online.visual-paradigm.com/cn/diagrams/templates/software-design/

[10]

亿图图示: https://www.edrawmax.cn/online/?lang=zh

本文由 mdnice 多平台发布文章来源地址https://www.toymoban.com/news/detail-704403.html

到了这里,关于UML基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 后端开发基础概念

    目前处于项目上手阶段,在学习项目过程中,有一些一知半解或者不明白含义的专业名词或者缩写,在此汇总。里面的内容很多都是基于个人理解,水平有限如果有出错的地方还请各位大佬批评指正。 2023年8月31日00:34:22,已经比较晚了,后续的内容之后再补充吧,一口吃不了

    2024年02月10日
    浏览(41)
  • 【后端开发】01-Java基础语法

    Java基础语法 目录 1. 概述 1.1. 语言特性 1.2. 开发平台 1.3. 开发环境 1.4. 开发步骤 1.5. 注释 2. 变量与运算符 2.1. /保留字 2.2. 标识符 2.3. 变量 2.4. 常用数据类型 2.4.1. 基本数据类型(8种) 2.4.2. 引用数据类型 2.4.3. 数据类型转换 2.5. 运算符 2.5.1. 算术运算符(7个) 2.5.2. 关

    2024年02月08日
    浏览(34)
  • [后端基础] 文件上传的发展史

    【本文首发于微信公众号: [程序员三木]】 欢迎关注我们的微信公众号,获取更多有关Java和Spring的技术文章和教程。 在ajax请求出来之前,人们都是直接通过form表单提交文件,或者form配合iframe(已废弃)进行文件上传,form配合input进行文件选择。 那么为了了解清楚他们的工

    2024年02月01日
    浏览(33)
  • 小程序开发-后端基础知识(上)

    本章主要介绍后端开发所需要的基础知识,包括HTTP请求、服务端处理、数据库操作等。学习者将会学到: HTTP请求的基础知识和处理方法 服务端开发的基础知识 数据库操作的基础知识 理解并熟练掌握后端基础知识对于协调前后端交互,以及开发小程序后台服务有着关键作用

    2024年02月06日
    浏览(34)
  • 从零构建后端项目-创建基础类

    目录 创建自定义异常类 封装Web返回对象 利用Swagger搭建REST API 配置Swagger 一、添加依赖库 二、创建Swagger配置类 三、编写测试Web接口 四、修改全局的配置文件 五、测试Web接口 配置后端验证功能 一、添加依赖 二、创建Form类  三、修改sayHello()方法 四、执行测试 抵御即跨站脚

    2024年02月09日
    浏览(28)
  • 数字IC后端设计如何从零基础快速入门?(内附数字IC后端学习视频)

    数字IC后端工程师主要职责是把数字IC前端工程师写的逻辑功能RTL转变成物理实际连线GDS版图。这个过程的本质是基于一定的时序约束和物理约束将设计的逻辑功能等价转变成物理连接。因为这个GDS最后是要提交给foundary进行芯片加工制作的,光刻机无法识别逻辑功能,它只认

    2024年01月20日
    浏览(43)
  • Nodejs后端架构基础知识和案例展示

    入门笔记,大神请绕路!!! 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。 优点: 1.高并发 (高并发的

    2023年04月11日
    浏览(52)
  • 后端必会的前端vue基础知识

    build ------前端工程webpack构建设置 config ------ 前端工程构建参数设置(index.js 打包) src ---- 项目代码         api ---- 服务端口请求         assets ---- 项目静态文件、图片         coponents ---- 项目自定义组件         mock ----- 模拟数据         router ----- 项目路由配置      

    2024年01月20日
    浏览(47)
  • Flask后端开发(一)-基础知识和前期准备

    目录 1.背景介绍 1.1. 项目背景 1.2. 项目难点 1.3. 项目环境 2. flask后端开发实现的功能 3. flask部署和前后端对接 3.1. flask运行配置和服务器部署 3.2. flask前后端传参 4. 后端测试工具 4.1. 工具介绍 4.2. 工具使用 后记 就是前几个月临时接手了一个后端项目,使用python flask框架进行后

    2024年02月08日
    浏览(49)
  • JAVA后端开发面试基础知识(一)——JVM

    Class loader(类装载) 根据给定的全限定名类名(如: java.lang.Object)来装载class文件到 Runtime data area中的method area。 Execution engine(执行引擎) 执行classes中的指令。 Native Interface(本地接口) 与native libraries交互,是其它编程语言交互的接口。 Runtime data area(运行时数据区域) 这就是我们常说

    2024年03月10日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包