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类图学习_第1张图片
2011090716395022.jpg

方法要是有参数的话,也是要在 ( ) 里写上的,:后面是返回值类型,一个简单的图,就能够很直观的描述一个类,比看代码都了解的快。

当然接口也是这个思路写的,看图:


UML类图学习_第2张图片
7984955-f96e38080e7972d2.jpg

UML 类的相互关系

UML 图可以很直观,简单的表述清楚一个复杂的系统类结构,用的是什么手段呢,就是丰富准确的类之间关系的设计:

  • 继承关系(泛化关系):为啥这样叫我也不知道啊,看着真蛋疼!!!
  • 实现关节(接口)
  • 关联关系
  • 依赖关系
  • 组合关系
  • 聚合关系

直观的所有关系图:


UML类图学习_第3张图片
2012091218440850.jpg

UML类图学习_第4张图片
1870963-66cc761f11b9f2d0.png

挑了2张图,应该可以满足各位不同的口味啦。

继承关系(泛化关系)

UML类图学习_第5张图片
Snip20171124_20.png
  • 符号:实线 + 空箭头
  • 方向:从子类 —> 父类

实现关节(接口)

UML类图学习_第6张图片
Snip20171124_21.png
  • 符号:虚线 + 空箭头
  • 方向:从实现类 —> 接口

下面的就要好好解释一下了,不是很好理解,第一次接触的要注意了。

单向关联

UML类图学习_第7张图片
Snip20171124_22.png
  • 符号:实线+ 箭头(注意不是空箭头啦)
  • 方向:从持有者 —> 被持有者(类似观察者和被观察者的关系)
  • 理解:可以理解为一个类作为另一个类的变量被操作,这里是 China 这个人持有了 pay 这个对象,用来支付。严格来说,关联关系表示 A 的操作需要 B 的参与,并不是严格的 B 一定要作为 A 的全局变量存在,我看有这么写的,不知道准确不准确。

双向关联

UML类图学习_第8张图片
Snip20171124_26.png
  • 符号:实线,没箭头了
  • 理解:大体同单向关联,注意两边都有箭头,区别是双方各自作为对方的变量被操作。

聚合关系

UML类图学习_第9张图片
Snip20171124_27.png
  • 符号:实线+ 实心菱形箭头
  • 方向:从组件 —> 容器
  • 理解:和单向关联一样,也是表示一个类在另一个类中作为全部变量存在被调用,聚合关系呢更准确的表示组件和容器的关系,注意这里是实心菱形箭头,表示容器类销毁了,组件累也会销毁。

组合关系

UML类图学习_第10张图片
Snip20171124_28.png
  • 符号:实线+ 空心菱形箭头(注意不是实心的了)
  • 方向:从组件 —> 容器
  • 理解:和聚合关系一样,区别是使用空心的菱形箭头,表示容器类销毁了,但是组件类还会存在,不会跟着被销毁

依赖关系

UML类图学习_第11张图片
Snip20171124_30.png
  • 符号:虚线
  • 方向:从调用方法的类 —> 参数类
  • 理解:表示一个类的某个方法会使用另一个类的对象作为参数,这个对象是作为方法的传入参数存在,而不是全局变量

参考资料:

  • 五分钟读懂UML类图
  • UML学习(二)-----类图
  • UML实践详细经典教程----用例图、顺序图、状态图、类图、包图、协作图

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(UML类图学习)