类图
在IDEA中安装和创建文件就不用说了直接说代码吧。
仅记录我目前使用到的的操作,全部使用详情请参考:https://plantuml.com/zh/class-diagram
本篇文章会持续更新我使用UML类图中用到的操作
这是我第一次用UML类图画出的图形
代码:
@startuml
'https://plantuml.com/class-diagram
A <|- B
class A {
+operation a():void
+operation c():void
+operation b():void
}
note top: B 仅仅只是使用A的方法,\n使用继承就会让A和B耦合性增强
class B {
}
A1 <.. B1 :依赖
class A1 {
+operation a():void
+operation c():void
+operation b():void
}
class B1 {
+operation(a1:A1):void
}
A2 o-- B2 :聚合
class A2 {
+operation a():void
+operation c():void
+operation b():void
}
class B2 {
-a2:A2
+setA2(a2:A2):void
}
A3 *-- B3 :组合
class A3 {
+operation a():void
+operation c():void
+operation b():void
}
class B3 {
-a3:A3 = new A3()
}
@enduml
元素声明
关键字 | 元素类型 |
---|---|
abstract (class) | 抽象类 |
annotation | 注释类 |
circle | 圆形结点 |
() | 圆形结点(简写) |
class | 类 |
diamond | 菱形结点 |
<> | 菱形结点(简写) |
entity | 实例 |
enum | 枚举类 |
interface | 接口类 |
@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
类之间的关系
关系类型 | 符号 | 绘图 |
---|---|---|
泛化关系(extends) |
`< | –` |
组合关系 | *-- |
|
聚合关系 | o-- |
|
依赖关系 | <-- |
具体清看下图Class15 ..> Class16 |
关联关系 | -- |
具体清看下图Class9 --> Class10 |
实现关系(implements) |
`< | ..` |
可以用
..
来代替--
,会显示为虚线。
@startuml
Class01 <|-- Class02
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 -- Class10
Class11 <|.. Class12
Class13 --> Class14
Class15 ..> Class16
Class17 ..|> Class18
@enduml
@startuml
Class19 <--* Class20
Class21 #-- Class22
Class23 x-- Class24
Class25 }-- Class26
Class27 +-- Class28
Class29 ^-- Class30
@enduml
关系上的标签
在关系之间使用标签来说明时, 使用
:
后接 标签文字。对元素的说明,你可以在每一边使用
""
来说明.
@startuml
类01 "1" *-- "many" 类02 : 包含
类03 o-- 类04 : 聚合
类05 --> "1" 类06
@enduml
在标签的开始或结束位置添加
<
或>
以表明是哪个对象作用到哪个对象上。
@startuml
class 汽车
发动机 - 汽车 : 驱动 >
汽车 *- 轮子 : 拥有 4 >
汽车 -- 人 : < 所属
@enduml
备注和版型
版型通过类关键字(“
<<
“和”>>
“)来定义你可以使用
note left of
,note right of
,note top of
,note bottom of
这些关键字来添加备注。你还可以在类的声明末尾使用
note left
,note right
,note top
,note bottom
来添加。此外,单独用
note
这个关键字也是可以的,使用..
符号可以作出一条连接它与其它对象的虚线。
@startuml
class Object << general >>
Object <|--- ArrayList
note top of Object : In java, every class\nextends this one.
note "This is a floating note" as N1
note "This note is connected\nto several objects." as N2
Object .. N2
N2 .. ArrayList
class Foo
note left: On last defined class
@enduml
定义可访问性
当你定义属性或者方法时,你可以使用特殊符号定义相应条目的可访问性质。
字符 | 图标(属性) | 图标(方法) | 可访问性 |
---|---|---|---|
- |
private 私有 |
||
# |
protected 受保护 |
||
~ |
package private 包内可见 |
||
+ |
public 公有 |
@startuml
class Dummy {
-field1
#field2
~method1()
+method2()
}
@enduml
你可以采用命令
skinparam classAttributeIconSize 0
来展示特殊符号本身: