Computer Science Radar

UML Class Diagram

关联Association§

B knows a A.

关联描述两个类之间行为的二元关系。

类B对象包含类A对象的指针或引用。

依赖Dependency§

B uses a A.

依赖描述一个类的实例用作另一个类的方法的参数。

类B的方法使用类A对象作为参数或局部变量。

组合Composition§

B owns a A.

A is part of B.

组合是一种较强的包含关系。

强生命周期依赖。被包含对象的生命周期依赖于包含对象。

聚合Aggregation§

B has a A.

聚合是一种较弱的包含关系。

无强生命周期依赖。被聚合对象和聚合对象有着各自的生命周期。

辨析:与关联比较,关联并无包含的含义。

继承Inheritance/泛化Generalization§

B is a A.

一个类派生自另一个类。

实现Realization§

B realizes A.

一个类实现了一个/多个接口。

比较§

强弱程度:

  • 关联 > 依赖
  • 组合 > 聚合

其它符号§

类成员可见性§

  • public: "+"
  • private: "-"
  • protected: "#"

成员类型§

  • static: underlined
  • pure virtual: italics

数量关系§

  • 无实例或一个实例:"0..1"
  • 一个实例:"1"
  • 0个或多个实例:"0..* or *"
  • 1个或多个实例(至少1个):"1..*"

Reference§

UML Class Diagram Explained With C++ samples | CPP Code Tips (wordpress.com)