最基本的定义一个类:
classDiagram
class BankAccount
BankAccount : +String owner
BankAccount : +Bigdecimal balance
BankAccount : +deposit(amount)
BankAccount : +withdrawl(amount)
从上到下依次排列:类名称、属性、方法(带括号)。classDiagram 是关键字,class是关键字,BackAccount 是类名称。定义属性和方法时,要写【类名称:】作为前缀。
还可以这样定义类,使用花括号,类似于C++的语法:
class BankAccount{
+String owner
+BigDecimal balance
+deposit(amount) bool
+withdrawl(amount) int
}
方法的返回类型是可选的。如果使用的话,要与前面的括号之间有空格。
范型的参数用两个波浪号包住,如下所示:
classDiagram
class SquareShape{
int id
Listint position
setPoints(Listint points)
getPoints() Listint
}
Square : -Liststring messages
Square : +setMessages(Liststring messages)
Square : +getMessages() Liststring
如果用C++语言来理解,可以直接把波浪号看作尖括号。
成员的可见性:
- public
- private
protected
~ package/internal
还可以在方法的尾部,即括号的后面,添加:
- 抽象方法。例如,someAbstractMethod()*
类之间的关系:
classDiagram
class Animal
Vehicle
关系的基本语法:
[classA][Arrow][ClassB]:LabelText
可以表示下列几种关系:
Type Description
-- Link (Solid) 实线链接
..> Dependency. 依赖
..|> Realization。 实现
.. Link (Dashed)。 虚线链接
例子:
classDiagram
classI -- classJ : Link(Solid)
classK ..> classL : Dependency
classM ..|> classN : Realization
classO .. classP : Link(Dashed)
表达类实例之间数量关系的基本语法:
[classA] "cardinality1" [Arrow] "cardinality2" [ClassB]:LabelText
例子:
classDiagram
Customer "1" --> "" Ticket
Student "1" --> "1.." Course
Galaxy --> "many" Star : Contains
类的标注(Annotations)
有如下几种:
<<Interface>> an Interface class
<<abstract>> an abstract class
<<Service>> service class
<<enumeration>> an enum
注意,书写时双尖括号不可少
例子:
classDiagram
class Shape
<<interface>> Shape
注意,要另起一行。
例子2: 嵌套式写法,适用于使用了花括号的类定义
classDiagram
class Shape{
<<interface>>
noOfVertices
draw()
}
class Color{
<<enumeration>>
RED
BLUE
GREEN
WHITE
BLACK
}
网友评论