本文基于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绘制类图相关推荐

  1. plantuml 依赖_遇见PlantUML

    前言 来到公司实习也快一个月了,最大的体会就是,虽然大部分时间做的是简单的增删该查,但不同于在学校时写的Demo,你要充分考虑程序的鲁棒性(健壮性).可扩展性(可维护性).时间/空间复杂度等.因为是要 ...

  2. PlantUML绘制类图

    系列文章目录 PlantUML绘制活动图https://blog.csdn.net/zhangwei_david/article/details/125507374 PlantUML 绘制时序图htt ...

  3. plantuml样式_自定义PlantUML和C4 Model样式

    什么是PlantUml PlantUml是一个支持快速绘制的开源项目.其定义了一套完整的语言用于实现UML关系图的描述.并基于强大的graphviz图形渲染库进行UML图的生成.绘制的UML图还可以导 ...

  4. plantuml样式_自定义PlantUML和C4Model的样式

    什么是PlantUml PlantUml是一个支持快速绘制的开源项目.其定义了一套完整的语言用于实现UML关系图的描述.并基于强大的graphviz图形渲染库进行UML图的生成.绘制的UML图还可以导 ...

  5. uml 类图 网上书店_UML作业第三次:分析《书店图书销售管理系统》,绘制类图...

    分析书店图书销售管理业务,提取相关的类,并画出类图 一.要求及步骤 step1:学习PlantUML类图绘制方法,学习(链接:http://plantuml.com/zh/): step2:以< ...

  6. plantuml 依赖_ubuntu安装PlantUML

    1. 安装graphviz 这是PlantUML依赖的图形库,支持所有OS, 可以在此下载 http://graphviz.org/Download..php ubuntu平台可以直接到这里: htt ...

  7. uml类图用什么软件画_为什么需要UML类图建模?

    类图是面向对象思维的结晶,是以对象的视角描述客观世界的事物: 对象是客观世界存在物,占有空间 //例如一个轮子 对外表现特征 //例如 轮子的半径 跟外部发生作用 一个对象可能由更小的对象构成,就像分 ...

  8. startuml java 类图_【StarUML】类图

    类图是可视化地表现类的属性和方法,以及类与类之间的关系. 1.类 a.类 普通实体类,它有对应的属性和方法: 双击类名,会弹出一些控制按钮: 右边区域,各个图标的含义依次是: 增加类的属性.增加类的操 ...

  9. label mpchart 饼图_运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解...

    从导入数据开始 这里我们有一个现成的数据表包,现在我们所处环境是pycharm,安装环境是annaconda3环境,我们将通过这个数据表包来进行数据分析,运用matplotlib绘制折线图.散点图.饼 ...

最新文章

  1. 终于,Geoffrey Hinton那篇备受关注的Capsule论文公开了
  2. 跳槽必看:产品经理面试试题汇总
  3. No overload for 'OnStartup' matches delegate 'System.Windows.StartupEventHandler'
  4. Flex组件的项目渲染器(ItemRenderer)使用总结
  5. SANS研究所:7大最危险的攻击技术介绍
  6. 圆角ImageView
  7. linux环境配置以及远程登录linux
  8. linux h5cc 编译,雷霆传奇H5源码编译+Linux+Release+Docker_2021/02/04
  9. PPT之背景与标题搭配
  10. 收到华为offer后的阶段性总结
  11. ios开发之切换RootViewController
  12. 此更新不适用您的计算机 win10,高手亲自讲解Win10系统提示此更新不适用于您的详尽处理办法...
  13. windows64位jdk678网盘下载
  14. 单片机定时器计数原理
  15. java毕业设计二手图书回收销售网站Mybatis+系统+数据库+调试部署
  16. HTML期末作业 蛋糕bootstrap响应式网站html+css+javascript+jquery+bootstarp
  17. linux的centos7怎么分区,CentOS linux7 磁盘分区
  18. 【ESP8266-NodeMCU软硬串口通讯】
  19. Python爬虫获取农业银行结售汇汇率
  20. 【公开】网络上面好用的webserice方法

热门文章

  1. Maqetta源码运行
  2. 深入理解卷II ---ICS源代码下载
  3. 介绍一个好用的抓取dump的工具-ProcDump
  4. 8088微型计算机pdf,微型计算机原理与接口技术:第3章 8086-8088微处理器及其体系结构.pdf...
  5. 插入排序 链表 java_Java实现 LeetCode 147 对链表进行插入排序
  6. 我的世界服务器菜单制作,小白腐竹福[服务器菜单制作]极其详细!看了就会
  7. jquery对象PHP转换,jQuery对象与DOM对象转换方法详解_jquery
  8. 自定义函数_Access中的WorkDate自定义函数
  9. linux安装教程6.3,CentOS 6.3安装教程(详细图解)
  10. php 删除xls文件,使用PHPExcel将xls文件转换为xlsx时出错