StartUML的基本使用
文章目录
- 简介和安装
- 创建包
- 创建类视图
- 时序图
简介和安装
最近在学习一个项目的时候用到了StartUML来构造项目的类图和时序图
虽然vs2019有类视图,但是也不是很清晰,并没有生成uml图,但是宇宙最智能的IDE IDEA有生成uml图的功能
下面就简单介绍一下这个uml工具的简单使用
首先这个软件是要收费的,发现国外这个收费软件还挺多的,国内基本都是会员制度,这个还是有区别的,但是如果你手头不宽裕的话您可以搜破解教程,但是宽裕的话还是支持一下正版,毕竟这个软件真的很强大。
安装好了之后打开就会显示下图界面(我的是6.0版本)
这里为什么把它叫做uml工程能,因为它和项目工程一样可以分包,一个类就对应这里的一个类图
例如我这里一个c++项目对应的uml工程
创建包
一般工程都会分包那么我们uml工程对应也要分包所以一般都是先添加包(package)
鼠标右键点击工程–>Add->Package
添加之后会默认生成一个包名:
鼠标点击包然后在右下角可以修改包属性:
创建类视图
在上面创建包的基础上,右键点击包–>Add–>Class
这里也会生成默认类名,同上点击类在右下角可以修改类属性
这里说明一下上面几个属性:
-
isAbstarct:是否为抽象类 这个在java中是这么叫,但是c++中一般叫虚基类
-
isFinalSpeciialization:是否可被继承, java中final修饰的类就是不可再被继承,c++11中同样有这个属性也是final修饰的类不可被继承,这样的类叫终态类
-
isLeaf:是否为叶子类,什么是叶子类我们知道在树这种数据结构种有一种节点叫叶子节点,即没有任何子节点的节点,那么同理叶子类就是没有任何子类的类
-
isActive:这个我还没用过,gpt的解释如下:
pp表示还是有点抽象
isActive:表示是否为活动类。在 UML
中,活动类通常用来表示具有状态和行为的类,也可以表示在系统中具有一定主动行为的类。将一个类标记为活动类,意味着该类具有一定的主动性质。isActive
属性用于指示一个类是否被设计为活动类。
然后就是添加类属性和方法(函数)这里可以直接添加也可以通过类图的方式添加:
直接添加就是通过右键点击类名–>add:
通过类图的方式添加首先鼠标选中类然后拖动到网格区域中
然后右键点击类图同样会出现上面直接右键点击类名的选项,
点击operation是添加方法(函数),点击attribute是添加属性
对于方法(函数)的表示:方法名(参数名1:类型,参数名2:类型,…):返回值类型
对于属性:属性名:属性类型
当然也可以选中之后在右下加修改添加
这里其实有一些bug就是你再类图上修改属性或者方法名的时候可能报错因为可能某些字符和它的脚本解释器指定的关键字冲突了,比如c++的析构函数的~,其实之哟啊在右下角的属性页修改名称就不会报错了
创建类图之间的关系
uml类图之间有六种关系:
@关联:直接用一条实线连接两个类,并在连线上标注角色名称和多重性。例如,学生与课程之间的关联关系可以用实线连接,表示学生和课程之间存在双向关系。
@依赖:用带箭头的虚线表示,箭头从使用类指向被依赖的类。表示一个类在某个方法中使用了另一个类的对象。例如,如果一个类的方法中有另一个类作为参数,那么它们之间就存在依赖关系。
@泛化:用带空心三角形的实线表示,从子类指向父类。表示一种继承关系,子类继承了父类的特征和行为。
@实现:用带空心三角形的虚线表示,从实现类指向接口。表示一个类实现了接口定义的所有方法。例如,一个类实现了一个接口中定义的所有方法,就可以用实现关系表示出来。
@聚合:用带空心菱形的实线表示,连接整体与部分,整体与部分之间是一种拥有关系,但部分可以存在独立于整体之外。例如,电脑与键盘、鼠标之间的关系可以用聚合关系表示。
组合关系:用带实心菱形的实线表示,连接整体与部分,整体与部分之间是一种包含与被包含的关系,部分不能独立存在于整体之外。例如,车与引擎之间的关系可以用组合关系表示。
时序图
时序图可以理解成程序执行流程图
例如我现在有一个程序:
class A{
public:
int Afunc1(){}
bool Afunc2(){}
bool Afunc3(){}
}int main()
{
Afnuc1();
Afunc2();
if(Afun2())
{
while(Afunc3())
{
Afunc1();
}
}
return 0;
}
右键点击工程–>Add Diagram–>Sequence Diagram
然后把要用到的类拖上去
相关文章:

StartUML的基本使用
文章目录 简介和安装创建包创建类视图时序图 简介和安装 最近在学习一个项目的时候用到了StartUML来构造项目的类图和时序图 虽然vs2019有类视图,但是也不是很清晰,并没有生成uml图,但是宇宙最智能的IDE IDEA有生成uml图的功能 下面就简单介…...

飞天使-django概念之urls
urls 容易搞混的概念,域名,主机名,路由 网站模块多主机应用 不同模块解析不同的服务器ip地址 网页模块多路径应用 urlpatterns [ path(‘admin/’, admin.site.urls), path(‘’, app01views.index), path(‘movie/’, app01views.movi…...

MongoDB分片集群搭建
----前言 mongodb分片 一般用得比较少,需要较多的服务器,还有三种的角色 一般把mongodb的副本集应用得好就足够用了,可搭建多套mongodb复本集 mongodb分片技术 mongodb副本集可以解决数据备份、读性能的问题,但由于mongodb副本集是…...

modbus报文
MODBUS规约报文解析-CSDN博客...

flutter报错: library “libflutter.so“ not found
修改android/app/build.gradle defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "cn.rentsoft.flutter.openim.consumer" // You can update the …...

MR混合现实情景实训教学系统模拟历史情景
二、应用场景 1. 古代战争场景:通过MR混合现实情景实训教学系统,学生可以亲身体验古代战争的场景,如战场布置、战术运用等。这不仅有助于学生更好地理解古代战争的特点,还能够培养他们的团队协作和战略思维能力。 2. 历史文化古…...

计算机视觉的应用16-基于pytorch框架搭建的注意力机制,在汽车品牌与型号分类识别的应用
大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用16-基于pytorch框架搭建的注意力机制,在汽车品牌与型号分类识别的应用,该项目主要引导大家使用pytorch深度学习框架,并熟悉注意力机制模型的搭建,这个…...

Flutter 实现 Android CollapsingToolbarLayout折叠布局效果
Flutter 是通过Tabbar TabbarView 来实现 类似Android Viewpager 页面切换的效果的。我个人觉得Flutter 的tab 切换实现过程要比Android的实现过程要简单容易不是一星半点,哈哈哈哈 ,因为她所用到的widget 都是google 官方封装好的,用起来代…...

数据库管理-第116期 Oracle Exadata 06-ESS-下(202301114)
数据库管理-第116期 Oracle Exadata 06-ESS-下(202301114) 距离上一次正儿八经的技术分享又过了整整一周了,距离上一期Exadata专题文章也过了11天了,今天一鼓作气把ESS写完,毕竟明天又要飞北京了。 1 Smart Scan 其…...

阿里云C++二面面经
1.智能指针 1、shared_ptr 原理:shared_ptr是基于引用计数的智能指针,用于管理动态分配的对象。无论 std::shared_ptr 存储在堆区还是栈区,它所指向的内存块始终存储在堆区。这是因为 std::shared_ptr 是用于管理动态分配的内存的智能指针,它需要存储在堆区,以便进行引用…...

Ubuntu 20.04编译Chrome浏览器
本文记录chrome浏览器编译过程,帮助大家避坑qaq 官网文档:https://chromium.googlesource.com/chromium/src//main/docs/linux/build_instructions.md 一.系统要求 一台64位的英特尔机器,至少需要8GB的RAM。强烈推荐超过16GB。至少需要100…...

大文件分片上传、断点续传、秒传
小文件上传 后端:SpringBootJDK17 前端:JavaScriptsparkmd5.min.js 一、依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.2</ve…...

DAY53 1143.最长公共子序列 + 1035.不相交的线 + 53. 最大子序和
1143.最长公共子序列 题目要求:给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删…...

短剧App开发:个性化的内容推荐
随着移动互联网的普及和用户需求的多样化,短剧App作为一种新兴的内容消费模式,受到了越来越多用户的青睐。在短剧App开发中,个性化的内容推荐是一个重要的功能,它能够根据用户的兴趣偏好和行为数据,为他们提供更精准、…...

互斥量保护资源
一、概念 在多数情况下,互斥型信号量和二值型信号量非常相似,但是从功能上二值型信号量用于同步, 而互斥型信号量用于资源保护。 互斥型信号量和二值型信号量还有一个最大的区别,互斥型信号量可以有效解决优先级反转现 象。 …...

天机学堂-1、项目搭建,微服务架构设计
1.学习背景 各位同学大家好,经过前面的学习我们已经掌握了《微服务架构》的核心技术栈。相信大家也体会到了微服务架构相对于项目一的单体架构要复杂很多,你的脑袋里也会有很多的问号: 微服务架构该如何拆分? 到了公司中我需要自…...

windows 电脑删除不了.TTF的文件
出现这个问题,首先检查,你的.ttf文件是不是在哪个软件中打开了。 如果是,先关掉,然后在删一遍试试。 如果这个还是不行试着打开控制面板>外观和个性化> 字体 > 字体设置>还原默认字体设置勾选,然后重启一下…...

C#多线程的操作
文章目录 1 使用线程意义2 C#线程开启的四种方式2.1 异步委托开启线程2.2 通过Thread类开启线程2.3 通过线程池开启线程2.4 通过任务Task开启线程 3 前台线程和后台线程简述3.1 前台线程3.2 后台线程 4 简述Thread和Task开启线程的区别4.1 Thread效果展示4.2 Task效果展示4.3 区…...

MyBatis Plus—CRUD 接口
Service CRUD 接口 说明: 通用 Service CRUD 封装IService (opens new window)接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,泛型 T 为任意实体对象建议如果存在自定义通用 Servi…...

火焰图:链路追踪分析的可视化利器
什么是火焰图? 火焰图用于可视化分布式链路追踪,通过使用持续时间和不同颜色的水平条形来表示请求执行路径中的每个服务调用。分布式跟踪的火焰图包括错误、延迟数据等详情,帮助开发人员识别和解决应用程序中的瓶颈问题。 链路追踪与 Span …...

中睿天下Coremail | 2023年Q3企业邮箱安全态势观察报告
10月25日,北京中睿天下信息技术有限公司联合Coremail邮件安全发布《2023年第三季度企业邮箱安全性研究报告》。2023年第三季度企业邮箱安全呈现出何种态势?作为邮箱管理员,我们又该如何做好防护? 以下为精华版阅读,如需…...

HBuilderX vue项目打包上传到服务器
完成后有个’dist’目录,把真个目录通过FTP 上传到服务器,Mac电脑使用cyberduck 上传 服务器使用‘宝塔’进行一件部署,基本上就是傻瓜式的点击下一步...

2656. K 个元素的最大和 --力扣 --JAVA
题目 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你需要执行以下操作 恰好 k 次,最大化你的得分: 从 nums 中选择一个元素 m 。 将选中的元素 m 从数组中删除。 将新元素 m 1 添加到数组中。 你的得分增加 m 。 请你返回执行以上操作恰好 k …...

从HTTP到Tomcat:揭秘Web应用的底层协议与高性能容器
WEB服务器 1. HTTP协议1.1 HTTP-概述1.1.1 介绍1.2.2 特点 2.2 HTTP-请求协议2.3 HTTP-响应协议2.3.1 格式介绍2.3.2 响应状态码 2.4 HTTP-协议解析 2. WEB服务器-Tomcat2.1 简介2.1.1 服务器概述2.1.2 Web服务器2.1.3 Tomcat 2.2 基本使用2.2.1 下载2.2.2 安装与卸载2.2.3 启动…...

百度搜索智能化算力调控分配方法
作者 | 泰来 导读 随着近年深度学习技术的发展,搜索算法复杂度不断上升,算力供给需求出现了爆发式的增长。伴随着AI技术逐步走到深水区,算法红利在逐步消失,边际效应日益显著,算力效能的提升尤为重要,同时随…...

如何搭建接口自动化测试框架?
经过了一年多的接口测试工作,旧的框架也做了一些新的调整,删除了很多冗余的功能,只保留了最基本的接口结构验证、接口回归测试、线上定时巡检功能。 一、框架的演进 界面 UI 做了优化,整个框架的画风突然不一样了(人靠…...

ubuntu 20.04+ORB_SLAM3 安装配库教程
目录 安装ros(如果只是运行ORB-SLAM3,可以跳过安装)0. ros 安装教程1. 安装opencv2. 安装Pangolin3. 安装Eigen34.安装Python & libssl-dev5.安装boost库6.安装ceres库(不必须)7.安装Sophus库(不必须)8. 安装g20库…...

Poly风格模型的创建与使用_unity基础开发教程
Poly风格模型的创建与使用 安装Poly相关组件Poly模型的创建Poly模型编辑 安装Poly相关组件 打开资源包管理器Package Manager 在弹出的窗口左上角Packages选择Unity Registry 搜索框搜索 Poly 搜索结果点击Polybrush 点击右下角 Install 同时也别忘了导入一下模型示例&#…...

终于有人把VMware虚拟机三种网络模式讲清楚了!
前段时间VMware更新了,你用上最新版了吗? 有几个网工在操作中遇到过各种各样的问题。 比如说由于公司服务器重启导致出现下面的问题:在Xshell里连接虚拟机映射时连接失败;能够连接上虚拟机的映射地址,但git pull时报…...

Flutter实践二:repository模式
1.repository 几乎所有的APP,从简单的到最复杂的,在它们的架构里几乎都包括状态管理和数据源这两部分。状态管理常见的有Bloc、Cubit、Provider、ViewModel等,数据源则是一些直接和数据库或者网络客户端进行交互,取得相应的数据&…...