UML,全称:Unified Modeing Language,关于UML的历史和详细描述可以参考《UML参考手册》。UML主要是由一些视图组成,包括静态视图(static view),用例视图(use case view),活动视图(Active view)。对于开发人员来说,更重要的是静态视图里面的类图(class view)和交互视图中的顺序视图(sequence diagram)。
类图可以帮助我们了解一个系统的结构,而类图除了需要描述单独的类名称、属性和操作外,我们还需要描述类之间的联系。在UML类图中,类与类之间的关系用不同的连线表示。类之间的关系有继承、依赖、关联、聚合和组合。
- 1. 继承(泛化关系) @H_403_48@
- 2. 依赖 @H_403_48@
- A类是B类中的(某种方法的)局部变量;
- A类是B类方法当中的一个参数;
- A类向B类发送消息,从而影响B类发生变化; @H_403_48@
- 3. 关联 @H_403_48@
指的是一个类(称为子类)继承另外的一个类(称为基类)的功能,并增加它自己的新功能的能力,继承是类与类之间最常见的关系。如下图所示,一般有一条带空心三角形的线表示继承关系。
继承
代码实例
// A,B,C(子类) 都继承自Base(父类) class Base {...}; class A : public Base {...}; class B : public Base {...}; class C : public Base {...};
大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。是一种比较弱的关系,存在偶然性和临时性,一般表现形式为:
其UML图为(一条带箭头的虚线由依赖一方指向被依赖方)
依赖
代码示例:
class A {...}; class B { public: fuc(A* a); };
是类之间的一种语义联系(较弱)。它使一个类知道另一个类的属性和方法。关联可以有方向,可以是单向关联,也可以是双向关联。这种关系比依赖稍强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的,表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;
UML图中用一条实线箭头表示:
关联
示例代码:
class A {...}; class B {A* a;};