classDiagram
Animal <|-- Duck
Animal <|-- Fish
Animal <|-- Zebra
Animal : +int age
Animal : +String gender
Animal: +isMammal()
Animal: +mate()
class Duck{
+String beakColor
+swim()
+quack()
}
class Fish{
-int sizeInFeet
-canEat()
}
class Zebra{
+bool is_wild
+run()
}
render
語法
class 包含三個部分
最上面是 class name,第一個字母是大寫
中間是 attributes,第一個字母小寫,可加上類別
最下面是 operations,第一個字母小寫
classDiagram
class BankAccount
BankAccount : +String owner
BankAccount : +Bigdecimal balance
BankAccount : +deposit(amount)
BankAccount : +withdrawl(amount)
render
定義 class
關鍵字為 class ex: class Animal
兩個 class 之間有繼承關係 ex: Animal <|-- Dog
classDiagram
class Animal
Animal <|-- Dog
render
定義 members
有兩種寫法
classDiagram
class BankAccount
BankAccount : +String owner
BankAccount : +BigDecimal balance
BankAccount : +deposit(amount)
BankAccount : +withdrawal(amount)
class BankAccount2{
+String owner
+BigDecimal balance
+deposit(amount)
+withdrawl(amount)
}
render
method 後面可加上 return type
classDiagram
class BankAccount{
+String owner
+BigDecimal balance
+deposit(amount) bool
+withdrawl(amount) int
}
GenericType: 在 Java 有時會用到 List<String> 這樣的資料結構,這邊用這樣的語法表示 List~string~
classDiagram
class Square~Shape~{
int id
List~Int~ position
setPoints(List~Int~ points)
getPoints() List~Int~
}
Square : -List~String~ messages
Square : +setMessages(List~String~ messages)
Square : +getMessages() List~String~
render
Visibility 有四種
+Public-Private#Protected~Package/Internal
另外可在 method 與 field 後面加上 classifiers
*Abstract method e.g.:someAbstractMethod()*$Static method e.g.:someStaticMethod()$$Static field e.g.:String someField$
## 定義關係
[classA][Arrow][ClassB]
[classA][Arrow][ClassB]:LabelText
| Type | Description |
|---|---|
| <\ | -- |
| *-- | Composition |
| o-- | Aggregation |
| --> | Association |
| -- | Link (Solid) |
| ..> | Dependency |
| ..\ | > |
| .. | Link (Dashed) |
example : 後面是 label,可不填寫
classDiagram
classA --|> classB : Inheritance
classC --* classD : Composition
classE --o classF : Aggregation
classG --> classH : Association
classI -- classJ : Link(Solid)
classK ..> classL : Dependency
classM ..|> classN : Realization
classO .. classP : Link(Dashed)
render
classDiagram
classA <|-- classB : implements
classC *-- classD : composition
classE o-- classF : association
render
雙向關係
[Relation Type][Link][Relation Type]
Relation Type:
| Type | Description |
|---|---|
| <\ | |
| * | Composition |
| o | Aggregation |
| > | Association |
| < | Association |
| \ | > |
Link
| Type | Description |
|---|---|
| -- | Solid |
| .. | Dashed |
cardinality/multiplicity on relations
1Only 10..1Zero or One1..*One or more*Manynn {where n>1}0..nzero to n {where n>1}1..none to n {where n>1}
語法
[classA] "cardinality1" [Arrow] "cardinality2" [ClassB]:LabelText
ex:
classDiagram
Customer "1" --> "*" Ticket
Student "1" --> "1..*" Course
Galaxy --> "many" Star : Contains
render
Annotations on classes
用在 interface 或 abstract class
<<Interface>>To represent an Interface class<<abstract>>To represent an abstract class<<Service>>To represent a service class<<enumeration>>To represent an enum
ex
classDiagram
class Shape
<<interface>> Shape
Shape : noOfVertices
Shape : draw()
class Color
<<enumeration>> Color
Color: RED
Color: BLUE
Color: GREEN
Color: WHITE
Color: BLACK
render









沒有留言:
張貼留言