UML中类图与类关系详解

前言

UML(Unified Modeling Language)又称统一建模语言或标准建模语言。它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。

前面以下图为例进行概念的分解:

img


  • 类(Class)

img


  • 泛化(generalization)关系

表示is-a关系,即继承关系,是对象之间耦合度最大的一种关系,子类继承父类所有属性和方法。

在类图中使用带三角箭头的实线表示,箭头由子类指向父类。

  • img

    图中,程序员可以分为后端人员和前端人员,即它们之间存在泛化关系。


  • 实现(Realization)关系

是一种类与接口的关系,表示类是接口所有特征和行为的实现。

在类图中使用带三角箭头的虚线表示,箭头从实现类指向接口(或抽象类)

  • img

    图中,员工为抽象类,而销售人员和程序员分别为它的实现,即它们之间存在实现关系。


  • 依赖(Dependency)关系

对象之间最弱的一种关联方式,是临时性的关联,即一个类的实现需要另一个类的协助。在代码结构上,一般指局部变量、函数参数等。

在类图中使用带箭头的虚线表示,箭头从使用类指向被依赖类。

  • img

    图中,程序员在工作时不可能离开电脑,即它们之间存在依赖关系。


  • 关联(Association)关系

对象之间的引用关系,如客户类与订单类之间的关系。这种关系通常使用类的属性表达。关联又分为一般关联、聚合关联与组合关联。

在类图中使用带箭头的实线表示,箭头从使用类指向被关联的类。箭头可以是单向或者双向的。

  • img

    图中,客户可以拥有订单,而订单可以从属于客户,即它们之间存在(双向)关联关系。

多重性(Multiplicity):通常在关联、聚合、组合中使用。就是代表有多少个关联对象存在。使用数字..星号(数字)表示。如下图,一个割接通知可以关联0个到N个故障单。

img


  • 聚合(Aggregation)关系

表示has-a关系,是一种不稳定的包含关系。较强于一般关联,有整体与局部关系,并且没有了整体,局部也可以独立存在。

在类图中使用空心的菱形表示,空心菱形从局部指向整体。

  • img

    图中,企业可以与多个合作商合作,但企业不一定需要这些合作商,即它们之间存在聚合关系。


  • 组合(Composition)关系

表示contains-a关系,是一种强烈的包含关系。组合类负责被组合类的生命周期。是一种更强的聚合关系。部分不能脱离整体存在。

在类图中使用实心的菱形表示,实心菱形从局部指向整体。

  • img

    图中,企业与部门是一种强聚合关系,即企业不存在时,部门也会随着消失,即它们之间存在组合关系。



参考资料:

[1] http://www.uml.org.cn/oobject/201104212.asp