UML学习

定义:UML是一种用于软件系统分析和设计的标准化建模语言。

作用:用于描述系统的结构、行为、交互等。共定义了10种,并分为4类

①用例图 user case diagram : 从外部用户的角度描述系统的功能,并指出功能的执行者.

静态图(②类图 class diagram ③,对象图 object diagram,④包图 package diagram):类图描述系统的静态结构.对象图是类图的一个实例,描述在某个状态下活某一时间段,系统中活跃的对象及其关系.包图描述系统的分解结构.

行为图(交互图 interactive diagram,⑤状态图 state chart diagram,⑥活动图 active diagram),他们从不同侧面刻画系统的动态行为.交互图描述对象之间的消息传递,交互图能帮助分析人员对照检查每个用例中所描述的用户需求是否落实到能够完成这些功能的类中去实现,提醒分析人员去补充遗漏的类或方法,又分为⑦顺序图 sequence diagram与⑧合作图 collaboration diagram两种形式.顺序图强调对象之间消息发送的时间序,合作图更强调对象之间的动态协作关系.状态图主要用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件(event),以及因状态转移而伴随的动作(action)。活动图可以用于描述系统的工作流程和并发行为。活动图其实可看作状态图的特殊形式,活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的转移可能需要事件的触发)。两者最大的区别是:状态图侧重于描述行为的结果,而活动图侧重描述行为的动作。其次活动图可描述并发行为,而状态图不能。

实现图 implementation diagram:包含⑨构件图 component diagram 和⑩部署图 deployment diagram,它们描述软件实现系统的组成和分布状况.构件图描述软件实现系统中的各组成部件以及他们的依赖关系.部署图描述作为软件系统运行环境的硬件以及网络的物理体系结构,其节点表示实际的计算机和设备.

①用例图(Use Case Diagram):

描述系统的功能需求,展示参与者(Actor)与用例(Use Case)之间的交互。用例之间的关系是用例图的重要组成部分,主要包括以下三种关系:

1. 包含关系(Include)

  • 定义:表示一个用例必须包含另一个用例的行为。

  • 特点:

    • 被包含的用例是基础功能,通常不可独立执行。

    • 包含关系用于提取公共行为,避免重复。

  • UML表示:用一条带箭头的虚线表示,箭头指向被包含的用例,线上标注<<include>>

  • 示例:

    • 用例A:登录

    • 用例B:验证用户

    • 关系:登录必须包含验证用户的行为。

2. 扩展关系(Extend)

  • 定义:表示一个用例可以在特定条件下扩展另一个用例的行为。

  • 特点:

    • 扩展用例是可选的,只有在满足特定条件时才会执行。

    • 扩展关系用于描述可选或异常行为。

  • UML表示:用一条带箭头的虚线表示,箭头指向被扩展的用例,线上标注<<extend>>

  • 示例:

    • 用例A:支付

    • 用例B:使用优惠券

    • 关系:支付可以扩展使用优惠券的行为(如果用户选择使用优惠券)。

3. 泛化关系(Generalization)

  • 定义:表示一个用例是另一个用例的特化(子用例继承父用例的行为)。

  • 特点:

    • 子用例继承父用例的行为,并可以扩展或重写父用例的行为。

    • 泛化关系用于描述用例之间的继承关系。

  • UML表示:用一条带空心箭头的实线表示,箭头指向父用例。

  • 示例:

    • 父用例:支付

    • 子用例:信用卡支付支付宝支付

    • 关系:信用卡支付支付宝支付支付的特化形式。

用例关系的对比

关系类型

描述

特点

UML表示

包含关系

一个用例必须包含另一个用例的行为

被包含用例是基础功能,不可独立

虚线 + <<include>>

扩展关系

一个用例可以扩展另一个用例的行为

扩展用例是可选行为

虚线 + <<extend>>

泛化关系

一个用例是另一个用例的特化

子用例继承父用例的行为

实线 + 空心箭头

②类图(Class Diagram):

描述系统中的类、接口、协作及其关系。UML中.类被划分为三个格子的长方形.

类之间的关系:继承、实现、关联、聚合、组合、依赖。(重点,了解集中依赖关系以及符号表示)

1. 继承(Generalization)

  • 定义:表示类之间的“is-a”关系,即一个类是另一个类的特化(子类继承父类)。

  • 特点

    • 子类继承父类的属性和行为。

    • 子类可以扩展或重写父类的功能。

  • UML表示:用一条带空心箭头的实线表示,箭头指向父类。

    子类 ——————▷ 父类

  • 示例

    • 父类:动物

    • 子类:

    • 关系:都是动物的一种。


2. 实现(Realization)

  • 定义:表示类实现接口,即类必须实现接口中定义的所有操作。

  • 特点

    • 接口定义行为规范,类实现具体行为。

    • 一个类可以实现多个接口。

  • UML表示:用一条带空心箭头的虚线表示,箭头指向接口。

    类 - - - - - -▷ 接口

  • 示例

    • 接口:可飞行

    • 类:飞机

    • 关系:飞机都实现了可飞行接口。


3. 关联(Association)

  • 定义:表示类之间的结构关系,描述对象之间的连接。

  • 特点

    • 可以是单向或双向的。

    • 可以表示一对一、一对多或多对多的关系。

  • UML表示:用一条实线表示,可以带箭头表示方向。

    类A —————— 类B

  • 示例

    • 类:学生课程

    • 关系:一个学生可以选修多门课程,一门课程可以被多个学生选修。


4. 聚合(Aggregation)

  • 定义:表示“整体-部分”关系,部分可以独立于整体存在。

  • 特点

    • 是一种弱关联关系。

    • 整体和部分的生命周期可以独立。

  • UML表示:用一条带空心菱形的实线表示,菱形指向整体。

    整体 ◇————— 部分

  • 示例

    • 整体:汽车

    • 部分:轮胎

    • 关系:汽车轮胎组成,但轮胎可以独立存在。


5. 组合(Composition)

  • 定义:表示更强的“整体-部分”关系,部分不能独立于整体存在。

  • 特点

    • 是一种强关联关系。

    • 部分的生命周期依赖于整体。

  • UML表示:用一条带实心菱形的实线表示,菱形指向整体。

    整体 ◆————— 部分

  • 示例

    • 整体:公司

    • 部分:部门

    • 关系:公司部门组成,部门不能独立于公司存在。


6. 依赖(Dependency)

  • 定义:表示一个类的变化可能影响另一个类,通常是一种临时关系。

  • 特点

    • 依赖关系通常体现在方法参数、局部变量或返回值中。

    • 是一种弱关系。

  • UML表示:用一条带箭头的虚线表示,箭头指向被依赖的类。

    类A - - - - - -▷ 类B

  • 示例

    • 类:订单支付服务

    • 关系:订单依赖于支付服务来完成支付操作。


总结对比

关系类型

描述

强度

生命周期依赖

UML表示

继承

类之间的“is-a”关系

依赖

实线 + 空心箭头

实现

类实现接口

依赖

虚线 + 空心箭头

关联

类之间的结构关系

独立

实线

聚合

弱“整体-部分”关系

独立

实线 + 空心菱形

组合

强“整体-部分”关系

依赖

实线 + 实心菱形

依赖

一个类的变化影响另一个类

独立

虚线 + 箭头

③对象图(Object Diagram):

描述某一时刻系统中的对象及其关系。

④包图(Package Diagram):

描述系统的包结构及其依赖关系。

⑤活动图(Activity Diagram):

描述业务流程或操作流程,展示活动的顺序和并发。

⑥状态图(State Machine Diagram):

描述对象的状态变化,展示状态、事件和转换。

⑦顺序图(Sequence Diagram):

描述对象之间的交互顺序,展示消息传递的时间顺序。

顺序图是一个二维图形。在顺序图中水平方向为对象维,沿水平方向排列的是参与交互的对象。其中对象间的排列顺序并不重要,但一般把表示参与者的对象放在图的两侧,主要参与者放在最左边,次要参与者放在最右边(或表示人的参与者放在最左边,表示系统的参与者放在最右边)。顺序图中的垂直方向为时间维,沿垂直向下方向按时间 递增顺序列出各对象所发出和接收的消息。

⑧通信图(Communication Diagram):

描述对象之间的交互关系,强调对象之间的链接和消息传递。

⑨组件图(Component Diagram):

描述系统的物理结构,展示组件及其依赖关系。

⑩部署图(Deployment Diagram):

描述系统的物理部署,展示节点、组件及其关系。

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

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

相关文章

ChatGPT提问技巧:行业热门应用提示词案例-文案写作

ChatGPT 作为强大的 AI 语言模型&#xff0c;已经成为文案写作的得力助手。但要让它写出真正符合你需求的文案&#xff0c;关键在于如何与它“沟通”&#xff0c;也就是如何设计提示词&#xff08;Prompt&#xff09;。以下是一些实用的提示词案例&#xff0c;帮助你解锁 ChatG…

w~Transformer~合集5

我自己的原文哦~ https://blog.51cto.com/whaosoft/12406495 #transformer~x1 太可怕了都到6了 太强~~ DeepMind 表示&#xff0c;他们提出的算法蒸馏&#xff08;AD&#xff09;是首个通过对具有模仿损失的离线数据进行顺序建模以展示上下文强化学习的方法。同时基于观察…

视频采集卡接口

采集卡的正面有MIC IN、LINE IN以及AUDIO OUT三个接口&#xff0c; MIC IN为麦克风输入&#xff0c;我们如果要给采集到的视频实时配音或者是在直播的时候进行讲解&#xff0c;就可以在这里插入一个麦克风&#xff0c; LINE IN为音频线路输入&#xff0c;可以外接播放背景音乐…

【Linux】29.Linux 多线程(3)

文章目录 8.4 生产者消费者模型8.4.1 为何要使用生产者消费者模型8.4.2 生产者消费者模型优点 8.5 基于BlockingQueue的生产者消费者模型8.5.1 C queue模拟阻塞队列的生产消费模型 8.6. 为什么pthread_cond_wait 需要互斥量?8.7 条件变量使用规范8.8 条件变量的封装8.9 POSIX信…

【漫话机器学习系列】084.偏差和方差的权衡(Bias-Variance Tradeoff)

偏差和方差的权衡&#xff08;Bias-Variance Tradeoff&#xff09; 1. 引言 在机器学习模型的训练过程中&#xff0c;我们常常面临一个重要的挑战&#xff1a;如何平衡 偏差&#xff08;Bias&#xff09; 和 方差&#xff08;Variance&#xff09;&#xff0c;以提升模型的泛…

OpenCV:视频背景减除

目录 简述 1. MOG &#x1f537;1.1 主要特点 &#x1f537;1.2 代码示例 &#x1f537;1.3 运行效果 2. MOG2 &#x1f537;2.1 主要特点 &#x1f537;2.2 代码示例 &#x1f537;2.3 运行效果 3. KNN 4. GMG 5. CNT 6. LSBP 7. 如何选择适合的接口&#xff…

【SpringBoot篇】基于Redis分布式锁的 误删问题 和 原子性问题

文章目录 ??Redis的分布式锁??误删问题 ??解决方法??代码实现 ??原子性问题 ??Lua脚本 ?利用Java代码调用Lua脚本改造分布式锁??代码实现 ??Redis的分布式锁 Redis的分布式锁是通过利用Redis的原子操作和特性来实现的。在分布式环境中&#xff0c;多个应用…

计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas)

计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas) 文章目录 计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas)摘要Abstract一、Attention U-Net1. 基本思想2. Attention Gate模块3. 软注意力与硬注意力4. 实验…

Unity笔试常考

线程同步的几种方式 1.信号量pv操作 2.互斥加锁 3.条件变量 五层网络协议指的是哪五层 1.应用层 2.运输层 3.网络层 4.链路层 5.物理层 TCP和UDP区别 tcp 面向连接&#xff0c;保证发送顺序&#xff0c;速度慢&#xff0c;必须在线&#xff0c;三次握手&#xff0c;4次挥手…

Docker数据卷管理及优化

一、基础概念 1.docker数据卷是一个可供容器使用的特殊目录&#xff0c;它绕过了容器的文件系统&#xff0c;直接将数据存在宿主机上。 2.docker数据卷的作用&#xff1a; 数据持久化&#xff1a;即使容器被删除或重建数据卷中的数据仍然存在 数据共享&#xff1a;多个容器可以…

【AIGC】冷启动数据与多阶段训练在 DeepSeek 中的作用

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;冷启动数据的作用冷启动数据设计 &#x1f4af;多阶段训练的作用阶段 1&#xff1a;冷启动微调阶段 2&#xff1a;推理导向强化学习&#xff08;RL&#xff0…

Qt:项目文件解析

目录 QWidget基础项目文件解析 .pro文件解析 widget.h文件解析 widget.cpp文件解析 widget.ui文件解析 main.cpp文件解析 认识对象模型 窗口坐标系 QWidget基础项目文件解析 .pro文件解析 工程新建好之后&#xff0c;在工程目录列表中有⼀个后缀为 ".pro" …

BiGRU双向门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据)

代码地址&#xff1a;BiGRU双向门控循环单元多变量多步预测&#xff0c;光伏功率预测&#xff08;Matlab完整源码和数据) BiGRU双向门控循环单元多变量多步预测&#xff0c;光伏功率预测 一、引言 1.1、研究背景和意义 随着全球对可再生能源需求的不断增长&#xff0c;光伏…

数据结构与算法-递归

单路递归 二分查找 /*** 主函数&#xff1a;执行二分查找。* * param a 要搜索的数组&#xff08;必须是已排序的&#xff09;* param target 目标值* return 返回目标值在数组中的索引&#xff1b;如果未找到&#xff0c;则返回 -1*/ public static int binarySearch(int[] …

【STM32F1】一种使用通用定时器实现各个通道独立输出不同指定数量脉冲的方法

一种使用通用定时器实现独立通道输出指定数量脉冲的方法 一种使用通用定时器实现独立通道输出指定数量脉冲的方法概述实验平台配置步骤1. 初始化定时器与GPIO2. 设置定时器工作模式3. 编写脉冲计数逻辑4. 调整参数以满足要求注意事项 代码实现电机结构体配置&#xff0c;GPIO配…

【Java基础】序列化、反序列化和不可变类

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;Java基础面经 &#x1f4da;本系列文章为个…

android apk反编译

使用解压工具解压apk&#xff0c;使用dex2jar解析其中的dex文件为jar文件&#xff0c;再使用jd-gui将class反编译为java文件 1 工具下载 dex2jar下载 https://github.com/pxb1988/dex2jar/releases 直接去github上下载最新发布版本 注意&#xff0c;如果后面使用过程中遇到No…

PAT乙级( 1009 说反话 1010 一元多项式求导)C语言版本超详细解析

1009 说反话 给定一句英语&#xff0c;要求你编写程序&#xff0c;将句中所有单词的顺序颠倒输出。 输入格式&#xff1a; 测试输入包含一个测试用例&#xff0c;在一行内给出总长度不超过 80的字符串。字符串由若干单词和若干空格组成&#xff0c;其中单词是由英文字母&#x…

C++20导出模块及使用

1.模块声明 .ixx文件为导入模块文件 math_operations.ixx export module math_operations;//模块导出 //导出命名空间 export namespace math_ {//导出命名空间中函数int add(int a, int b);int sub(int a, int b);int mul(int a, int b);int div(int a, int b); } .cppm文件…

鸿蒙接入支付宝SDK后模拟器无法运行,报错error: install parse native so failed.

鸿蒙项目接入支付宝后&#xff0c;运行提示error: install parse native so failed. 该问题可能由于设备支持的 Abi 类型与 C 工程中的不匹配导致. 官网error: install parse native so failed.错误解决办法 根据官网提示在模块build-profile.json5中添加“x86_64”依然报错 问…