软件设计师考试 | 第七章 面向对象技术 | UML

面向对象分析强调的是对一个系统中对象的特征和行为的定义。

统一建模语言(UML)是面向对象软件的标准化建模语言。

UML的词汇表包含三种构造块:

  • 事物,对模型中最具有代表性的成分的抽象。
  • 关系,关系把事物结合在一起。
  • ,图聚集了相关的事物。

(一)事物

UML中有四种事物:结构事物、行为事物、分组事物和注释事物。

1. 结构事物

通常是模型的静态部分,描述概念或物理元素。

结构事物包括:

  • 接口
  • 协作
  • 用例
  • 主动类
  • 构件
  • 制品
  • 结点

各种结构事物的图形化表示如下图所示:


结构事物的图形表示

2. 行为事物

行为事物是UML模型的动态部分,它们是模型中的动词,描述了跨越时间和空间的行为。

行为事物包括:

  • 交互
  • 状态机
  • 活动

各种行为事物的图形表示如下图所示:


行为事物的图形表示

交互 由在特定语境中共同完成一定任务的一组对象之间交换的消息组成。一个对象群体的行为或单个操作的行为可以用一个交互来描述。交互涉及一些其他元素,包括消息、动作序列和链。

状态机 描述了一个对象或一个交互在生命期内响应事件所经历的状态序列。单个类或一组类之间协作的行为可以用状态机来描述。一个状态机涉及到一些其他元素,包括状态、转换、事件和活动。

活动 是描述计算机过程执行的步骤序列,注重步骤之间的流而不关心哪个对象执行哪个步骤。活动的一个步骤称为一个动作,在图形上,把动作画成一个圆角矩形,在其中含有指明其用途的名字。

3. 分组事物

分组事物是UML模型的组织部分,是一些由模型分解成的“盒子”。

在所有的分组事物中,最主要的分组事物是包。包把元素组织成组的机制。结构事物、行为事物甚至其他分组事物都可以放在包中。

包的图形化表示如下图所示:


4. 注释事物

注释事物是UML模型的解释部分。这些注释事物用来描述、说明和标注模型的任何元素。

注解是一种主要的解释事物。注解是一个依附于一个元素或一组元素之上,对它进行约束或解释的简单符号。

注解的图形化表示如下图所示:


注解

(二)关系

UML中有四种关系:

  1. 依赖
    依赖是两个事物间的语义关系,其中一个事物发生变化会影响另一个事物的语义。
    在图形上,把一个依赖画成一条可能有方向的虚线。如下图所示:

    依赖

  2. 关联
    关联是一种结构关系,它描述了一组链,链是对象之间的连接。
    聚集是一种特殊类型的关联,它描述了整体和部分间的结构关系。
    关联和聚集的图形化表示如下图所示:

    关联

  3. 泛化
    泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。
    在图形上,把一个泛化关系画成一条带有空心箭头的实线,它指向父元素。如下图所示:

    泛化

  4. 实现
    实现是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。
    在两种情况下会使用实现关系:一种是在接口和实现它们的类或构件之间;另一种是在用例和实现它们的协作之间。
    在图形上,把一个实现关系画成一条带有空心箭头的虚线,如下图所示:

    实现


(三)UML中的图

图是一组元素的图形表示,大多数情况下把图画成顶点(代表事物)和弧(代表关系)的连通图。

UML2.0提供了13种图,分别是:

  • 类图
  • 对象图
  • 用例图
  • 序列图
  • 通信图
  • 状态图
  • 活动图
  • 构件图
  • 组合结构图
  • 部署图
  • 包图
  • 交互概览图
  • 计时图

其中,序列图、通信图、交互概览图和计时图均被称为交互图。

1. 类图

类图展现了类、接口、协作和它们之间的关系。如下图所示:


UML类图

类图用于对系统的静态设计视图建模。

当对系统的静态设计视图建模时,通常以下述三种方式之一使用类图:

  1. 对系统的词汇建模
    需要考虑:哪些抽象是考虑中的系统的一部分,哪些抽象处于系统边界之外。
    用类图详细描述这些抽象和它们的职责。
  2. 对简单的协作建模
    协作是一些共同工作的类、接口和其他元素的群体,该群体提供的一些合作行为强于所有这些元素的行为之和。
    例如,当对分布式系统的事务语义建模时,不能仅仅盯着一个单独的类来推断要发生什么,而要有相互协作的一组类来实现这些语义。
    用类图对这组类以及它们之间的关系进行可视化和详述。
  3. 对逻辑数据库模式建模
    将模式看作为数据库的概念设计的蓝图,可以用类图对这些数据库的模式建模。

2. 对象图

对象图展现了某一时刻一组对象以及它们之间的关系,描述了类图中所建立的事物的实例的静态快照。
对象图一般包括对象和链。如下图所示:


UML对象图

对象图给出系统的静态设计视图或静态进程视图,这种视图主要支持系统的功能需求,即系统应该提供给最终用户的服务。利用对象图可以对静态数据结构建模,主要是对对象结构进行建模。
对象图表示了交互图表示的动态场景的一个静态画面,可以使用对象图可视化、详述、构造和文档化系统中存在的实例以及它们之间的相互关系。

3. 用例图

用例图展现了一组用例、参与者及它们之间的关系。
用例图通常包括:用例;参与者;用例之间的扩展关系和包含关系,参与者和用例之间的关联关系,用例与用例以及参与者与参与者之间的泛化关系。如下图所示:


UML用例图

用例图对系统的静态用例视图进行建模。这个视图主要支持系统的行为,即该系统在它的周边环境的语境中所提供的外部可见服务。
当对系统的静态用例视图建模时,可以用以下两种方式来使用用例图:

  1. 对系统的语境建模
    对一个系统的语境进行建模,包括围绕整个系统画一条线,并声明有哪些参与者位于系统之外并与系统进行交互。在这里,用例图说明了参与者以及它们所扮演的角色的含义。
  2. 对系统的需求建模
    对一个系统的需求进行建模,包括说明这个系统应该做什么,而不考虑系统应该怎样做。在这里,用例图说明了系统想要的行为。

4. 交互图

交互图用于对系统的动态方面进行建模。

交互图表现为序列图、通信图、交互概览图和计时图。

(1)序列图

序列图强调消息时间顺序的交互图。描述了以时间顺序组织的对象之间的交互活动。如下图所示:


UML序列图

形成序列图时,首先把参加交互的对象放在图的上方,沿水平方向排列。通常把发起交互的对象放在左边,下级对象依次放在右边。然后,把这些对象发送和接收的消息沿垂直方向按时间顺序从上到下放置。以此来形成控制流随时间推移的清晰的可视化轨迹。

序列图与通信图不同的两个特征:

  • 序列图有对象生命线
    对象生命线是一条垂直的虚线,表示一个对象在一段时间内存在。
    • 大部分对象存在于整个交互过程中,所以这些对象全部排列在图的顶部,其生命线从图的顶部画到图的底部。
    • 少部分对象在交互过程中创建,它们的生命线从接收到构造型为create的消息时开始。
    • 对象也可以在交互过程中撤销,它们的生命线在接收到构造型为destroy的消息时结束(并且给出一个大X的标记表明生命的结束)。
  • 序列图有控制焦点
    控制焦点是一个瘦高的矩形,表示一个对象执行一个动作所经历的时间段,既可以是直接执行,也可以是通过下级过程执行。

矩形的顶部表示动作的开始,底部表示动作的结束。还可以通过将另一个控制焦点放在它的父控制焦点的右边来显示控制焦点的嵌套。

(2)通信图

通信图强调接收和发送消息的对象的结构组织。也被称为协作图。

产生一张通信图,首先要将参加交互的对象作为图的顶点,然后把连接这些对象的链表示为图的弧,最后用对象发送和接收的消息来修饰这些链。如下图所示:


UML通信图

通信图有两个不同于序列图的特性:

  • 通信图有路径
    为了指出一个对象如何与另一个对象链接,可以在链的末端附上一个路径构造型。通常只需要显式地表示以下几种链的路径:local(局部)parameter(参数)global(全局)self(自身)
  • 通信图有顺序号
    为了表示一个消息的时间顺序,可以给消息加一个数字前缀。如果有嵌套的话,可以使用带小数点的号码。

(3)交互概览图

交互概览图强调控制流。是UML2.0新增的交互图之一,它是活动图的变体,描述业务过程中的控制流概览,软件过程中的详细逻辑概览,以及将多个图进行连接,抽象掉了消息和生命线。使用活动图的表示法,如下图所示:

交互概览图

(4)计时图

计时图是另一种新增的,特别适合实时和嵌入式系统建模的交互图,关注沿着线性时间轴、生命线内部和生命线之间的条件改变。它描述对象状态随着时间改变的情况,项示波器,适合分析周期和非周期性任务。如下图所示:


UML计时图

5. 状态图

状态图展现了一个状态机,它由状态、转换、事件和活动组成。强调对象行为的事件顺序。

状态图通常包括简单状态和组合状态、转换(事件和动作)。如下图所示:


UML状态图

状态是指对象的生命周期中某个条件或状态,在此期间对象将满足某些条件、执行某些活动或等待某些事件,是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。

6. 活动图

活动图是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程。如下图所示:


UML活动图

活动图一般包括活动状态和动作状态、转换和对象。

当对一个系统的动态方面建模时,通常有两种使用活动图的方式:

  • 对工作流建模
    关注的是与系统进行协作的参与者所观察到的活动。
  • 对操作建模
    此时是把活动图当作流程图使用,对一个计算的细节部分建模。

7. 构件图

构件图展现了一组构件之间的组织和依赖。构件图专注于系统的静态实现视图,与类图类似,通常把构件映射成一个或多个类、接口或协作。如下图所示:


UML构件图

8. 组合结构图

组合结构图用于描述一个分类器(如类、构件或用例)的内部结构,分类器与系统中其他组成部分之间的交互端口,展示一组相互协作的实例如何完成特定的任务,描述设计、架构模式或策略。组合结构图的内部结构和协作使用图分别如以下两图所示:


内部结构组合结构图
协作使用组合结构图

9. 部署图

部署图是用来对面向对象系统的物理方面建模的方法,展现了运行时处理结点以及其中构件(制品)的配置。

在部署图中,通常一个结点是一个在运行时存在并代表一项计算资源的物理元素,至少拥有一些内容,常常具有处理能力,包含一个或多个构件。如下图所示:


UML部署图

10. 包图

包图是用于把模型本身组织成层次结构的通用机制,不能执行,展现由模型本身分解而成的组织单元以及其间的依赖关系。

包可以拥有其他元素,可以是类、接口、构件、结点、协作、用例和图,甚至是嵌套的其他包。如下图所示:


UML包图

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容