类图 在IDEA中安装和创建文件就不用说了直接说代码吧。
仅记录我目前使用到的的操作,全部使用详情请参考:https://plantuml.com/zh/class-diagram
本篇文章会持续更新我使用UML类图中用到的操作
这是我第一次用UML类图画出的图形
代码:
代码语言:javascript复制@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
接口类
代码语言:javascript复制@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)
`<
..`
可以用.. 来代替-- ,会显示为虚线。
代码语言:javascript复制@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关系上的标签 在关系之间使用标签来说明时, 使用 :后接 标签文字。
对元素的说明,你可以在每一边使用 "" 来说明.
代码语言:javascript复制@startuml
类01 "1" *-- "many" 类02 : 包含
类03 o-- 类04 : 聚合
类05 --> "1" 类06
@enduml 在标签的开始或结束位置添加< 或 >以表明是哪个对象作用到哪个对象上。
代码语言:javascript复制@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这个关键字也是可以的,使用 .. 符号可以作出一条连接它与其它对象的虚线。
代码语言:javascript复制@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 公有
代码语言:javascript复制@startuml
class Dummy {
-field1
#field2
~method1()
+method2()
}
@enduml 你可以采用命令 skinparam classAttributeIconSize 0 来展示特殊符号本身: