已废弃,请看新版:重温 UML 类图
前一篇写了 UML 工具,接下来就该写写怎么学者写 UML 图了。UML 的重要性大家应该都深有体会了把,要是没有体会说明你的技术还是不入流的入门水平啊。最简单的,写不好 UML 图,我让你写一个复杂点的功能框架,你肯定抓瞎,改来改去的,折腾死你。
UML 也是一种国际规范建模语言,也是一种语言,那么他肯定就有规范啦,找到这个规范的规则,我们学习起来就会很快的。
UML图 建模分成9种图:
- 类图(Class Diagram):描述系统所包含的类、类内部结构及类之间的关系。
- 对象图(Object Diagram):是类图的一个具体实例。
- 组件图(Compoment Diagram):描述代码部件的物理结构以及各部件之间的依赖关系。
- 部署图(Deployment Diagram):定义系统中软、硬件的物理体系结构。
- 用例图(Usecase Diagram):从用户的角度出发描述系统的功能、需求,展示系统外部的各类角色与系统内部的* 各种用例之间的关系。
- 时序图(Sequence Diagram):表示对象之间动态合作的关系。
- 协作图(Collaboration Diagram):描述对象之间的协作关系。
- 状态图(Statechart Diagram):描述一类对象的所有可能的状态及事件发生时状态的转移条件。
- 活动图(Activity Diagram):描述系统中各种活动的执行顺序。
上面的9中图可以归纳为下表:
类型 | 包含 |
---|---|
静态图 | 类图、对象图 |
行为图 | 状态图、活动图 |
用例图 | 用例图 |
交互图 | 顺序图、协作图 |
实现图 | 组件图、部署图 |
我们最常用的呢,就是类图了,其他的就差了,这里我们就来好好学学类图的绘制,想看9种 UML 图的介绍,看这里: UML实践详细经典教程----用例图、顺序图、状态图、类图、包图、协作图
UML 类图中的类
类在 UML 类图中其实是分了3种角色的:
- 实体类
实体类对应系统需求中的每个实体,它们通常需要保存在永久存储体中,一般使用数据库表或文件来记录,实体类既包括存储和传递数据的类,还包括操作数据的类。实体类来源于需求说明中的名词,如学生、商品等。 - 控制类
控制类用于体现应用程序的执行逻辑,提供相应的业务操作,将控制类抽象出来可以降低界面和数据库之间的耦合度。控制类一般是由动宾结构的短语(动词+名词)转化来的名词,如增加商品对应有一个商品增加类,注册对应有一个用户注册类等 - 边界类
边界类用于对外部用户与系统之间的交互对象进行抽象,主要包括界面类,如对话框、窗口、菜单等。
在面向对象分析和设计的初级阶段,通常首先识别出实体类,绘制初始类图,此时的类图也可称为领域模型,包括实体类及其它们之间的相互关系。
我们看 UML 类图有个七技巧,可以从作为 UI 界面的边界类作为起点,因为整个系统的表现就是从 UI 显示开始的
知道了 UML 中类的角色,那么接下来,我们来看看 UML 中一个 class 的绘制结构
方法要是有参数的话,也是要在 ( ) 里写上的,:后面是返回值类型,一个简单的图,就能够很直观的描述一个类,比看代码都了解的快。
当然接口也是这个思路写的,看图:
UML 类的相互关系
UML 图可以很直观,简单的表述清楚一个复杂的系统类结构,用的是什么手段呢,就是丰富准确的类之间关系的设计:
- 继承关系(泛化关系):为啥这样叫我也不知道啊,看着真蛋疼!!!
- 实现关节(接口)
- 关联关系
- 依赖关系
- 组合关系
- 聚合关系
直观的所有关系图:
挑了2张图,应该可以满足各位不同的口味啦。
继承关系(泛化关系)
- 符号:实线 + 空箭头
- 方向:从子类 —> 父类
实现关节(接口)
- 符号:虚线 + 空箭头
- 方向:从实现类 —> 接口
下面的就要好好解释一下了,不是很好理解,第一次接触的要注意了。
单向关联
- 符号:实线+ 箭头(注意不是空箭头啦)
- 方向:从持有者 —> 被持有者(类似观察者和被观察者的关系)
- 理解:可以理解为一个类作为另一个类的变量被操作,这里是 China 这个人持有了 pay 这个对象,用来支付。严格来说,关联关系表示 A 的操作需要 B 的参与,并不是严格的 B 一定要作为 A 的全局变量存在,我看有这么写的,不知道准确不准确。
双向关联
- 符号:实线,没箭头了
- 理解:大体同单向关联,注意两边都有箭头,区别是双方各自作为对方的变量被操作。
聚合关系
- 符号:实线+ 实心菱形箭头
- 方向:从组件 —> 容器
- 理解:和单向关联一样,也是表示一个类在另一个类中作为全部变量存在被调用,聚合关系呢更准确的表示组件和容器的关系,注意这里是实心菱形箭头,表示容器类销毁了,组件累也会销毁。
组合关系
- 符号:实线+ 空心菱形箭头(注意不是实心的了)
- 方向:从组件 —> 容器
- 理解:和聚合关系一样,区别是使用空心的菱形箭头,表示容器类销毁了,但是组件类还会存在,不会跟着被销毁
依赖关系
- 符号:虚线
- 方向:从调用方法的类 —> 参数类
- 理解:表示一个类的某个方法会使用另一个类的对象作为参数,这个对象是作为方法的传入参数存在,而不是全局变量
参考资料:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。