设计模式-UML类图

类和接口

➤ 具体类:

  • 第一层类名, 第二层成员变量, 第三层方法
  • 访问控制: +表示public, -表示private …

../_images/uml-class.png

➤ 抽象类:

  • 类名用斜体

../_images/uml-abstract.png

➤ 接口:

  • 类名有Interface标识

../_images/uml-interface.png

➤ 包:

../_images/uml-package.png

关系

../_images/uml-relation.png

➤ TOC

  • 类-接口关系: 实现关系, implements, 实现类–▷接口 //虚线
  • 类-类关系:
    • 泛化关系: is-a, extends, 派生类——▷基类 //实线
    • 关联关系: A持有B的引用, A——>B
      • 依赖关系: usa-a, A–>B
      • 聚合关系: has-a, A◇–>B
      • 组合关系: contains-a, A◆–>B

➤ 实现关系:

  • 例如java中的implements Interface

../_images/uml-implements.png

➤ 泛化关系:

  • 例如java中的extends BaseClass

../_images/uml-extends.png

➤ 关联关系:

  • A有B类型的成员变量

../_images/uml-association.png

➤ 依赖关系:

  • use-a
  • 可以看作是一种弱关联关系, 比上面的关联关系弱, 包括几种情况:
    • A中定义了(B类型的)局部变量
    • A调用了B的静态方法
    • A的方法形参是B类型
    • A的方法返回B类型

../_images/uml-use.png

➤ 聚合关系:

  • has-a, 特殊的关联关系
  • A关联B对象, 但A和B关系不紧密, 例如B可以属于多个A1,A2…类型
  • 例如员工和部门, 员工可以属于多个部门, 部门裁撤, 员工可以转移到其他部门

../_images/uml-has.png

➤ 组合关系:

  • contain-a, 特殊的关联关系
  • A关联对象B, A和B关系紧密, A和B同一个生命周期(一般由A管理B的生成和释放)
  • 相比依赖/聚合关系, 组合关系表示更强的紧密程度

../_images/uml-contain.png

参考

30分钟学会UML类图 - 知乎