UML

统一建模语言UML

2020-01-24  本文已影响0人  WEIJAVA

UML 的定义

统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产 品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。 UML 使用面向对象设计的的建模工具,但独立于任何具体程序设计语言。

UML 应用场景

UML 是在开发阶段,说明、可视化、构建和书写一个面向对象软件密集系统的制品 的开放方法。最佳的应用是工程实践,对大规模,复杂系统进行建模方面,特别是在软 件架构层次,已经被验证有效。统一建模语言(UML)是一种模型化语言。模型大多以 图表的方式表现出来。一份典型的建模图表通常包含几个块或框,连接线和作为模型附 加信息之用的文本。这些虽简单却非常重要,在 UML 规则中相互联系和扩展。

UML 的目标是以面向对象图的方式来描述任何类型的系统,具有很宽的应用领域。 其中最常用的是建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机 械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系 统或工业过程等。总之,UML 是一个通用的标准建模语言,可以对任何具有静态结构和 动态行为的系统进行建模,而且适用于系统开发的不同阶段,从需求规格描述直至系统 完成后的测试和维护。

UML2.0 一共有 13 种图形(UML1.5 定义了 9 种,2.0 增加了 4 种)。分别是:用例 图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图 9 种,包图、 时间图、组合结构图、交互概览图 4 种。

UML 绘图规范

建模的核心是模型,模型是现实的简化,模型是真实系统的左营,它提供了系统的设 计蓝图。给软件系统建模是,需要采用通用的符号语言,这种描述模型所使用的语言称 为建模语言。下图完整地描述了 UML 所能描述的所有事物和关系。


image.png

事物描述

类(Class):对一组具有相同属性,方法,关系和语义的对象的描述。

接口(Interface):描述了一个类或构件的一个服务的操作集。它仅仅是定义了一组操 作的规范,并没有给出这组操作的具体实现(代码)。

用例(Usecase):是对一组动作序列的描述,系统执行这些动作将产生一个对特定的参 与者(Actor)有价值且可观察的结果。

包(Package):是分组事物中最主要的,是 UML 中唯一的组织机制。

事物关系描述

类图(Class Diagrams)

在 UML 2.0 的 13 种图形中,类图是使用频率最高的 UML 图之一。类图是描述系统 中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有 一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。类图表示类、 接口和它们之间的协作关系,用于系统设计阶段。

类图用三个矩形表示,最上面的部分标识类的名称;中间的部分标识类的属性;最下 面的部分标识类的方法,如下图所示:

image.png

类与类之间的关系主要有六种:关联、聚合、组合、继承、实现和依赖,这六种关系 的箭头表示如下:


image.png

接着我们来了解类关系的具体内容。

继承关系

继承关系中,子类继承父类的所有功能,父类所具有的属性、方法,子类应该都有。 子类中除了与父类一致的信息以外,还包括额外的信息。例如:公交车、出租车和小轿 车都是汽车,他们都有名称,并且都能在路上行驶。其类图如下:


image.png

实现关系

接口(包括抽象类)是方法的集合,在实现关系中,类实现了接口,类中的方法实现 了接口声明的所有方法。例如:汽车和轮船都是交通工具,而交通工具只是一个可移动 工具的抽象概念,船和车实现了具体移动的功能。


image.png

组合关系

组合关系表示类之间整体与部分的关系,整体和部分有一致的生存期。一旦整体对象 不存在,部分对象也将不存在,是同生共死的关系。例如:人由头部和身体组成,两者 不可分割,共同存在。


image.png

聚合关系

聚合关系也表示类之间整体与部分的关系,成员对象是整体对象的一部分,但是成员 对象可以脱离整体对象独立存在。例如:公交车司机和工衣、工帽是整体与部分的关系, 但是可以分开,工衣、工帽可以穿在别的司机身上,公交司机也可以穿别的工衣、工帽。


image.png

关联关系

关联关系是类与类之间最常用的一种关系,表示一类对象与另一类对象之间有联系。 组合、聚合也属于关联关系,只是关联关系的类间关系比其他两种要弱。
关联关系有四种:双向关联、单向关联、自关联、多重数关联。例如:汽车和司机, 一辆汽车对应特定的司机,一个司机也可以开多辆车。


image.png

在多重性关系中,可以直接在关联直线上增加一个数字,表示与之对应的另一个类的 对象的个数。


image.png

依赖关系

大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。
依赖关系是一种“使用”关系,特定事物的改变有可能会影响到使用该事物的其他事 物,在需要表示一个事物使用另一个事物时使用依赖关系。
例如:汽车依赖汽油,如果没有汽油,汽车将无法行驶。


image.png

这六种类关系中,组合、聚合和关联的代码结构一样,可以从关系的强弱来理解,各 类关系从强到弱依次是:继承→实现→组合→聚合→关联→依赖。

image.png

UML 类图是面向对象设计的辅助工具,但并非是必须工具,所以我们把它作为架构 师软技能来讲解。

类关系记忆技巧

注意:UML 类关系图中,没有实心箭头。

案例分析

生活案例之动物衍生关系图
下面这张图是来自《大话设计模式》这本书中,对动物衍生关系描述的类图。这个图 非常有技术含量也非常经典,大家可以和我一起来好好理解一下。

image.png

时序图(Sequence Diagrams)

时序图描述对象之间消息的发送顺序,强调时间顺序。时序图是一个二维图,横轴表 示对象,纵轴表示时间,消息在各对象之间横向传递,依照时间顺序纵向排列。用箭头 表示消息、用竖虚线表示对象生命线。

时序图的作用

1、展示对象之间交互的顺序。将交互行为建模为消息传递,通过描述消息是如何在 对象间发送和接收的来动态展示对象之间的交互;
2、相对于其他 UML 图,时序图更强调交互的时间顺序;
3、可以直观的描述并发进程。

时序图组成元素

2、命名方式的选择
三种命名方式均可,哪种最容易让阅读该时序图的人理解,就选择哪种。

3、对象的排列顺序
对象的左右顺序并不重要,但是为了作图清晰整洁,通常应遵循以下两个原则:把交 互频繁的对象尽可能的靠拢;把初始化整个交互活动的对象放置在最左端。

1、消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放 弃或者返回控制。用来表示同步的意义;
2、消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接 受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。
3、返回消息表示从过程调用返回。

常用组合片段举例: 用来指明在两个或更多的消息序列之间的互斥的选择,相当于经典的 if..else..
1、抉择(Alt)
抉择在任何场合下只发生一个序列。 可以在每个片段中设置一个临界来指示该片段 可以运行的条件。else 的临界指示其他任何临界都不为 True 时应运行的片段。如果所 有临界都为 False 并且没有 else,则不执行任何片段。

image.png
2、选项(Opt)
包含一个可能发生或不发生的序列;
image.png
3、循环(Loop)
片段重复一定次数,可以在临界中指示片段重复的条件。
image.png
4、并行(Par)
image.png

时序图画法及实践

时序图的绘制步骤可简单总结如下:
1、划清边界,识别交互的语境;
2、将所要绘制的交互场景中的角色以及对象梳理出来;
3、从触发整个交互的某个消息开始,在生命线之间从上到下依次画出所有消息,并注明 每个消息的特性(如参数等)。


image.png
上一篇下一篇

猜你喜欢

热点阅读