>> >> >> Reference << << << <<<<<<Ref>>>>>>
Class Diagram
Modified: 2025-12-31 || Author:ljf12825

类图是系统的结构蓝图,它描述的是

  • 系统里有哪些类
  • 它们有哪些属性、方法
  • 它们之间如何关联、依赖、继承、组合

类的标准画法

一个类用一个矩形表示,分三层

+------------------+
|     Player       |  类名
+------------------+
| - hp : int       |  属性
| - speed : float  |
+------------------+
| + Move() : void  |  方法
| + Attack()       |
+------------------+

可见性符号

| 符号 | 含义 | | + | public | | - | private | | # | protected | | ~ | package |

类之间的6种核心关系

1. 继承(泛化Generalization)

Enemy
Boss
  • 表示:Boss is-a Enemy
  • class Boss : public Enemy

2. 关联(Association)

Player ───── Weapon
  • 表示“有关系”
  • 成员变量指针/引用
class Player {
    Weapon* weapon;
}

3. 聚合(Aggregation) —— 弱拥有

Team ◇──── Player
  • Team有Player,但Player不依赖Team生存
  • 比如:球队解散,球员还在
class Team {
    std::vector<Player*> players;
};

4. 组合(Composition) —— 强拥有(生命周期绑定)

Car ◆──── Engine
  • Car销毁 -> Engine也销毁
  • 通常用值成员
class Car {
    Engine engine;
};

5. 依赖(Dependency)

A -----> B
  • A的函数参数/局部变量中用到B
  • 表示“临时使用”
void Render(Mesh& mesh)

6. 实现(接口)

IWeapon
Sword

C++抽象类

class IWeapon {
public:
    virtual void Attack() = 0;
};

关系强度对比(从弱到强)

依赖 -> 关联 -> 聚合 -> 组合 -> 继承
关系生命周期绑定所有权
依赖
关联
聚合
组合
继承类型绑定

类图的作用

  • 架构设计:防止耦合爆炸
  • 模块边界:明确责任

在做系统时,可以先画类图,再写头文件,最后写实现