使用PlantUML绘制类图

匿名 (未验证) 提交于 2019-12-02 23:03:14
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/flueky/article/details/84819154

本文基于sublime的PlantUML插件绘制类图。如需了解插件安装,请点击Sublime安装PlantUML插件

类的UML表示

使用UML表示一个类,主要由三部分组成。类名属性方法。其中属性方法的访问修饰符用 -#+ 表示 privateprotectedpublic

如图所示,表示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<Wheel> wheels 	} 	class Wheel  	' Car 关联 Wheel 	Car "1" o-- "4" Wheel  @enduml 

图中数字14也表示一对多关联。NN同理。

组合

在关联关系的基础上,延伸出另外一种关联关系,组合关系,表示contains-a关系。整体与部分的关系,部分依赖于整体,不可独立存在。常用于成员变量。

如:身体和动作的关系。

PlantUML用 *-- 表示聚合关系。实线和实心菱形的抽象表示,指向谁,表示谁是整体。

@startuml  	class Body{ 		- List<Action> 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 <-- B2  @enduml 

箭头向左时,被指向对象在上;
箭头向右时,被指向对象在下。

up

@startuml  class A1 class B1  A1 -up-> B1  class A2 class B2 A2 <-up- B2  @enduml 

使用up时,被指向对象在上。

down

@startuml  class A1 class B1  A1 -down-> B1  class A2 class B2 A2 <-down- B2  @enduml 

使用down时,被指向对象在下。

left

@startuml  class A1 class B1  A1 -left-> B1  class A2 class B2 A2 <-left- B2  @enduml 

使用left时,被指向对象在左。

right

@startuml  class A1 class B1  A1 -right-> B1  class A2 class B2 A2 <-right- B2  @enduml 

使用right时,被指向对象在右。

总结

画类图,只是PlantUML的功能之一,还可以使用它画用例图、顺序图、活动图。更多用法,请关注后续博客或访问官网

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!