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 …...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...

