UML2.0中的14种图简介,并借助AI生成UML图
UML(统一建模语言)2.0中定义了14种不同范例的图表,用于从不同角度描述体系。这些图表分为结构图和举动图两大类。绘制流程
1、大模型生成UML图的草图,可以是ASCII表现,如图:
用户 界面 数据库
| | |
|--登录请求-------->| |
| |---验证用户信息---->|
| |<--返回验证结果-----|
|<--显示登录结果----| |
| | |
2、使用大模型根据草图,生成PlantUML代码:
@startuml
skinparam sequenceArrowThickness 2
skinparam sequenceParticipant underline
actor 用户
boundary 界面
database 数据库
用户 -> 界面: 登录请求
activate 界面
界面 -> 数据库: 验证用户信息
activate 数据库
数据库 --> 界面: 返回验证结果
deactivate 数据库
界面 --> 用户: 显示登录结果
deactivate 界面
@enduml
3、将代码添加到PlantUML在线编辑网站
可使用 PlantUML 绘制 UML 中的各种范例的图表:https://plantuml.com/zh/,可以编辑预览预览UML图,之后就可以下载了!
PlantUML是一个通用性很强的工具,可以快速、直接地创建各种图表,如序列图、用例图、类图、对象图、活动图、组件图、摆设图、状态图、时序图等,其他图支持不太好,需要使用前面的图举行模拟。
结构图(Structure Diagrams)
结构图主要描述体系的静态结构:
1. 类图(Class Diagram):
[*]显示体系中的类、接口及它们之间的关系
[*]展示属性、方法和关系(如继承、实现、依赖等)
[*]是UML中最常用的图表之一
ASCII图示:
+--------------------+
| Customer |
+--------------------+
| -name: String |
| -id: int |
+--------------------+
| +getName(): String |
| +setName(String) |
+--------------------+
▲
|
+--------------------+
| VIPCustomer |
+--------------------+
| -level: int |
+--------------------+
| +getDiscount() |
+--------------------+
PlantUML生成图:
@startuml
class Customer {
-name: String
-id: int
+getName(): String
+setName(String)
}
class VIPCustomer {
-level: int
+getDiscount()
}
Customer <|-- VIPCustomer
@enduml
https://i-blog.csdnimg.cn/img_convert/b43f294631398c973741245dbc7edf5e.png
2. 对象图(Object Diagram):
[*]类图的实例,显示体系某一时刻的对象状态
[*]表现对象之间的现实关系和具体属性值
ASCII图示:
+--------------------+
| customer: Customer |
+--------------------+
| name = "张三" |
| id = 12 |
+--------------------+
PlantUML生成图:
@startuml
object 对象1
对象1 : name = "张三"
对象1 : id = 12
object "第 2 个对象" as o2
o2 : name = "李四"
o2 : id = 23
@enduml
https://i-blog.csdnimg.cn/direct/8966b9b3efd04139bde57971d40b89d9.png
3. 组件图(Component Diagram,构件图):
[*]展示体系的组件及其依赖关系
[*]表现软件体系的物理结构和构造
ASCII图示:
+-----------------+ +-----------------+
| <<组件>> | | <<组件>> |
| Web UI | |业务逻辑层 |
+-----------------+ +-----------------+
| |
| <<使用>> | <<使用>>
v v
+-----------------+ +-----------------+
| <<组件>> | | <<组件>> |
| 用户服务 | | 数据访问层 |
+-----------------+ +-----------------+
|
| <<使用>>
v
+-----------------+
| <<组件>> |
| 数据库 |
+-----------------+
PlantUML生成图:
@startuml
skinparam component {
BackgroundColor<<组件>> White
BorderColor Black
}
<<组件>> as webui
[业务逻辑层] <<组件>> as business
[用户服务] <<组件>> as userService
[数据访问层] <<组件>> as dataAccess
[数据库] <<组件>> as database
webui -down-> userService : <<使用>>
business -down-> dataAccess : <<使用>>
dataAccess -down-> database : <<使用>>
@enduml
https://i-blog.csdnimg.cn/direct/6b6920b6253b476ebf08e85f7f829644.png
4. 摆设图(Deployment Diagram):
[*]描述体系运行时的物理架构
[*]显示硬件节点、软件组件的分布及它们的关系
ASCII图示:
+---------------+ +---------------+
|Web Server | | App Server |
|+--------+ | | +--------+ |
||Web App | |------>| |Business| |
|+--------+ | | |Logic | |
+---------------+ | +--------+ |
+-------+-------+
|
v
+---------------+
| Database |
| Server |
+---------------+
PlantUML生成图:
@startuml
node "Web Server" {
component "Web App"
}
node "App Server" {
component "Business Logic"
}
node "Database Server" {
database "Database"
}
"Web Server" --> "App Server"
"App Server" --> "Database Server"
@enduml
https://i-blog.csdnimg.cn/direct/494ca21a4c19420ea4a0e09f515ef7e1.png
5. 复合结构图(Composite Structure Diagram,组合结构图):
[*]展示类或组件的内部结构
[*]显示各部门怎样相互协作
ASCII图示:
+-------------------------------+
| 电脑系统 |
| |
| +-------+ +---------+|
| | CPU |<------>| 内存 ||
| +-------+ +---------+|
| ^ ^ |
| | | |
| v v |
| +-------+ +---------+|
| | 硬盘 |<------>| 网卡 ||
| +-------+ +---------+|
+-------------------------------+
PlantUML生成图:
@startuml
package "电脑系统" {
component CPU
component "内存"
component "硬盘"
component "网卡"
CPU <--> "内存"
CPU <--> "硬盘"
"内存" <--> "网卡"
"硬盘" <--> "网卡"
}
@enduml
https://i-blog.csdnimg.cn/direct/e7e856b73ac34e7e80a89e019eb95140.png
6. 包图(Package Diagram):
[*]显示体系的包结构和包之间的依赖关系
[*]资助管理大型体系的构造结构
ASCII图示:
+----------------+ +----------------+
| UI包 | | 业务逻辑包 |
| |---->| |
+----------------+ +----------------+
| |
| |
v v
+----------------+ +----------------+
| 工具包 | | 数据访问包 |
| |<----| |
+----------------+ +----------------+
PlantUML生成图:
@startuml
package "UI包" as UI
package "业务逻辑包" as BL
package "工具包" as Tools
package "数据访问包" as DA
UI --> BL
UI --> Tools
BL --> DA
DA --> Tools
@enduml
https://i-blog.csdnimg.cn/direct/41ed198295ce4da9a871dc1f8e61925f.png
7. 设置图(Profile Diagram,表面图):
[*]用于定义UML的扩展机制
[*]答应开发者定制UML以顺应特定范畴
ASCII图示:
<<stereotype>>
+----------------+
|移动设备 |
+----------------+
| +安全级别: int|
+----------------+
PlantUML生成图:
@startuml
skinparam stereotypeCBackgroundColor #ADD8E6
class "移动设备" <<stereotype>> {
+ 安全级别 : int
}
@enduml
https://i-blog.csdnimg.cn/direct/f530610d25c24c99a83558009f55f88f.png
举动图(Behavior Diagrams)
举动图主要描述体系的动态举动:
8. 用例图(Use Case Diagram):
[*]从用户角度描述体系功能
[*]展示体系与外部参与者的交互
ASCII图示:
+-----------------------------+
| ATM系统 |
| |
|+----------+ |
|| | |
||取款 |<------+ |
|| | | |
|+----------+ | |
| | |
|+----------+ | |
|| | | |
|| 查询余额 |<------+------ 客户
|| | | |
|+----------+ | |
| | |
|+----------+ | |
|| | | |
||存款 |<------+ |
|| | |
|+----------+ |
| |
+-----------------------------+
PlantUML生成图:
@startuml
left to right direction
actor 客户 as customer
rectangle "ATM系统" {
usecase "取款" as withdraw
usecase "查询余额" as checkBalance
usecase "存款" as deposit
}
customer --> withdraw
customer --> checkBalance
customer --> deposit
@enduml
https://i-blog.csdnimg.cn/direct/9e3f475a57164d729637899f47b40308.png
9. 活动图(Activity Diagram):
[*]描述业务流程、算法或操纵的工作流程
[*]类似于流程图,但支持并行举动建模
ASCII图示:
+----------------+
| 开始购物 |
+----------------+
|
v
+----------------+
| 浏览产品 |
+----------------+
|
v
+----------------+
| 选择产品 |
+----------------+
|
v
+----------------+
| 加入购物车 |
+----------------+
|
v
+----------------+
|是否继续购物?|
+----------------+
/ \
[是] / \ [否]
/ \
| v
| +----------------+
| | 结算 |
| +----------------+
| |
| v
| +----------------+
| | 输入地址 |
| +----------------+
| |
| v
| +----------------+
| | 选择支付 |
| +----------------+
| |
| v
| +----------------+
| | 确认订单 |
| +----------------+
| |
| v
| +----------------+
| | 支付成功 |
| +----------------+
| |
v v
+----------------++----------------+
| 继续浏览 || 结束购物 |
+----------------++----------------+
PlantUML生成图:
@startuml
start
:开始购物;
repeat
:浏览产品;
:选择产品;
:加入购物车;
:是否继续购物?;
backward:是;
repeat while (继续购物?)
:结算;
:输入地址;
:选择支付;
:确认订单;
:支付成功;
:结束购物;
stop
@enduml
https://i-blog.csdnimg.cn/direct/5837a8816df84a9fbe98cad22b62e523.png
10. 状态图(State Machine Diagram):
[*]描述对象在生命周期内的状态厘革
[*]展示变乱怎样触发状态转换
ASCII图示:
+----------+ 注册 +----------+
|未注册 |-------->|待激活 |
+----------+ +----------+
|
| 激活
v
+----------+ 冻结 +----------+
|已冻结 |<--------|正常 |
+----------+ +----------+
| ^
| |
| 解冻 |
+-------------------->+
PlantUML生成图:
@startuml
[*] --> 未注册
未注册 --> 待激活 : 注册
待激活 --> 正常 : 激活
正常 --> 已冻结 : 冻结
已冻结 --> 正常 : 解冻
@enduml
https://i-blog.csdnimg.cn/direct/f0719db7824c4008b2967d804ca6c509.png
11. 序列图(Sequence Diagram):
[*]展示对象之间的交互次序
[*]强调消息的时间次序
ASCII图示:
用户 界面 数据库 | | |
|--登录请求-------->| |
| |---验证用户信息---->|
| |<--返回验证结果-----|
|<--显示登录结果----| |
| | |
PlantUML生成图:
@startuml
skinparam sequenceArrowThickness 2
skinparam sequenceParticipant underline
actor 用户
boundary 界面
database 数据库
用户 -> 界面: 登录请求
activate 界面
界面 -> 数据库: 验证用户信息
activate 数据库
数据库 --> 界面: 返回验证结果
deactivate 数据库
界面 --> 用户: 显示登录结果
deactivate 界面
@enduml
https://i-blog.csdnimg.cn/direct/2929438445e34f9794ca062773c816db.png
12. 通讯图(Communication Diagram,协作图):
[*]也称为协作图
[*]展示对象之间的交互关系
[*]强调对象之间的构造结构而非时间次序
+-------+
| 用户 |
+-------+
|
1:登录请求
|
v
+-------+ +-------+
| 界面 |--2:验证-->| 数据库 |
+-------+ +-------+
|
4:显示结果
|
v
+-------+
| 用户 |
+-------+
PlantUML生成图:
@startuml
' 定义对象
object "用户" as user
object "界面" as ui
object "数据库" as db
' 定义对象间的链接和消息
user --> ui : 1: 登录请求
ui --> db : 2: 验证
db --> ui : 3: 返回结果
ui --> user : 4: 显示结果
@enduml
https://i-blog.csdnimg.cn/direct/96e0fe49ccd2476cb3a137086c53482d.png
13. 交互概览图(Interaction Overview Diagram):
[*]结合活动图和序列图的特点
[*]展示复杂交互的控制流程
ASCII图示:
+----------------+
| 开始登录 |
+----------------+
|
v
+----------------+
| 验证用户名密码 |
+----------------+
|
[验证成功]
/ \
/ \
+----------------++----------------+
| sd 查询用户权限 || sd 记录登录失败 |
+----------------++----------------+
\ /
\ /
\ /
+----------------+
| 结束登录 |
+----------------+
PlantUML生成图:
@startuml
:开始登录;
:验证用户名密码;
if (验证成功?) then (yes)
:查询用户权限;
else (no)
:记录登录失败;
endif
:验证结束;
@enduml
https://i-blog.csdnimg.cn/direct/fbaf3c76a0cb41d09b6959c39351b1bf.png
14. 时序图(Timing Diagram):
[*]展示对象状态随时间厘革的情况
[*]特别适用于实时体系的建模
和序列图对比:
特性序列图时序图主要关注点对象间的消息交互对象的状态厘革时间轴方向垂直方向(从上到下)水平方向(从左到右)表达重点交互次序和逻辑流程状态持续时间和厘革时刻适用场景分析对象协作和消息流分析实时体系中状态厘革表现方式生命线和消息箭头状态线和状态厘革点 ASCII图示:
状态
^
闲置 |__________ _________
| | |
忙碌 | |______________|
| | |
+---------------------------------> 时间
收到请求 处理完成
PlantUML生成图:
@startuml
concise "状态 " as Server
@0
Server is 闲置
@5
Server is 忙碌
@15
Server is 闲置
@enduml
https://i-blog.csdnimg.cn/direct/3612d1a822a24c6bbfcebeb66937fb13.png
应用场景
[*]需求分析阶段:用例图、活动图
[*]体系计划阶段:类图、对象图、序列图
[*]实现阶段:组件图、摆设图
[*]测试阶段:状态图、时序图
对于不同的建模需求,可以选择使用不同范例的UML图表,它们共同资助开发团队更好地明白、计划和实现软件体系。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]