背景知识
1 UML(Unified Modeling Lanuage)统一建模语言,是为开发人员提供一套
标准通用的设计语言来构建计算机应用程序。(就像建筑工人使用的建筑图纸一样)
2 UML根据不同的使用场景可以分为很多中类型:用例图,类图,序列图,状态图,活动图组件图和部署图等。
其中,用例图用来描述系统一个功能单元;
类图表示不同实体之间的彼此关系;
序列图用来描述一种详细的流程;
状态图表示某个类处于的状态信息和状态转换的信息;
活动图表示在处理某个过程时两个或多个类对象之间的过程控制流;
组件图提供系统的物理视图;
部署图表示软件系统如何部署到硬件系统中。
本文主要关注类图。
类图
类对象之间的相互关系包括:依赖,关联,聚合,组合,泛化,实现等。
各种关系的强弱组合:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖。
1 类的基本概念
包含三个概念:类名,成员变量,成员函数
其中,+、#、-分别表示public、protected、private
2 泛化(Generalization)
【关系说明】子类和父类之间的继承关系。
【代码体现】基类和派生类
【箭头指向】带三角箭头的实线,箭头指向父类。
3 实现(Realization)
【关系说明】类与接口之间的关系。is-a的关系。(c++中接口一般都是用抽象基类表示)
【代码体现】抽象基类和派生类
【箭头指向】带三角箭头的虚线,箭头指向父类。
4 组合(Composition)
【关系说明 】整体和部分的关系,但部分不能离开整体而单独存在。contains-a的关系。例如:公司和部门之间的关系。
【代码体现】成员变量。
【箭头指向】带实心菱形的实线,菱形指向整体。
5 聚合(Aggregation)
【关系说明 】整体和部分的关系,但部分可以离开整体而单独存在。has-a的关系。例如:车和车轮的关系,车子没了车轮还可以单独存在。
【代码体现】成员变量。
【箭头指向】带空心菱形的实线,菱形指向整体。
6 关联
【关系说明】双方关系一般是平等的,可以是双向的也可以是但单向的。例如:丈夫和妻子的关系。
【代码体现】成员变量。
【箭头指向】带普通箭头的实心线,指向被拥有者。
7 依赖(Dependency)
【关系说明】类A使用到类B,将类B作为参数在类A成员函数中使用,就说类A依赖类B。比如,人过河要借用一条船。此时人和船就是依赖关系,人依赖船。
【代码体现】局部变量,方法的参数或者静态方法的调用。
【箭头指向】带箭头的虚线指向被依赖者。