使用PlantUml绘制类图2

使用PlantUml绘制类图2

14. 隐藏字段和函数

@startuml
class Dummy1 {
+myMethods()
}
class Dummy2 {
+hiddenMethod()
}
class Dummy3 <<Serializable>> {
String name
}

'隐藏所有的成员
hide members

'隐藏原型
hide stereotype

show stereotype

'隐藏类名前带圈的
hide <<Serializable>> circle

'显示Dummy1的方法
show Dummy1 methods

'隐藏类
hide Dummy2

'显示<<Serializable>>的字段
show <<Serializable>> fields
@enduml

15. 泛型

你可以用 <> 来定义类的泛型。

@startuml

class Foo<? extends Element> {
int size()
}

Foo *- Element

@enduml

16. 指定标记

通常标记字符 (C,I,E or A) 用于标记:
类 (classes), 接口( interface) , 枚举( enum)和抽象类( abstract classes

但是当你想定义原型时,可以增加对应的单个字符及颜色,来定义自己的标记(spot):

@startuml

class System << (S,#FF7700) Singleton >>

class Date << (D,orchid) >>

@enduml

17. 包

你可以通过关键词 package 声明包,同时可选的来声明对应的背景色(通过使用 html 色彩代码或名称)。
注意:包可以被定义为嵌套。

@startuml

package "Classic Collections" #DDDDDD {
    Object <|-- ArrayList
}

package net.sourceforge.plantuml {
    Object <|-- Demo1
    Demo1 *- Demo2
}

@enduml

18. 包样式

你可以通过以下的命令来设置默认样式:
skinparam packageStyle, 或者对包使用对应的模板:

@startuml

scale 750 width
package foo1 <<Node>> {
    class Class1
}
package foo2 <<Rectangle>> {
    class Class2
}
package foo3 <<Folder>> {
    class Class3
}
package foo4 <<Frame>> {
    class Class4
}
package foo5 <<Cloud>> {
    class Class5
}
package foo6 <<Database>> {
    class Class6
}



skinparam packageStyle rectangle

package foo1.foo2 {
}

package foo1.foo2.foo3 {
    class Object
}

'你也可以参考下面的示例来定义包之间的连线:
foo1.foo2 +-- foo1.foo2.foo3

@enduml

19. 命名空间

@startuml
class BaseClass
namespace net.dummy #DDDDDD {
    '默认的命名空间以.开头
    .BaseClass <|-- Person
    Meeting o-- Person
    .BaseClass <|- Meeting
}

namespace net.foo {
    '使用其他的命名空间下的类
    net.dummy.Person <|- Person
    .BaseClass <|-- Person
    net.dummy.Meeting o-- Person
}

'一个使用全限定名的类会自动被放置到对应的命名空间
BaseClass <|-- net.unused.Person
@enduml

20. 自定义命名空间

使用命令 set namespaceSeparator xxx 你可以自定义命名空间分隔符(“ .”以外的字符)

@startuml

set namespaceSeparator ::
class X1::X2::foo {
    some info
}

'禁止自动创建包则可以使用 set namespaceSeparator none.
set namespaceSeparator none
class X1.X2.foo {
    some info
}
@enduml

21. 棒棒糖接口

需要定义棒棒糖样式的接口时可以遵循以下语法:
• bar ()- foo
• bar ()– foo
• foo -() bar
棒棒糖头就是接口。

@startuml

class foo
bar ()- foo

@enduml

22. 改变箭头方向

类之间默认采用两个破折号 -- 显示出垂直方向的线.
要得到水平方向的可以像这样使用单破折号 (或者点):

@startuml

Room o- Student
Room *-- Chair

'你也可以通过改变倒置链接来改变方向
Student2 -o Room2
Chair2 --* Room2

'也可通过在箭头内部使用关键字,
'例如 left, right, up 或者 down,来改变方向
foo -left-> dummyLeft
foo -right-> dummyRight
foo -up-> dummyUp
foo -down-> dummyDown

@enduml

23. 关系类

你可以在定义了两个类之间的关系后定义一个关系类(association class) 例如:

@startuml

class Student {
    Name
}
Student "0..*" - "1..*" Course
(Student, Course) .. Enrollment
class Enrollment {
    drop()
    cancel()
}

'也可以用另一种方式:
class Student2 {
    Name
}
Student2 "0..*" -- "1..*" Course2
(Student2, Course2) . Enrollment2
class Enrollment2 {
    drop()
    cancel()
}
@enduml

24. 皮肤参数1

skinparam 改变字体和颜色。
可以在如下场景中使用:
• 在图示的定义中,
• 在引入的文件中,
• 在命令行或者 ANT 任务提供的配置文件中。

@startuml

skinparam class {
    '背景颜色
    BackgroundColor PaleGreen
    '箭头颜色
    ArrowColor SeaGreen
    '边框颜色
    BorderColor SpringGreen
}

'原型C的背景颜色
skinparam stereotypeCBackgroundColor YellowGreen
Class01 "1" *-- "many" Class02 : contains
Class03 o-- Class04 : aggregation

@enduml

25. 皮肤颜色2

@startuml
'You can define specific color and fonts for stereotyped classes.

skinparam class {
BackgroundColor PaleGreen
ArrowColor SeaGreen
BorderColor SpringGreen
BackgroundColor<<Foo>> Wheat
BorderColor<<Foo>> Tomato
}

skinparam stereotypeCBackgroundColor YellowGreen

skinparam stereotypeCBackgroundColor<< Foo >> DimGray

Class01 <<Foo>>
Class03 <<Foo>>
Class01 "1" *-- "many" Class02 : contains
Class03 o-- Class04 : aggregation
@enduml

26. 辅助布局

有时候,默认布局并不完美…
你可以使用 together 关键词将某些类进行分组:
布局引擎会尝试将它们捆绑在一起(如同在一个包(package) 内)
你也可以使用建立隐藏链接的方式来强制布局。

@startuml

class Bar1
class Bar2

together {
    class Together1
    class Together2
    class Together3
}

Together1 - Together2
Together2 - Together3
Together2 -[hidden]--> Bar1

Bar1 -[hidden]> Bar2

@enduml

   转载规则


《使用PlantUml绘制类图2》 congwiny 采用 知识共享署名 4.0 国际许可协议 进行许可。
评论
 上一篇
使用PlantUml绘制活动图 使用PlantUml绘制活动图
使用PlantUml绘制活动图1. 简单活动图活动标签 (activity label) 以:开始,以;结束。文本格式支持 creole wiki 语法。活动默认安装它们定义的顺序进行连接。 @startuml :Hello world;
2020-06-06
下一篇 
使用PlantUml绘制类图1 使用PlantUml绘制类图1
使用PlantUml绘制类图11. 类之间的关系1Class02 继承 Class01 ,箭头朝上。 Class03 和 Class04 的关系是组合,Class04 是组成 Class03 的一部分。 Class05 和 Class06
2020-05-17
  目录