大一的时候就已经接触过UML图,当时也只是懵懵懂懂,结合项目代码大概知道这是一种类似流程图的东西。如今要软考了,重新接触UML才知道这不仅仅只是流程图那么简单。
简介
UML,也就是所谓的统一建模语言,这是一种被广泛接受的面向对象的分析方法。说是一种语言,可它并不像C/C++或其他任何编程语言那样主要由文字来表达含义,UML是由图表加部分解释文字构成的,换句话说,它就是个图。
事物
UML中有4种事物:
- 结构事物
- 行为事物
- 分组事物
- 注释事物
1.结构事物(Structural Thing )
结构事物是UML中的名词,它们通常是UML的静态部分、概念描述或者是物理元素。可能这么说有点绕,对应到代码中,结构事物就是类、接口。除此之外还包括**协作(Collboration)、用例(Use Case)、主动类(Active Class)、构建(Component)、制品(Artifact)和节点(Node)。**这些结构事物的图形化表示如下:
2.行为事物(Behavior thing)
行为事物是UML图的动态部分,包括了交互(Interaction)、状态机(State Machine)和活动(Activity)。
交互由在特定语境中共同完成一定任务的一组对象之间交换的消息组成。一个对象群体的行为或单个操作的行为可以用一个交互来描述。交互设计一些其他元素,包括消息、动作序列(由一个消息引起的一系列行为)和链(对象间的连接)。在图形上,把一个消息表示为一条有向直线,通常在表示消息的线段上总有操作名。
状态机描述了一个对象或一个交互在生命周期内响应事件所经历的状态序列。
活动是描述计算机过程执行的步骤序列,注重步骤之间的流而不关心哪个对象执行哪个步骤。
以上三个是可以包含在UML模型中的基本行为事物。在语义上,这些元素通常与各种结构元素相关。
3.分组事物
分组事物是UML模型的组织部分。在所有的分组事物中,最主要的是包(Package)。结构事物、行为事物乃至于其他的分组事物都能放进包内。包的图形化表示如下所示:
4.注释事物(Annotational Thing)
注释事物是UML模型的解释部分,这些解释事物用来描述、说明和标注模型的任何元素。注解(Note)是其中一种主要的解释事物。图示如下:
关系
UML中有4种关系,分别是:
- 依赖
- 关联
- 泛化
- 实现
-
依赖(Dependency)。依赖是两个事物间的语义关系。其中的一个事物发生变化(也就是被依赖事物)就会影响到另一个事物(依赖事物)。依赖画成一条有方向的虚线,如下图:
-
关联(Association)。关联是一种结构关系,他描述了一组链。链是对象之间的连接。聚集(Aggregation)是一种特殊类型的关联,他描述了整体和部分的结构关系。关联和聚集的图形化表示如下:
-
泛化(Generalization)。泛化是一种特殊/一般关系,特殊元素(子元素)的实例对象可以替代一般元素(父元素)的对象。用这种办法,子元素共享了父元素的结构和行为。说了这么多,其实泛化就是面向对象里的继承概念,子类继承父类,子类对象可以替代父类对象。
-
实现(Realization)。实现是类元之间的语义关系,其中一个类元指定了有另一个类元保证执行的契约。在两种情况下会使用实现关系,一种是在接口和实现他们的类或构件之间。另一种则是在用例和实现他们的协作之间。
泛化和实现的图示化如下图: