UML
UML(Unified Modeling Language,统一建模语言)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。
方便程序员间交流,读别人代码是真的痛苦。
UML主要有以下作用:
- 为软件系统建立可视化模型
- 为软件系统建立构件
- 为软件系统建立文档
UML图分类:
- 用例图
- 静态结构图:<font color=red>类图</font>、对象图、包图、组件图、部署图
- 动态行为图:交互图(时序图与协作图)、状态图、活动图
其中类图是描述类与类之间的关系的,是UML图中最核心的,本文将结合PlantUML展开介绍类图,如果该文章点赞破百,则将会更新其他UML图分类。
类图
类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。它既用于应用程序的系统分类的一般概念建模,也用于详细建模,将模型转换成编程代码。类图也可用于数据建模。
- 类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合。
依赖
只要是在类中用到了对方,那么他们之间就存在依赖(Dependency)关系。如果没有对方,连编绎都通过不了的那种。比如
1) 类中用到了对方
2) 是类的成员属性
3) 是方法的返回类型
4) 是方法接收的参数类型
5) 方法中使用到
泛化
泛化关系(Generalization)是实际上是继承关系,是依赖关系的特例,如果A类继承了B类,那么A和B存在泛化关系。
实现
实现关系(Realization)实际上就是类和接口的关系,表示类是接口所有特征和行为的实现,也是依赖关系的特例。
关联
关联关系(Association)实际上是类和类之间的联系,是一种拥有的关系,它使一个类知道另一个类的属性和方法,也是依赖关系的特例。
关联具有<font color=red>导航性</font>:即双向关系或单向关系,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。nm、1n等标识可无。
聚合
聚合关系(Aggregation)表示的是整体和部分的关系,整体与部分可以分开,部分可以脱离整体单独存在,属于关联的特例,可用箭头标识导航性,使用带空心菱形的实线来表示:
组合
组合关系(Composition)也是整体与部分的关系,但是整体与部分不可以分开,部分可以脱离整体单独存在,属于关联的特例,可用箭头标识导航性,使用带实心菱形的实线来表示:
怎么画类图?
说了这么多,那么怎么画类图呢?且继续往下看。
环境准备
在IDEA安装PlantUML插件,以便操作演练,当然了如果不想安装,也可以使用PlantUML在线网站,跳过本节。
安装Graphviz
首先需要安装Graphviz可视化图形软件提供依赖支持。
- 下载 https://www2.graphviz.org/Packages/development/windows/10/
- 安装 注意修改安装路径,其余默认下一步就好。
- 配置变量 我的电脑->属性->高级系统设置->环境变量->path->新建
- 测试
安装PlantUML
打开IDEA,File->settings->plugins,搜索uml,安装PlantUML
安装好后重启IDEA,就能新建PantUML File了。
PlantUML
定义
如果未定义就直接使用,默认为类。
类型 | 关键字 | 图例 |
---|---|---|
类 | class | |
抽象类 | abstract | |
接口 | interface | |
接口 | 棒棒糖样式 | |
枚举 | enum | |
注释 | annotation | |
泛型 | 加<?..> |
方法
访问范围 | 符号 |
---|---|
private | - |
protected | /# |
package private | ~ |
public |
|
此外通过修饰符{static}、{abstract},可以定义静态、抽象的方法或者属性。
关系
'>'表示箭头,‘|>’表示三角箭头,'o'表示空心菱形,'*'表示实心菱形
‘.’表示虚线,‘-’表示实线,一个是水平方向,两个以上是竖直方向。
- 关系上的标识 在关系之间使用标签来说明时, 使用 :后接 标签文字; 对元素的说明,你可以在每一边使用 "" 来说明。
这样一来就能表示各种关系的线了。
关系 | 符号 | 图例 |
---|---|---|
依赖 | .> | |
泛化 | -> | |
实现 | .|> | |
关联 | - | |
聚合 | -o | |
组合 | -* |
注释
- 可以使用note left of , note right of , note top of , note bottom of这些关键字来添加备注
- 还可以在类的声明末尾使用note left, note right,note top, note bottom来添加备注
- 单独用note这个关键字也是可以的,使用 .. 符号可以作出一条连接它与其它对象的虚线
后记
画类图还有更多细节和扩展可参考PlantUML文档:https://plantuml.com/zh/class-diagram
踩了很多坑,比如安装Graphviz时没有执行”dot -c“指令,idea报错全网还找不到,从入门到放弃 。
如果该文章点赞破百,则将会更新其他UML图分类。
原创不易,请勿转载(
本不富裕的访问量雪上加霜)博主首页:https://blog.csdn.net/qq_45034708
如果文章对你有帮助,记得关注点赞收藏❤