主要介绍 UML 图模型中的类图以及其中用到的一些关系。
类图
类图(class diagram)用来表示系统中的类和类与类之间的关系,它是对系统静态结构的描述。
类用来表示系统中需要处理的事物。类与类之间有多种连接方式(关系),比如:关联(彼此间的连接)、依赖(一个类使用另一个类)、通用化(一个类是另一个类的特殊化)或打包(packaged)(多个类聚合成一个基本元素)。类与类之间的这些关系都体现在类图的内部结构之中,通过类的属性(attribute)和操作(operation)这些术语反映出来。在系统的生命周期中,类图所描述的静态结构在任何情况下都是有效的。
类图和对象图
构成面向对象模型的基本元素有类(class)对象(objects)类与类之间的关系等等。类是对象的抽象描述。
关联用于描述类与类之间的连接。由于对象是类的实例,因此,类与类之间的关联也就是其对象之间的关联。
类图简单直观地描述了类、对象及它们之间的关系。通过类图可以反映出哪些对象之间有关系,系统是如何运作的。
类图表示类和类与类之间的关系,对象图则表示在某一时刻这些类的具体实例和这些实例之间的具体连接关系。
关系的图示符号
模型元素与模型元素之间的连接关系也是模型元素,常见的关系有关联(association)、通用化(generalization)、依赖(dependency)和聚合(aggregation),其中聚合是关联的一种特殊形式。这些关系的图示符号如下图所示:
聚合
聚合是关联的特例。如果类与类之间的关系具有“整体与部分”的特点,则把这样的关联称为聚合。
聚合还有二种特殊的聚合方式,共享聚合和复合聚合。如果聚合关系中的处于部分方的对象同时参与了多个处于整体方对象的构成,则该聚合称为共享聚合。比如,一个球队(整体方)由多个球员(部分方)组成,但是一个球员还可能加入了多个球队,球队和球员之间的这种关系就是共享聚合。
如果构成整体类的部分类,完全隶属于整体类,则这样的聚合称为复合聚合。换句话说,如果没有整体类则部分类也没有存在的价值,部分类的存在是因为有整体类的存在。复合聚合图示为一个带实心菱形的直线,实心菱形紧挨着表示整体方的类。
通用化
一个类(通用元素)的所有信息(属性或操作)能被另一个类(具体元素)继承,继承某个类的类中不仅可以有属于自己的信息,而且还拥有了被继承类中的信息,这种机制就是通用化,通用化又称继承。
通用化可用于类、用例等各种模型元素。注意,通用化针对类型,而不针对实例。比如,一个类继承另一个类,但一个对象不能继承另一个对象。
具有通用化关系的两个类之间,继承通用类所有信息的具体类,称为子类,被继承类称为父类。可以从父类中继承的信息有属性、操作和所有的关联关系。类的继承关系可以是多层的,也就是说,一个子类本身还可以作另一个类的父类,层层继承下去。
参考资料
蒋慧等编写, 蒋慧. 时代新潮流UML Programming Guide设计核心技术[M]. 北京希望电子出版社, 2001.