什么是 UML
定义
UML 是统一建模语言,是一种可视化的面向对象建模语言,是一种用来对真实世界物理进行建模的标准标记,用图形方式表现典型的面向对象系统的整个结构。它的作用域不局限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
UML 的概念包括了 UML 语义(Semantics)和 UML 表示符(Notation)两个部分。UML 语义定义了静态模型和动态模型。结构模型强调系统的对象结构,入对象的类、接口、属性和关系;行为模型关注的是系统对象的行为动作,如对象的方法、交互、协作和状态。UML 表示符为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。重要内容由 9 种图来定义,包括用例图、类图、对象图、状态图、构件图、部署图、协作图、交互序列图、活动图。
UML 的特点
(1)UML 统一了各种方法对不同类型的系统、不同开发阶段以及不同内部概念的不同观点,从而有效地消除了各种建模语言之间不必要的差异,它实际上是一种通用的建模语言。
(2)UML 建模能力比其他面向对象建模方法更强。它不仅适合于一般系统的开发,而且对并行、分布式系统的建模尤为适宜。
(3)UML 是一种建模语言,而不是一个开发过程
类
在面向对象编程中,类是对现实世界中一组具有相同特征的物体的抽象。

接口
接口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。在 UML 中,接口使用一个带有名称的小圆圈来进行表示。

一个稍微全一点的 UML 类图

类之间的关系
- 泛化关系 – 类与类之间的继承 – 三角形符号 + 实线
- 实现关系 – 接口与类之间的实现 – 三角形符号 + 虚线
- 聚合关系 – 被指的类由另一个类组成,但是组成方式为保存标识 – 空心菱形符号 + 实线
- 组合关系 – 被指的类有另一个类组成,组成方式为内嵌 – 实心菱形符号 + 实线
- 关联关系 – 在实例化A类的时候需要B类作为参数 – 箭头 + 实线
- 依赖关系 – A类当中的方法中使用了B类的方法或者变量 – 箭头 + 虚线
关联关系与依赖关系还不能完全理解,这一段等到可以理解之后再来补充
各个关系的详细说明
泛化关系(generalization)
类的继承结构表现在uml中为:泛化与实现

实现关系(realize)

聚合关系(aggregation)

聚合关系用于表示实体对象之间的关系,表示整体由部分构成的语义;例如一个部门有多个员工组成;
聚合关系应用数据库的知识很好理解,比如我们有两个集合,分别是学生信息与学生成绩;当我们在学生成绩集合中存储对应学生集合中唯一标识的时候我们认为这两个对象之间就是聚合关系。所以当整体(学生成绩)不存在了,个体依然不受影响。
组合关系(composition)

组合关系同样表示整体由部分组成的语义;比如公司有多个部门构成;
组合关系应用到数据库的知识同样很好理解,比如我们有两个集合,还是学生信息和学生成绩;当我们在学生成绩集合中直接存储学生信息的时候我们认为这两个对象之间就是组合关系。所以当整体(学生成绩)不存在了,学生信息也不存在了。
关联关系

1 | // typescript |
A与B就是关联关系,依赖注入,这种方式在前端框架Angular中特别常见。
依赖关系(dependency)
1 | class Obj1{ |
各个关系之间的比较
总结:几种关系耦合强弱关系的比较,依赖<关联<聚合<组合<继承
要想理解这个强弱排序,我们首先要理解“耦合”的概念。
耦合:两个类之间的关联程度。具体一点可以认为两个类之间存在关联关系的时候,修改一个类之后对于另一个类的影响程度也可以用来表示耦合度。毕竟降低耦合就是为了减少这种影响。
软件设计中通常用耦合度和内聚度作为衡量模块独立成都的标准;划分模块的最重要的标准也是“高内聚,低耦合”