第十一章 面向对象的分析
面向对象的系统分析与设计首先要从建模开始 。
建立模型帮助人们思考问题,定义术语,从全局上把握系统的全貌及系统各组成部分的关系,防止过早地陷入某些问题的细节 。
本章根据循序渐进的原则介绍两种面向对象建模方法,OMT( Object Modeling Technique) 方法 与 统 一 建 模 语 言 UML ( Unified Modeling
Language) 。
11.1 面向对象建模所谓模型,就是为了理解事物而做出的一种抽象,是对事物无歧义的书面描述。通常模型由两个方面组成:一组图形符号和组成这些图形符号的规则,利用它们对每个类的规格说明和操作细化,还必须对形成应用结构的类之间的相互作用加以表示。
(2)对象之间的消息传递构成静态结构视点。
11.1 面向对象建模建立模型的目的是为了帮助我们思考问题、定义术语。通常把分析时收集的信息构造在三类模型中,即对象模型、功能模型和动态模型。
一个典型的软件系统组合了上述三方面的内容:
它使用数据结构(对象模型),
执行操作(动态模型),
并且完成数据值的变化(功能模型)。
(2)对象之间的消息传递构成静态结构视点。
11.2 面向对象建模 ——三模型法求分析(对象模型)
对象模型是三个模型中关键的模型,它的作用是描述系统的静态结构,包括构成系统的类和对象,它们的属性和操作,以及它们之间的关系。
面向对象的方法不是围绕功能来构造系统。对象模型为建立动态模型和功能模型,提供了实质性的框架。事实上,这个模型可以看作扩充的实体 ——关系模型( E-R)。
11.2 面向对象建模 ——三模型法求分析(对象模型)
对象模型是三个模型中关键的模型,它的作用是描述系统的静态结构,包括构成系统的类和对象,它们的属性和操作,以及它们之间的关系。
面向对象的方法不是围绕功能来构造系统。对象模型为建立动态模型和功能模型,提供了实质性的框架。事实上,这个模型可以看作扩充的实体 ——关系模型( E-R)。
11.2 面向对象建模 ——三模型法求分析(对象模型)
11.2.1 表示类 — &— 对象的图形符号类 —&—对象”是一个专用术语,它的含义是“一个类及属于该类的对象”。图
11.1给出了在对象模型中表示类和对象的图形符号。图 11.1
中左图表示类 —&—对象的图形符号,图 11.1中右图表示类的符号。类符号是类 —
&—对象符号的变种,通常代表没有实例的抽象类。
类名属性服务类名属性服务
11.1 表示符号
11.2 面向对象建模 ——三模型法求分析(对象模型)
11.2.1 表示类 — &— 对象的图形符号类符号是一个矩形框,由两条横线将矩形框分为三部分,最上面是类的名字,中间部分列出该类提供的服务
(又称为方法)。类 —&—
对象符号外面再加一个虚线框组成,虚线框代表属于该类的对象。
类名属性服务类名属性服务
11.1 表示符号
11.2 面向对象建模 ——三模型法求分析(对象模型)
11.2.2 表示结构的图形符号
1,归纳关系一般化关系的形成,可以通过检查一组概念和识别这组概念中的共同元素来实现 。
小汽车,卡车和公共汽车可以蕴含在更一般的汽车概念中 。 这个较一般化的抽象还可以帮助定义其他比较特殊的抽象,如赛车,面包车和牵引车 。
11.2 面向对象建模 ——三模型法求分析(对象模型)
图 11.2( a) 表示归纳关系的图形符号
( b) 表示人类与具体员工、学生类关系的图形一般类具体类 1
具体类 2
人类员工学生
11.2 面向对象建模 ——三模型法求分析(对象模型)
2.组合关系就是整体与部分的关系。这个关系支持从几个较小的和较简单的元素来开发一个对象。它大略相应于一个记录中成分的声明。例如,一个航班可以被认为有 6个属性:飞机编号、机组编号、离开和到达地点、起飞和降落时间。因此,航班类有一个组合关系,它使用了表示飞机、人员、空间的类,
并增加了时间窗口。
11.2 面向对象建模 ——三模型法求分析(对象模型)
部分 1
整体部分 1
部分 2
1,m 0,n
部分 1
计算机系统硬件软件
1,m 0,n
图 11.3( a) 表示组合关系的图形符号
( b) 组合关系的计算机系统实例
11.2 面向对象建模 ——三模型法求分析(对象模型)
图 11.3( a)是表示组合关系的图形符号。图中上部是一个整体对象,下部是组成该整体对象的若干个部分对象,它们之间用直线及三角形标记连接。
三角形标记表明组合关系的方向:从三角形顶点引出的线指向整体对象。通常,把整体对象画在图的上部,
把部分对象放在下部。注意直线端点的位置,这个端点位置表明,这是对象(而不是类之间的关系)。
结构线每端标出的数值(或值的范围),表示在此结构中该端对象的数量(当值为 1时无须标出)。
11.2 面向对象建模 ——三模型法求分析(对象模型)
当组合关系有多个层次时,可以用一棵简单的聚集树来表示它。图 11.4是描绘一本教材结构的聚集树教 材前 言习 题节封 面 目 录 章
1,m
m
1,n
m
11.2 面向对象建模 ——三模型法求分析(对象模型)
3,关联关联关系指定一个抽象作为其他抽象实例的包容
( container) 。 在规则中,对象与对象之间的关系叫做关联 。
关联代表一组存在于两个或多个对象之间的,具有相同结构和含义的具体连接 。 关联反映对象之间相互依赖与相互作用的关系 。
关联和组合之间的差别在于组合实体的意图。
组合指定一组对象中的某些元素作为一个对象的组成,
而关联是指群集的相互有关联的对象群。这个群集中每个对象分量都是独立地用在系统的其余地方。
11.2 面向对象建模 ——三模型法求分析(对象模型)
关联关系图 1教师与属于他的书之间关联关系 图 2 消息连接的表示符号
11.2 面向对象建模 ——三模型法求分析(对象模型)
关联关系
( 1) 符号关联关系用两个对象之间的连线表示 。 连线端点所在的位置表明,
这是对象 ( 而不是类 ) 之间的映射关系 。
( 2) 阶阶就是参与关联的对象的个数 。 与组合表示方法类似 ( 组合关系实际是一种特殊的关联关系 ),阶数用标在连线端点的单个数字或数值区间表示 。 例如,,1+”( 一个或多个 ) 。
( 3) 消息连接消息连接反映了一个对象对另一个对象的处理依赖性 。 这种关系表明,一个对象为了完成自己的任务,需要借助另一个对象的服务 。
消息连接的符号,是从消息发送者指向消息接受者的箭头线 。
11.2 面向对象建模 ——三模型法求分析(对象模型)
实例:一家公司的对象模型
11.2 面向对象建模 ——三模型法求分析(对象模型)
实例:一家公司的对象模型上图是一家公司的对象模型,它表明,该公司有许多部门,部门名唯一地确定一个部门,每个部门有一名经理主管,也有的经理不管理任何一个部门;每个部门生产多种产品,每种产品仅由一个部门生产 。 该公司有许多名员工为之工作,员工又进一步划分为经理与工人两类 。 每名工人可参加多个工程项目,每个项目需要多名工人;每位经理可以主持多个项目,每个项目仅有一人主持 。 这个对象模型还描述了某些类对象所具有的属性,以及公司类对象提供的服务 。
11.3 面向对象建模 ——三模型需求分析(动态模型)
要对一个系统了解得比较清楚,
首先应当考察它的静态结构,即在某一时刻它的对象和这些对象之间相互关系的结构;然后应当考察在任何时刻对象及其关系的改变 。
系统的这些涉及时序和改变的状况,用动态模型来描述 。 动态模型着重于系统的控制逻辑 。 它包括两个图,一是状态图,另一是事件追踪图 。
11.3 面向对象建模 ——三模型需求分析(动态模型)
11.3.1 术语
1,事件事件是某个特定时刻所发生的事情,它是对引起对象从一种状态转换到另一种状态的现实世界中的抽象 。 事件没有持续时间,是瞬间完成的 。
简而言之,事件就是引起状态转换的控制信息 。
11.3 面向对象建模 ——三模型需求分析(动态模型)
11.3.1 术语
2,状态状态就是对象在其生命周期中的某个特定阶段所处的某种情形,它是对影响对象行为的属性值的一个抽象 。 状态有持续性,它占有一段时间间隔 。
3,行为行为是指对象达到某种状态时所做的一系列处理操作。这些操作是需要耗费时间的。
11.3 面向对象建模 ——三模型需求分析(动态模型)
11.3.2 表示方法状态图是一个状态和事件的网络,侧重于描述每一类对象的动态行为 。 在状态图中,状态是对某一时刻中属性特征的概括 。
而状态迁移则表示这一类对象在何时对系统内外发生的哪些事件做出何种响应 。
操作是一个伴随状态迁移的瞬时发生的行为,与触发事件一起表示在有关的状态迁移之上 。 活动则是发生在某个状态中的行为 。
11.3 面向对象建模 ——三模型需求分析(动态模型)
在图 11.8中,图中的椭圆表示状态,状态可以标上状态名也可以不给状态起名字,行为用关键字 do( 后接冒号 ) 标明 。
从一个状态到另一个状态的转换用箭头线表示,线上表明事件名。必要时在事件名后面加一个方括号,括号内写上状态转换的条件。
11.3 面向对象建模 ——三模型需求分析(动态模型)
下图是人们非常熟悉的电话的状态图。图中表明:
没有人打电话时电话处于闲置状态;
有人拿起听筒则进入拨号音状态,到达这个状态后,电话的行为是响起拨号音;
这时如果拿起听筒的人改变主意不想打了,它把听筒放下(挂断),
电话重又回到闲置状态;
如果拿起听筒很长时间不拨号(超时),则进入超时状态;
如果拿起听筒,拨入有效号码,则电话进入试接通状态 ……
11.3 面向对象建模 ——三模型需求分析(动态模型) 2、标识消息传递
11.4 面向对象建模 ——三模型需求分析(功能模型)
功能模型着重于系统内部数据的传送和处理 。 功能模型定义,做什么,,通常,功能模型由一组数据流图组成 。 功能模型表明整个的数据流动情况,从外部输入,通过操作和内部存储,直到外部输出 。 功能模型还包括了对象模型内部数据间的限制 。
功能模型中所有的数据流图往往形成一个层次结构。在这个层次结构中,一个数据流图中的过程可以由下一层的数据流图做进一步的说明。 —
般来讲,高层的过程相应于作用在组合对象上的操作,而低层的过程则代表作用于一个简单对象上的操作。
11.5 UML概述
(2)对象之间的消息传递构成静态结构视点。
本章根据循序渐进的原则介绍统一建模语言 UML
( Unified Modeling Language) 。
UML适用于各种软件开发方法,软件生命周期的各个阶段,
各种应用领域以及各种开发工具,UML是一种总结了以往建模技术的经验并吸收当今优秀成果的标准建模方法 。
UML包括概念的语义,表示法和说明,提供了静态,动态,
系统环境及组织结构的模型 。 它是一个通用的可视化建模语言,用于对软件进行描述,可视化处理,构造和建立软件系统制品的文档 。 UML记录了对必须构造的系统的决定和理解,可用于对系统的理解,设计,浏览,配置,维护和信息控制 。
11.5 UML概述
(2)对象之间的消息传递构成静态结构视点。
11.5.1 UML的主要内容
UML主要元素包括,UML的基本构造块,支配这些构造块如何放在一起的规则和一些运用于整个 UML的公共机制 。
1,1.UML的主要概念和事物,关系
UML的主要概念由图 11.10表示:
11.5 UML概述
(2)对象之间的消息传递构成静态结构视点。
项目活动任务 资源参与者时间工作成果系统模型文档 设备

﹡ ﹡ 由?产生
“),
消耗﹡
11.5 UML概述
(2)对象之间的消息传递构成静态结构视点。
在 UML中可以将建模语言划分为三种构造块,即三类词汇或基本元素:事物,关系和图 。 其中事物是对模型中最具有代表性的成分的抽象,可分为结构事物,行为事物,分组事物和注释事物;关系能把事物联系在一起,可分为依赖,关联,泛化
( 归纳 ),实现 。
掌握了这些基本知识能够理解 UML模型,
并建立一些基本模型。图 11.11 表示 UML中各种元素,表 11.1 介绍 UML中各种元素的功能。表 11.2 UML各种元素关系的种类。
11.5 UML概述
(2)对象之间的消息传递构成静态结构视点。
类名属性方法接口系统维护泛化依赖协作 参与者登录用例类服务器节点空闲状态 交互构件交互图 11.11 UML中各种元素的表示法
11.6 UML的图形
(2)对象之间的消息传递构成静态结构视点。
UML提供了不同的模型图用来表示系统相关角色 ( 如用户,分析员等 ) 对系统的看法 。
需求确认,系统分析,系统设计,系统编码,系统测试是软件工程的 5个重要阶段 。
UML中的用例图,序列图可以用来描述系统需求:
类图,对象图,协作图可以用来分析系统;
类图,对象图,序列图,状态图,活动图可以用来设计系统;
构件图,序列图可以用来帮助系统编码;
部署图,序列图可以用来规划系统实施;
11.6 UML的图形
(2)对象之间的消息传递构成静态结构视点。
所有 9种模型图都可以帮助系统测试,根据不同的情况可以选择不同的模型图作为系统的测试模型 。
l 用例图从用户的角度来表示系统的功能,它们定义了系统的边界 。
l 类图以对象,它们的属性和关系表示系统的结构 。
l 顺序图以一组对象之间交互来表示系统的行为 。 它们用来标识应用域和实现域对象 。
l 状态图用来表示主要对象的行为 。
l 活动图是用来表示通过系统的数据流或控制流的流程图 。
我们主要介绍 UML在系统分析,设计阶段所涉及的 5种图:
用例图,类图,顺序图,状态图,活动图 。
11.6 UML的图形 -用例图
(2)对象之间的消息传递构成静态结构视点。
11.6,1 用例图 ( use case diagram)
用例从执行者的观点描述系统的行为 。 用例描述的行为也被称为外部行为 。 一个用例把系统提供的一个功能描述为一组事件,这组事件对执行者产生一个可见的结果 。 执行者启动一个用例来访问系统功能 。 然后,用例能启动其它的用例并从执行者处收集更多的信息 。 当执行者和用例交换信息时,它们被称为交流 。
11.6 UML的图形 -用例图图 11.l2 一个描述简单电话卡功能的 UML用例图,图中用例使用椭圆表示,系统界限用包围用例的方框表示 。
电话卡充值使用登录电话卡用户电话卡管理中心读卡图 11.l2 简单电话卡功能的 UML用例图
11.6 UML的图形 -用例图为描述一个用例,我们使用一个由 6个域组成的模板:
l 用例名:用例的名字在系统中是惟一的,以便能毫不含糊地引用该用例 。
l 参与执行者:参与执行者是与用例交互的执行者 。
l 入口条件:入口条件描述了用例启动前需要满足的条件
l 事件流:事件流描述了用例的动作序列,为引用方便,对它们进行了编号 。
l 出口条件:描述了用例完成后应满足的条件 。
特殊需求:是与系统功能无关的需求,包括系统性能
、实现、运行平台等限制。
11.6 UML的图形 -类图类图展现了一组对象,接口,协作和它们之间的关系 。
在类图中类用矩形方框表示,它的属性与操作分别列在分格中 。 如类图重复出现则不需要表达详细信息,分格可以省略 。
类图由 5个重要的元素组成:
l 类名:类的名字在系统中是惟一的,以便能毫不含糊地引用该类 。
l 类的描述:类的各种属性与操作 。
l 接口:标明接口名
l 协作:标明协作 。
l 关系:主要指类与类之间的多种联系方式,比如依赖,关联,泛化的关系 。
11.6,2 类图 ( class diagram)
11.6 UML的图形 -类图类与类之间的这些关系都体现在类图的内部结构中,
通过类的属性与操作反映出来,在系统生命周期中类图所描绘的结构在任何情况下都是有效的 。
类类类名属性 1
属性 2
方法 1
方法 2
方法 3
类的描述 接口 协作接口名协作名关系关联 泛化(归纳) 依赖图 11.13 类图基本元素
11.6 UML的图形 -类图 简单计算器数据 电池 显示屏 按键
1 1 1
23 1 2 1
1
图 11.14 简单计算器元素的 UML类图
11.6 UML的图形 -顺序图
11.6,3 顺序图( Sequence diagram)
图 11.14 简单计算器元素的 UML类图顺序图用来反映若干个对象之间的动态协作关系,也就是随着时间的流逝,对象之间是如何交互的,如图
11.15所示 。
顺序图主要反映对象之间已发送消息的先后次序,说明对象之间的交互过程以及系统执行过程中在某一具体位置将会有什么事件发生,顺序图由若干个对象组成,
每个对象用一个垂直的虚线表示 ( 线上方是对象名 ),
每个对象的正下方有一个矩形条,它与垂直的虚线相叠,
矩形条表示该对象随时间流逝的过程 ( 从上至下 ),对象之间传递的消息用消息箭头表示,它们位于表示对象的垂直线条之间,说明和其他的注释作为脚本放在图的边缘 。
11.6 UML的图形 -顺序图图 11.15 是简单手表的 UML顺序图,最左边一栏表示启动这个用例的手表用户执行者的时间轴 。 其他列表示参与该用例的对象的时间序列 。 加下划线的对象名表示它们是实例 ( 与类相对 ) 。 带标记的箭头表示执行者或对象发给其他对象的激活方法 。
:简单手表,显示屏,时间按下按钮 1 ()
按下按钮 1 ()
闪烁小时 ()
按下分 ()
按下按钮 2 ()
同时按下按钮 1,2
停止闪烁()
刷新 ()
增加分钟 ()
确认新时间 ()
手表用户
11.6 UML的图形 -状态图
11.6,4 状态图 ( State chart diagram)
状态图展现了一个状态机,由状态、转换、
事件和活动组成,专注于系统的动态视图,
用对象的多个状态及这些状态间的转换来描述单个对象的行为。通常情况下状态图是对类图的补充。在系统开发过程中并不需要对所有的类画状态图,主要描述因外界影响易发生状态改变,有多个外部事件作用在单个对象上的情况。
11.6 UML的图形 -状态图一个状态表示一个对象的某一组特定值 。 对一个给定状态来说,一个转换表示对象能转移到的一个将来状态以及与该状态转换相关的条件 。 例如,图 11.16是简单手表的一个状态图 。
打开事件记录事件存档事件 协调资源分配资源
11.6 UML的图形 –总结用例图:视图 类图:视图对象模型,
模型状态图:视图 顺序图:视图分析模型,
模型动态模型,
模型功能模型,
模型
OMT分析模型由功能模型,对象模型和动态模型组成 。
UML中,功能模型由用例图表示,对象模型由类图表示,
而动态模型用状态图和顺序图表示 。 所以 UML视图与 OMT
模型的关系是密切的 。
11.7本章小结 —— 三模型法小结面向对象方法学中,对象模型是最基本最重要的,它为其他两种模型奠定了基础,依靠对象模型完成三种模型的集成。
下面扼要地叙述三种模型之间的关系,
(2)对象之间的消息传递构成静态结构视点。
1.针对每个类建立的动态模型,
描述了类实例的生命周期或运行周期,
2.状态转换驱使行为发生,
这些行为在数据流图中被映射成处理,它们同时与对象模型中的服务相对应。
11.7本章小结 —— 三模型法需求分析三种模型之间的关系,
(2)对象之间的消息传递构成静态结构视点。
3.功能模型中的处理,对应于对象模型中类一 &—对象所提供的服务。
通常,在顶层数据流图中的处理,
对应于复杂对象提供的服务;在低层数据流图中的处理,对应于更基本的对象 (基本对象是复杂对象的组成部分 )的服务。有时一个处理对应多个服务,也有 —个服务对应多个处理的时候。
11.7本章小结 ——
三模型法小结三种模型之间的关系,
(2)对象之间的消息传递构成静态结构视点。
4.功能模型中的数据存储,以及数据的源点/终点 (在功能模型中称为动作对象 )通常是对象模型中的对象。
5.功能模型中的数据流,往往是对象模型中的属性值,也可能是整个对象。
6.功能模型中的处理可能产生动态模型中的事件。
7.对象模型描述了功能模型中的动作对象、数据存储以及数据流的结构。
11.7本章小结统一建模语言
(2)对象之间的消息传递构成静态结构视点。
统一建模语言 ( Unified Modeling
Language,UML),它的出现是面向对象技术的新发展 。 UML是 Booch、
Objectory和 OMT方法的结合,融合了 OMT等方法中的基本概念,UML
方法不仅仅是上述方法的简单会合,
它扩展了现有方法的应用范围 。
11.7 本章小结统一建模语言
(2)对象之间的消息传递构成静态结构视点。
在 UML中可以将建模语言划分为三种构造块,即三类词汇或基本元素:事物,
关系和图 。 其中事物是对模型中最具有代表性的成分的抽象,可分为结构事物,
行为事物,分组事物和注释事物;关系能把事物联系在一起,可分为依赖,关联,泛化 ( 归纳 ),实现 。 UML在系统分析,设计阶段有 5种主要的图:用例图,
类图,顺序图,状态图,活动图作为系统的测试模型 。
UML是一种离散、通用的建模语言,
适合对诸如由计算机软件、固件或数字逻辑构成的离散系统建模,不适合对诸如工程和物理学领域中的连续系统建模。