PlantUML类图
类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解。它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。
类(Class)封装了数据和行为,是具有相同属性、操作、关系的对象集合。在系统中,每个类都有一定的职责,这里的“职责”指的是类要完成什么样的功能、承担什么样的义务。一个类可以有多种职责,但是设计得比较优秀的系统中一个类对应一个职责。
元素声明
在定义类的时候,将类的职责分解为类的属性和方法。在UML当中分别使用{field}
和{method}
来显式声明。类的图形化表述如下:
@startuml abstract abstract abstract class "abstract class" annotation annotation circle circle () circle_short_form class class diamond diamond <> diamond_short_form entity entity enum enum interface interface @enduml
类之间的关系
类之间的关系使用<|–
这样的线条来定义。类的关系有六种:
泛化(Generalization)
表示父类与子类之间的关系。如“汽车”与“车辆”之间的关系。泛化关系使用带有空心箭头的实线表示,从子类指向父类。
实现(Realization)
实现是一种类与接口的关系,表示类是接口所有特征和行为的实现。实现关系使用带空心三角形的虚线,箭头指向接口。
关联(Association)
关联是一种“拥有”关系。表示一个类“知道”另一个类的属性和方法。如老师和学生、丈夫与妻子。关联可以是双向的,也可以是单向的。双向关联没有箭头或者带有两个箭头,单向关联有一个箭头指向被拥有者。
聚合(Aggregation)
聚合是整体与部分的关系,而且部分可以单独离开整体独立存在。如轮胎与汽车。聚合关系使用带有空心菱形的实线,菱形指向整体。
组合(Composition)
组合是整体与部分的关系,但是部分不能离开整体而单独存在。组合关系使用带有实心菱形的实线表示,菱形指向整体。
依赖(Dependency)
依赖是一种使用的关系,一个类的实现依赖于另一个类的协助,所以尽量不要使用双向依赖。使用带箭头的虚线来表示,箭头指向被使用的一方。
类图的关系可以用下图来演示:
@startuml class 动物 { {field} 生命 {method} 新陈代谢(氧气,水) {method} 繁殖 } class 氧气 class 水 class 鸟 { {field} 羽毛 {method} 下蛋 } class 翅膀 class 鸭子 { {method} 下蛋 } class 大雁 { {method} 下蛋 {method} 飞 } class 企鹅 { {method} 下蛋 } interface 飞 <<接口>> { {method} 飞 } class 雁群 class 寒冷气候 氧气 <. 动物 动物 .> 水 动物 <|-- 鸟 鸟 *-> 翅膀 鸟 <|-- 大雁 鸟 <|-- 鸭子 鸟 <|-- 企鹅 飞 <|.. 大雁 大雁 o--> 雁群 企鹅 --> 寒冷气候 @enduml
关系标签
对元素的说明,可以在每一边用“”
来说明。在标签的开始或者结束位置添加<
或者>
来表明对象作用在哪一边。
定义可访问性
字符 | 可访问性 |
---|---|
- | Private 私有 |
# | Protected 受保护 |
~ | Package Private 包内可见 |
+ | Public 公有 |
可以使用skinparam classAttributeIconSize 0
来展示特殊符号本身。