UML基础

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


alt

共有9种图

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

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


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

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

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

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

alt
alt
alt

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


类图(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): 也称继承关系, 是父子类之间的继承关系,表示一般与特殊的关系,指定子类如何特殊化父类的特征和行为。 用带空心三角箭头的实线来表示泛化关系,箭头从子类指向父类。


alt
alt

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

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

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


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

UML类图详解[4]

alt
alt


实例


alt

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

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

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

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

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

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

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


实例来自

看懂UML类图[5]

常用的UML建模详解[6]



状态(机)图(State Diagram)


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


alt

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

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

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

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

alt

如:

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



实例


alt
alt
alt
alt
alt
alt

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

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

圆角矩形里都是状态,

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




用例图(Use Case Diagram)


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

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

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


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


用例之间的关系


  • 包含(include)

  • 扩展(extend)

  • 泛化(generalization)

UML—用例图,Use Case[7]



实例


alt
alt

用例图的使用案例与分析[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 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/98753.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

仿`gRPC`功能实现像调用本地方法一样调用其他服务器方法

文章目录 仿gRPC功能实现像调用本地方法一样调用其他服务器方法 简介单体架构微服务架构RPCgPRC gRPC交互逻辑服务端逻辑客户端逻辑示例图 原生实现仿gRPC框架编写客户端方法编写服务端方法综合演示 仿 gRPC功能实现像调用本地方法一样调用其他服务器方法 简介 在介绍gRPC简介…

编程学习的方向与赛道的选择没有最优解的

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…

docker 笔记2 Docker镜像和数据卷

参考&#xff1a; 1.镜像是什么&#xff1f;&#xff08;面试题&#xff09; 是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文…

聚焦磷酸铁锂产线革新,宏工科技一站式解决方案

兼顾了低成本与安全性两大属性&#xff0c;磷酸铁锂市场在全球范围内持续升温&#xff0c;并有望保持较高的景气度。巨大的需求空间之下&#xff0c;行业对于锂电装备企业的自动化与智能化水平、整线交付能力、产品效率与稳定性等均提出了新的要求。 以宏工科技股份有限公司&a…

客户忠诚度和保留率:不良方法的陷阱

良好的客户忠诚度和保留策略是任何电子商务业务成功的关键因素。但当出现问题时会发生什么&#xff1f;您可以采取哪些措施来鼓励忠诚度并减少客户流失&#xff1f;继续阅读以了解不良客户忠诚度和保留实践的后果。 忠诚度和保留率低下的后果 客户不满意和高流失率 客户忠诚…

MASM32编程状态栏显示字符动画,按钮跑马灯

一、需求分析 由于sysInfo扫描的内容比较多&#xff0c;打算为它增加一点动画效果&#xff0c;提醒用户程序正在运行&#xff0c;耐心等待。 二、构建测试窗口 测试窗口上放置有一个按钮&#xff0c;按钮上的初始文字是“开始扫描”&#xff1b;并使用状态栏&#xff0c;状态…

技术领导力实战笔记25

25&#xff5c;用心做好“鼓励式”管理 激发正能量 授权 分工作&#xff1a; 老人干新事&#xff0c;新人干老事&#xff0c;强者干难事&#xff0c;弱者干细事 新人干老事 所谓新人&#xff0c;是对业务产品不了解&#xff0c;对工作流程不清晰的岗位新人。对于新人来说&…

【Linux内核】以共享内存的方式实现进程间通信

现在有很多进程间通信的模式&#xff0c;但是我们选择一个简单的IPC机制&#xff08;共享内存&#xff09;来实现&#xff0c;并让它工作起来。 简单来讲我们实现了两个系统调用&#xff08;不可避免地需要我们完善IDT&#xff09;&#xff0c;发送方查看接受方是否接收&#…

成都瀚网科技有限公司:抖店的评论会消失吗?

抖店是抖音推出的电子商务平台。很多用户在购物后都会对产品进行评价。但有时用户可能会发现抖店评论缺失&#xff0c;让用户产生一些疑惑和困惑。本文将围绕这个问题提供一些答案和解决方案。 1.为什么抖店评论不见了&#xff1f; 首先需要明确的是&#xff0c;抖店评论消失可…

STM32G030F6 (SOP-20)Cortex ® -M0+, 32KB Flash, 8KB RAM, 17 GPIOs

淘宝淘了一批 STM32G030F6P6 SOP20&#xff0e;先备注一下, 还没想到能干嘛用&#xff0e; 手上的 STM32F103C6T6还剩一些&#xff0e; 一堆 “淘宝原厂STM32F103C8T6”, 还烫着手. 理解信息: ( 逐步补充 ) System Clock GPIOs GPIOs 17 PA[7:0] : 8bits USART Timer ADC I2…

面试中的商业思维:如何展示你对业务的理解

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Ubuuntu22.04 LTS 用户管理,新建用户 adduser,sudo,管理员用户

1、新建用户zzsn adduser zzsn 为用户修改密码 # 为用户修改密码 sudo passwd zzsn 2、验证用户是否创建成功 cat /etc/passwd | grep zzsn 查看系统中所有用户&#xff08;可选&#xff09; grep bash /etc/passwd 3、为新用户授予管理或sudo权限&#xff08;可选&#x…