类图
类图是面向对象建模的核心。它们展示了系统中的类、它们的属性、操作以及类之间的关系。
语法
类的定义
class 类名 {
+公有字段
-私有字段
#受保护字段
+公有方法()
-私有方法()
#受保护方法()
}
关系类型
- 继承:
<|--
- 组合:
*--
- 聚合:
o--
- 关联:
-->
- 依赖:
..>
- 实现:
<|..
基础示例
代码:
mermaid
classDiagram
动物 <|-- 鸭子
动物 <|-- 鱼
动物 <|-- 斑马
动物 : +int 年龄
动物 : +String 性别
动物: +是否哺乳动物()
动物: +交配()
class 鸭子{
+String 喙颜色
+游泳()
+嘎嘎叫()
}
class 鱼{
-int 体长
-能吃()
}
class 斑马{
+bool 是否野生
+奔跑()
}
高级示例
这是一个展示各种关系和特性的复杂类图:
代码:
mermaid
classDiagram
顾客 "1" --> "*" 订单
订单 "*" --> "1" 配送状态
订单 "*" --> "*" 产品
订单 "1" --> "1" 支付
class 顾客 {
+String 姓名
+String 邮箱
+String 地址
+添加订单()
+更新资料()
}
class 订单 {
-int 订单ID
-Date 订单日期
-float 总金额
+计算总额()
+更新状态()
}
class 产品 {
+String 名称
+float 价格
+int 库存
-更新库存()
}
class 支付 {
+String 支付方式
+float 金额
+Date 支付日期
+处理支付()
}
class 配送状态 {
+String 状态
+Date 最后更新
+更新状态()
}
附加功能
泛型类型
代码:
mermaid
classDiagram
class 列表~T~{
+int 大小
+添加(T 元素)
+获取(int 索引) T
}
接口
代码:
mermaid
classDiagram
class 动物{
<<interface>>
+发出声音()
}
抽象类
代码:
mermaid
classDiagram
class 形状{
<<abstract>>
+面积() float
}
样式设置
可以使用不同的符号表示可见性:
+
公有-
私有#
受保护~
包/内部
实用技巧
- 保持类的专注性,遵循单一职责原则
- 使用有意义的类名和方法名
- 只显示相关的属性和方法
- 使用适当的类之间关系
- 适当使用接口和抽象类
- 注意类的封装性
- 合理使用继承和组合
- 避免过度设计
常见问题解决
设计问题
- 检查类的职责是否单一
- 确保继承关系合理
- 避免过度耦合
关系表示
- 正确使用关系类型
- 明确关系的方向
- 添加适当的关系描述
可读性问题
- 适当分组相关类
- 减少交叉关系
- 使用清晰的命名