UML简单小结

文章目录

  • 一、UML概述
  • 二、UML建模工具
  • 三、类图
    • 1、概念
    • 2、组成
  • 四、类与类之间的关系
    • 1、继承
    • 2、实现
    • 3、依赖
    • 4、关联
    • 5、聚合
    • 6、组合
  • 五、常见UML图
    • 1、用例图
      • 1) 概念
      • 2)组成
      • 3)用例图所包含的的关系
        • 关联(Association)
        • 泛化(Inheritance)
        • 包含(Include)
        • 扩展(Extend)
    • 2、时序图
      • 1)是什么?
      • 2)元素
    • 3、状态图
      • 1)是什么
      • 2)元素
    • 4、活动图
      • 1)是什么
      • 2)元素
    • 5、组件图
    • 6、部署图

一、UML概述

统一建模语言,用来对软件密集系统进行可视化建模的一种语言

比如在盖楼之前,这个楼需要盖成怎么样,需要先有整体的设计,就需要先画图纸,用啥来画?就需要用到工具

可以理解为图形化语言,用来画图的,指导我们后续的开发

二、UML建模工具

Power Designer、Visio、ProcessOn、有道云、Rational Rose、StarUML、枫叶云…

三、类图

1、概念

定义系统中的类,描述类的内部结构 (属性, 方法等),表示类之间的关系 (泛化、实现、依赖、关联、聚合、组合)

2、组成

1)名称部分
位于顶端

2)属性部分
位于中间

语法:[可见性]属性名[:类型][=初始值][{属性字符串}]

  • [] 的内容可以不写
  • 可见性:

    公有 : 用 “+” 表示, 可以在此类的外部使用查看该属性
    私有 : 用 “-” 表示, 不可以从外部类中访问该属性
    保护 : 用 “#” 表示, 常与 泛化一起使用

3)方法部分
位于底部

语法:[可见性]操作名[(参数表)][:返回类型][{属性字符串}]

  • [] 的内容可以不写
  • 参数表:存在多个的话,用逗号隔开
  • 可见性:

    公有 : 用 “+” 表示, 只要调用对象能访问操作所在的包, 就能访问公有操作
    私有 : 用 “-” 表示, 同一个类的对象才能调用私有的操作
    保护 : 用 “#” 表示, 子类对象才可以调用受保护操作
    包内 : 用 “~” 表示, 同一个包内的对象才可以调用包内公有的操作

四、类与类之间的关系

1、继承

语义:类和子类的关系,接口和子接口的关系;一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能

语法:extends

符号:一条带空心三角箭头的实线,从子类指向父类,或者子接口指向父接口
在这里插入图片描述
在这里插入图片描述

2、实现

语义:类和接口之间的关系;一个类可以实现多个接口,实现所有接口的功能。

语法:implements

符号:一条带空心三角箭头的虚线表示,从类指向实现的接口
在这里插入图片描述

3、依赖

语义:一个类A使用到了另一个类B,但是这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A

语法:类B作为类A的方法的参数(或者局部变量)存在

符号:由类A指向类B的带箭头虚线表示

例如,学生吃饭的话,可以选择去饭堂,也可以选择点外卖,饭堂没了,会让学生少了一种选择
在这里插入图片描述

4、关联

语义:一个类A使用到了另一个类B,属于强依赖,必然的,长期的

语法:类B作为成员变量形成存在于类A中

符号:由类A指向类B的带箭头实线表示

例如,订单里面包含商品,那么两者就是关联关系
在这里插入图片描述

5、聚合

语义:关联关系的一种特例,整体和部分的关系,整体部分可分离,整体的生命周期和部分的生命周期不同,has-a的关系

语法:类B作为成员变量形成存在于类A中

符号:由类A指向类B的带空心菱形实线

例如,计算机与CPU、公司与员工的关系、班级和学生的关系、球队和球员
在这里插入图片描述

6、组合

语义:关联关系的一种特例,整体和部分关系、整体部分不可分离,整体的生命周期和部分的生命周期相同,contains-a的关系

语法:类B作为成员变量形成存在于类A中

符号:由类A指向类B的带实心菱形实线

例如,人和四肢的关系
在这里插入图片描述

五、常见UML图

1、用例图

1) 概念

用例图是由参与者、用例,边界以及它们之间的关系构成的,用于描述系统功能的视图。
注:边界一般可不画

简单理解,就是用户可以干啥

用例图主要用来描述角色以及角色与用例之间的连接关系 。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素 ,如系统、参与者和用例,并且显示这些元素之间的各种关系 ,如泛化 、关联 和依赖 。它展示了一个外部用户能够观察到的系统功能模型图。

【用途】:帮助开发团队以一种可视化的方式理解系统的功能需求。

2)组成

参与者(Actor)
与应用程序或系统进行交互的用户、组织或外部系统,用小人表示
在这里插入图片描述

用例(Use Case)
用例就是外部可见的系统功能,对系统提供的服务进行描述。用椭圆表示
在这里插入图片描述

子系统(Subsystem)
用来展示系统的一部分功能,这部分功能联系紧密(就是具体的系统功能)
在这里插入图片描述

3)用例图所包含的的关系

在这里插入图片描述

关联(Association)

表示参与者与用例之间的通信,任何一方都可发送或接受消息。
【箭头指向】:无箭头,将参与者与用例相连接,指向消息接收方
在这里插入图片描述

泛化(Inheritance)

就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。

【箭头指向】:指向父用例
在这里插入图片描述

包含(Include)

包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。包含关系对典型的应用就是复用,也就是定义中说的情景。但是有时当某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包含的用例;相反,用例划分太细时,也可以抽象出一个基用例,来包含这些细颗粒的用例。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。

例如:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那添加、修改以及删除都要在用例详述中描述,过于复杂;如果分成添加用例、修改用例和删除用例,则划分太细。这时包含关系可以用来理清关系。

【箭头指向】:指向分解出来的功能用例
在这里插入图片描述

扩展(Extend)

扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。

对于一个扩展用例,可以在基用例上有几个扩展点。

【箭头指向】:指向基础用例
在这里插入图片描述

2、时序图

1)是什么?

时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图,当用户进行某个操作的时候,按照时间的顺序看,各个模块之间如何调用的。描述了方法的调用过程,程序的执行流程,以及方法执行结束的返回值情况。所以用例图当中的一个用例会对应一个时序图,该时序图描述的是该功能/用例具体是怎么实现的,流程是什么。严格情况下,肯定是先设计再开发。

简单来说,就是按照时间,调用各个模块

2)元素

在这里插入图片描述
角色(Actor)
在这里插入图片描述
对象(Object)
在这里插入图片描述
生命线(LifeLine)
image.png

控制焦点(Activation)
可以体现生命周期
image.png

消息(Message)
image.png

3、状态图

1)是什么

状态图(statechart diagram):用来操述一个特定的对象所有可能的状态,以及哪些事件将导致状态改变。

2)元素

在这里插入图片描述
箭头表示一个转换/一个动作

箭头上的文字:表示一个事件
image.png
长方形表示某种状态
image.png
起始状态 :是一种伪状态,只是表示从这里要开始 (可选)
image.png
结束状态:是一种伪状态,只是表示从这里要结束(可选)
image.png

4、活动图

在这里插入图片描述

1)是什么

活动图(activity diagram)是UML的动态规图之一,用来描述事物或对象的活动变化流程。类似流程图,描述从一个动作转移到另外一个动作,阐明了业务用例实现的工作流程。

2)元素

1)开始:线条表示-活动流(ActionFlow):描述活动之间的有向关系,表示一个活动向另外一个活动之间的转移。用带箭头的实线表示。
在这里插入图片描述
2)结束
在这里插入图片描述
(3)活动:
在这里插入图片描述
(4)条件转移(分支):表示从一个活动按照某种条件转移到几个不同的活动。
在这里插入图片描述
(5)分劈和汇合:表示并发的同步行为,用同步杆表示。 - 》 有分劈、有汇总
在这里插入图片描述

5、组件图

组件图用来建立系统的各个组件之间的关系(网站分了多少层,每层有多少组件),它们是通过功能或者文件组织在一起,使用组件图可以帮助读者了解某个功能位于软件包的哪一位置,以及各个版本的软件包含那些功能。如javabean、 ejb 、 jsp都是组件。

组件元素为:
在这里插入图片描述

用途:组件图可以用来帮助设计系统的整体构架
例如:
在这里插入图片描述

6、部署图

用于部署软件应用的物理设备信息
在这里插入图片描述

https://cloud.fynote.com/share/d/2979#%E5%9B%9B-%E7%B1%BB%E5%9B%BE%E4%B9%8B%E7%B1%BB%E5%92%8C%E7%B1%BB%E4%B9%8B%E9%97%B4%E7%9A%84%E5%85%B3%E7%B3%BB_28

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

web笔记再整理

前四天笔记在此连接: web前端笔记表单练习题五彩导航栏练习题-CSDN博客https://blog.csdn.net/simply_happy/article/details/136917265?spm1001.2014.3001.5502 # 1.边框弧度​ div {​ width: 300px;​ height: 50px;​ background-color: aqua;​ …

sql注入之时间注入

一、时间注入 时间注入又名延时注入,属于盲注入的一种,通常是某个注入点无法通过布尔型注入获取数据,而采用一种突破注入的技巧。 在 mysql 里 函数 sleep() 是延时的意思,sleep(10)就是数据库延时 10 秒返回内容。判断注入可以使…

G2D图像处理硬件调用和测试-基于米尔-全志T113-i开发板

本篇测评由电子工程世界的优秀测评者“jf_99374259”提供。 本文将介绍基于米尔电子MYD-YT113i开发板的G2D图像处理硬件调用和测试。 MYC-YT113i核心板及开发板 真正的国产核心板,100%国产物料认证 国产T113-i处理器配备2*Cortex-A71.2GHz ,RISC-V 外置…

Selenium自动化测试网页加载太慢如何解决?

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 遇到网页加载慢,selenium运行效率降低,可以通过修改页面加载策略提升自动…

docker-compose yaml指定具体容器网桥ip网段subnet;docker创建即指定subnet;docker取消自启动

1、docker-compose yaml指定具体容器网桥ip网段subnet docker-compose 启动yaml有时可能的容器网段与宿主机的ip冲突导致宿主机上不了网,这时候可以更改yaml指定subnet 宿主机内网一般是192**,这时候容器可以指定172* version: 3.9 services:coredns:…

Django之rest_framework(四)

扩展的视图类介绍 rest_framework提供了几种后端视图(对数据资源进行增删改查)处理流程的实现,如果需要编写的视图属于这几种,则视图可以通过继承相应的扩展类来复用代码,减少自己编写的代码量 官网:3 - Class based views - Django REST framework rest_framework.mixi…

比特币突然暴跌

作者:秦晋 周末愉快。 今天给大家分享两则比特币新闻,也是两个数据。一则是因为中东地缘政治升温,传统资本市场的风险情绪蔓延至加密市场,引发加密市场暴跌。比特币跌至66000美元下方。杠杆清算金额高达8.5亿美元。 二则是&#x…

【Node.js】Express学习笔记(黑马)

目录 初识 ExpressExpress 简介Express 的基本使用托管静态资源nodemon Express 路由路由的概念路由的使用 Express 中间件中间件的概念Express 中间件的初体验中间件的分类 初识 Express Express 简介 什么是 Express? 官方给出的概念:Express 是基于…

书生·浦语大模型全链路开源体系-第3课

书生浦语大模型全链路开源体系-第3课 书生浦语大模型全链路开源体系-第3课相关资源RAG 概述在 InternLM Studio 上部署茴香豆技术助手环境配置配置基础环境下载基础文件下载安装茴香豆 使用茴香豆搭建 RAG 助手修改配置文件 创建知识库运行茴香豆知识助手 在茴香豆 Web 版中创建…

Windows 10明年退役

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Windows 10 生命周期终止,收费预警二、收费标准:基于云的方式,使用 Windows 10 的 PC 也能接收 ESU高定价背后还是主推 …

如何查看个人大数据信用报告?查询报告哪家好呢?

大数据信用报告是现代社会中非常重要的信用评估工具,对于个人来说也具有非常重要的意义。那么,如何查看个人大数据信用报告?查询报告哪家好呢?本文将为您介绍。 首先,查看个人大数据信用报告需要了解报告的内容和格式 一般来说,…

vite+vue3+antDesignVue 记录-持续记录

记录学习过程 持续补充 每天的学习点滴 开始时间2024-04-12 1,报错记录 (1)env.d.ts文件 解决方法: 在env.d.ts文件中添加以下代码(可以看一下B站尚硅谷的讲解视频) declare module *.vue {import { Defi…

Hello算法11:排序

https://www.hello-algo.com/chapter_sorting/ 选择排序 初始未排序的区间是[0,n-1]在[0,n-1]中查找最小元素,和索引0交换,此时未排序的区间是[1,n-1]在[1,n-1]中查找最小元素,和索引1交换,此时未排序区间是[2,n-1]以此类推&…

Langchain-Chatchat在windows平台离线部署(1)

Langchain-Chatchat在windows平台离线部署(1) pwd的不兼容 在调用数据库初始化程序的时候,系统将会调用pebblo.py程序,在此程序中,需要调用基于linux平台的pwd程序。 在windows环境下,pwd模块不兼容&…

extends继承

目录 什么时候用继承? 继承的格式? 继承的特点 子类可以继承父类的哪些呢? 是否可以继承父类的构造方法呢? 是否可以继承成员变量? 是否可以继承成员方法? 在Java中,extends关键字用于实现继承关系。通过使用…

WInForm —— 自定义画板

项目模板:要实现在背景和无背景上完成画线,画直线、矩形、椭圆、并能随意调整字体的大小 首先要定义绘制的类型 enum DrawMode {None, // 没有选择绘制型Pen, // 画笔 画直线Line,// 画直线Rectangle,// 画矩形Ellipse, // 画椭圆Rubber // 橡皮擦 } //如果要想…

【Linux】进程的优先级及linux下进程的调度于切换

目录 ​编辑 1.优先级是什么 2.linux中的优先级是怎么实现的 ps -la 命令查看当前用户启动的进程​编辑 linux下调整优先级: ①先top一下 ②点击r ③需要输入进程的pid ④回车 ​编辑 ⑤输入想将优秀级修改的值: linux进程优先级范围为什么必须是【60,9…

Navicat的安装与破解

个人介绍 hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的…

《系统分析与设计》实验-----需求规格说明书 哈尔滨理工大学

文章目录 需求规格说明书1.引言1.1编写目的1.2项目背景1.3定义1.4参考资料 2.任务概述2.1目标2.2运行环境2.3条件与限制 3.数据描述3.1静态数据3.2动态数据3.3数据库介绍3.4数据词典3.5数据采集 4.功能需求4.1功能划分4.2功能描述…

Java——封装、访问修饰符、包

目录 一.封装的概念 二.访问限定符 三.封装扩展之包 1.包的概念 2.导入包中的类 3.自定义包 4.包的访问权限控制举例 5.常见的包 一.封装的概念 面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。何为封装呢&am…