plantuml 依赖_使用PlantUML绘制类图
本文基于sublime的PlantUML插件绘制类图。如需了解插件安装,请点击 Sublime安装PlantUML插件
类的UML表示
使用UML表示一个类,主要由三部分组成。 类名 、 属性 、 方法 。其中 属性 和 方法 的访问修饰符用 - 、 # 、 + 表示 private 、 protected 、 public 。
如图所示,表示 A 类有一个 private 属性, protected 构造函数和 public 方法。
@startuml
class A{
- String field
+ A()
# void method()
}
note right: 这是测试类 A
@enduml
复制代码
类的关系
在面向对象语言中,类的关系有很多种,可以概括为三类: 泛化 、 依赖 、 关联 。
泛化
泛化指父类跟子类的关系,表示 is-a 的关系。如父类是抽象类或普通类,则这种关系叫继承。如,父类是接口,则这种关系叫实现。UML中,继承和实现由不同的标记表示。
继承
PlantUML用 --|> 表示继承关系。实线和三角形的抽象表示,指向谁,即继承谁。
@startuml
class A
abstract B
' A 继承 B
A --|> B
@enduml
复制代码
实现
PlantUML用 ..|> 表示实现关系。虚和三角形的抽象表示,指向谁,即实现谁。
@startuml
class A
interface C
' A 实现 C
A ..|> C
@enduml
复制代码
依赖
类之间,最弱的关联方式。常用于在A类的方法中使用B类的对象作为参数、局部变量或者对B类静态方法的调用。
PlantUML用 ..> 表示依赖关系。虚线和箭头的抽象表示,指向谁,即依赖谁。
@startuml
class A
class B
' A 依赖 B
A ..> B
@enduml
复制代码
关联
关联关系,即对象之间的引用关系。常使用类的属性表达。
单向关联
B类作为A类的属性,表示A类与B类有关联。 PlantUML用 --> 表示单向关联。实线线和箭头的抽象表示,指向谁,即关联谁。
@startuml
class A{
- B b
}
class B
' A 关联 B
A --> B
@enduml
复制代码
双向关联
B类作为A类的属性同时,A类也是B类的属性,表示双向关联。 PlantUML用 -- 表示双向关联。或者用 。
@startuml
class A{
- B b
}
class B{
- A a
}
' A 关联 B
A -- B
@enduml
复制代码
自关联
A类关联A类自身。常见于单例模式。
@startuml
class A{
- A a
}
' A 关联 A
A --> A
@enduml
复制代码
聚合
在关联关系的基础上,延伸出聚合关系,强的关联关系,表示 has-a 关系。整体与部分的关系,部分不依赖于整体,可独立存在。常用于成员变量。
如;汽车和轮胎的关系,轮胎可作为独立的商品出售。
PlantUML用 o-- 表示聚合关系。实线和空心菱形的抽象表示,指向谁,表示谁是整体。
@startuml
class Car{
- List wheels
}
class Wheel
' Car 关联 Wheel
Car "1" o-- "4" Wheel
@enduml
复制代码
图中数字 1 和 4 也表示一对多关联。 N 对 N 同理。
组合
在关联关系的基础上,延伸出另外一种关联关系,组合关系,表示 contains-a 关系。整体与部分的关系,部分依赖于整体,不可独立存在。常用于成员变量。
如:身体和动作的关系。
PlantUML用 *-- 表示聚合关系。实线和实心菱形的抽象表示,指向谁,表示谁是整体。
@startuml
class Body{
- List actions
}
class Action
' Body 关联 Action
Body "1" *-- "N" Action
@enduml
复制代码
PlantUML排版
相比较其他的UML软件或插件。PlantUML的优势在于,存储的是文本文件,可以方便的进行团队协作以及高度可定制化的依赖关系。但是,最大的缺点在于,排版是通过插件自动生成的,排版效果不尽人意。因此,PlantUML提供四个关键字 up down left right 。指定类与类之间的相对关系。
default
@startuml
class A1
class B1
A1 --> B1
class A2
class B2
A2
@enduml
复制代码
箭头向左时,被指向对象在上; 箭头向右时,被指向对象在下。
up
@startuml
class A1
class B1
A1 -up-> B1
class A2
class B2
A2
@enduml
复制代码
使用up时,被指向对象在上。
down
@startuml
class A1
class B1
A1 -down-> B1
class A2
class B2
A2
@enduml
复制代码
使用down时,被指向对象在下。
left
@startuml
class A1
class B1
A1 -left-> B1
class A2
class B2
A2
@enduml
复制代码
使用left时,被指向对象在左。
right
@startuml
class A1
class B1
A1 -right-> B1
class A2
class B2
A2
@enduml
复制代码
使用right时,被指向对象在右。
plantuml 依赖_使用PlantUML绘制类图相关推荐
- plantuml 依赖_遇见PlantUML
前言 来到公司实习也快一个月了,最大的体会就是,虽然大部分时间做的是简单的增删该查,但不同于在学校时写的Demo,你要充分考虑程序的鲁棒性(健壮性).可扩展性(可维护性).时间/空间复杂度等.因为是要 ...
- PlantUML绘制类图
系列文章目录 PlantUML绘制活动图https://blog.csdn.net/zhangwei_david/article/details/125507374 PlantUML 绘制时序图htt ...
- plantuml样式_自定义PlantUML和C4 Model样式
什么是PlantUml PlantUml是一个支持快速绘制的开源项目.其定义了一套完整的语言用于实现UML关系图的描述.并基于强大的graphviz图形渲染库进行UML图的生成.绘制的UML图还可以导 ...
- plantuml样式_自定义PlantUML和C4Model的样式
什么是PlantUml PlantUml是一个支持快速绘制的开源项目.其定义了一套完整的语言用于实现UML关系图的描述.并基于强大的graphviz图形渲染库进行UML图的生成.绘制的UML图还可以导 ...
- uml 类图 网上书店_UML作业第三次:分析《书店图书销售管理系统》,绘制类图...
分析书店图书销售管理业务,提取相关的类,并画出类图 一.要求及步骤 step1:学习PlantUML类图绘制方法,学习(链接:http://plantuml.com/zh/): step2:以< ...
- plantuml 依赖_ubuntu安装PlantUML
1. 安装graphviz 这是PlantUML依赖的图形库,支持所有OS, 可以在此下载 http://graphviz.org/Download..php ubuntu平台可以直接到这里: htt ...
- uml类图用什么软件画_为什么需要UML类图建模?
类图是面向对象思维的结晶,是以对象的视角描述客观世界的事物: 对象是客观世界存在物,占有空间 //例如一个轮子 对外表现特征 //例如 轮子的半径 跟外部发生作用 一个对象可能由更小的对象构成,就像分 ...
- startuml java 类图_【StarUML】类图
类图是可视化地表现类的属性和方法,以及类与类之间的关系. 1.类 a.类 普通实体类,它有对应的属性和方法: 双击类名,会弹出一些控制按钮: 右边区域,各个图标的含义依次是: 增加类的属性.增加类的操 ...
- label mpchart 饼图_运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解...
从导入数据开始 这里我们有一个现成的数据表包,现在我们所处环境是pycharm,安装环境是annaconda3环境,我们将通过这个数据表包来进行数据分析,运用matplotlib绘制折线图.散点图.饼 ...
最新文章
- 终于,Geoffrey Hinton那篇备受关注的Capsule论文公开了
- 跳槽必看:产品经理面试试题汇总
- No overload for 'OnStartup' matches delegate 'System.Windows.StartupEventHandler'
- Flex组件的项目渲染器(ItemRenderer)使用总结
- SANS研究所:7大最危险的攻击技术介绍
- 圆角ImageView
- linux环境配置以及远程登录linux
- linux h5cc 编译,雷霆传奇H5源码编译+Linux+Release+Docker_2021/02/04
- PPT之背景与标题搭配
- 收到华为offer后的阶段性总结
- ios开发之切换RootViewController
- 此更新不适用您的计算机 win10,高手亲自讲解Win10系统提示此更新不适用于您的详尽处理办法...
- windows64位jdk678网盘下载
- 单片机定时器计数原理
- java毕业设计二手图书回收销售网站Mybatis+系统+数据库+调试部署
- HTML期末作业 蛋糕bootstrap响应式网站html+css+javascript+jquery+bootstarp
- linux的centos7怎么分区,CentOS linux7 磁盘分区
- 【ESP8266-NodeMCU软硬串口通讯】
- Python爬虫获取农业银行结售汇汇率
- 【公开】网络上面好用的webserice方法
热门文章
- Maqetta源码运行
- 深入理解卷II ---ICS源代码下载
- 介绍一个好用的抓取dump的工具-ProcDump
- 8088微型计算机pdf,微型计算机原理与接口技术:第3章 8086-8088微处理器及其体系结构.pdf...
- 插入排序 链表 java_Java实现 LeetCode 147 对链表进行插入排序
- 我的世界服务器菜单制作,小白腐竹福[服务器菜单制作]极其详细!看了就会
- jquery对象PHP转换,jQuery对象与DOM对象转换方法详解_jquery
- 自定义函数_Access中的WorkDate自定义函数
- linux安装教程6.3,CentOS 6.3安装教程(详细图解)
- php 删除xls文件,使用PHPExcel将xls文件转换为xlsx时出错