简体中文
English 简体中文 繁體中文
Methodox 首页

类图

类图展示各个类、它们持有什么、做什么,以及它们之间的关系。它以 class 及其标题开头。

class Shapes on a canvas
Shape [abstract]
  + name: string
  + area(): number
  + draw()
Circle
  - radius: number
  + area(): number
Square
  - side: number
  + area(): number
Canvas
  + shapes: Shape[]
  + render()
Shape <|- Circle
Shape <|- Square
Canvas o- Shape: holds

上面的文本:Canvas 持有多个 Shape,Circle 和 Square 继承自抽象类 Shape

设置

设置 别名 值
direction flow, orientation, layout, rankdir down(默认)、right、up 或 left

类和成员

类名单独写在一行上 —— 写作 class Name 也一样 —— 其成员缩进写在它的下方。带括号的成员是操作,放在类的第二栏中;其他成员都是字段。

成员以其可见性开头,可以写成符号或单词:

符号 单词 可见性
+ public 公共
- private 私有
# protected 受保护 —— 需写成单词,因为以 # 开头的行是注释
~ internal, package 内部

成员前的 static 会为其加下划线,abstract 会将其设为斜体:static count: number、abstract deposit(amount)。不属于任何类的成员 —— 写在顶层而不是某个类下方 —— 会被指出。

构造型

类名后方括号中的单词,如果不是颜色、角色或 muted,就是该类的构造型,显示在类名上方:[interface]、[abstract]、[enum]、[record]、[service] —— 任何你需要的词都可以。

关系

普通箭头绘制关联和依赖 —— Order -> Customer、Report ..> Printer —— 而 UML 的端点符号(两侧各留一个空格)绘制其余关系:

  • <|-、<|--、-|>、--|> —— 继承:在更一般的类一端画空心三角形。
  • <|..、..|> —— 实现:虚线,在接口一端画空心三角形。
  • *-、*--、-*、--* —— 组合:在整体一端画实心菱形。
  • o-、o--、-o、--o —— 聚合:在整体一端画空心菱形。

每种关系中更一般的一端 —— 基类、接口、整体 —— 会布局在另一端的上方。标签写在冒号之后:Canvas o- Shape: holds。

两端各带一个计数的连线表示多重性:Bank 1-* Account。每一端可以是 1、0..1、1..*(也可写作 1..n)或 *(也可写作 0..*、n、many)。

class Accounts
Account [abstract]
  protected balance: number
  static count: number
  abstract deposit(amount)
Saving
  - rate: number
  + addInterest()
IAudited [interface]
  + audit()
Bank
  + accounts: Account[]
Account <|- Saving
Account ..|> IAudited
Bank 1-* Account: holds

上面的文本:一个受保护字段、一个带下划线的静态字段、一个斜体的抽象操作、一个以虚线实现的接口,以及持有多个 Account 的 Bank

包和注释

package Name —— 也可写作 namespace 或 group —— 会为缩进在其下方的类加上边框。note Class: what to say 会在某个类旁边放置一条注释。