(计算机应用技术专业论文)设计模式在fdp系统设计中的应用.pdf_第1页
(计算机应用技术专业论文)设计模式在fdp系统设计中的应用.pdf_第2页
(计算机应用技术专业论文)设计模式在fdp系统设计中的应用.pdf_第3页
(计算机应用技术专业论文)设计模式在fdp系统设计中的应用.pdf_第4页
(计算机应用技术专业论文)设计模式在fdp系统设计中的应用.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(计算机应用技术专业论文)设计模式在fdp系统设计中的应用.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

y6 5 4 1 6 1 摘要 设计模式在f d p系统设计中应用 研究生 王选指导教师 李永宁 摘 要 文中 对空中交通管制 ( a t c ) 系统的子系统飞行数据处理( f d p ) 系统中的 若干设计问 题做了详尽探讨并给出了 相应的解决方案。目 前, 该套系统已 在双 流、贵阳等多个机场投入使用,获得用户的一致好评. 文章阐述了设计模式的起源以及各种设计模式的设计意图,并分析了使用 这些设计模式可以给软件系统带来的好处。 本文论述了多种设计模式在飞行数据处理子系统中的应用,分析了空管系 统的整体架构,并对各子系统的网络交互做了 细致的分析,提出采用工厂模式 封装网络包,从而为网络交互提供了统一的接日。对于在整个系统内仅需要提 供一个实例的类,作者采用单例模式的设计思想进行封装,并给出了单例模式 的两种典型实现方式饿汉式实现以及懒汉式实现。对飞行计划的处理工作 是飞行数据处理子系统的核心任务, 文中详细讨论了飞行计划的状态及其变迁, 并采用状态模式封装飞行计划的各个子状态,从而把各个子状态包装到相应的 子类中,把行为的定义局域化,使得系统状态变化变得明显,而且避免了大量 条件转移语句的使用,使系统结构变得清晰。策略模式用来封装一组算法,使 其达到可以 相互替换的效果,本文利用策略模式的这一特性对飞行计划的来源 以及航路的解析策略进行了封装,使用策略模式可以使得新策略的加入变得容 易,从而使系统获得良好的可扩充性。文中采用了大量的 u ml图形描述各个 设计模式。 文中所提及的设计思想,既可以应用于对现有代码的重构,也可以为后续 系统的设计提供参考。 关键词: 空中交通管制 飞行数据处理 设 计模式 u m l f d p ab s t r a c t t h e a p p l i c a t i o n o f d e s i g n p a t t e r n i n t h e d e s i g n o f f d p s y s t e m s t u d e n t : x u a n wa n ga d v i s o r . y o n g n i n g l i ab s t r a c t t h i s p a p e r d i s c u s s e s t h e d e s i g n p r o b l e m o f t h e a i r t r a f f i c c o n t r o l s ( a t c ) s u b s y s t e m一 fl y d a t a p r o c e s s ( f d p ) , a n d p r o v i d e s i t s s o lu t i o n . n o w , t h e s y s t e m h a s b e e n a d o p t e d b y m a n y a e r o d r o m e s s u c h a s s h u a n g l i u , g u i y a n g e t c i n t h e d e s i g n o f f d 只t h e a u t h o r t a k e s a d v a n t a g e o f m a n y k i n d s o f d e s i g n p a tt e r n s . t h e a u t h o r a n a ly z e s t h e w h o l e s t r u c t u r e o f a i r t r a ff i c c o n t r o l s y s t e m a n d d i s c u s s e s t h e s u b s y s t e m s i n f o r m a t i o n e x c h a n g e 衍n e t w o r k t h o r o u g h l y . t o p r o v i d e i n t e r f a c e i n t h e s a m e w a y f o r n e t w o r k i n f o r m a t i o n e x c h a n g e , t h e a u t h o r a d o p t s f a c t o ry p a tt e rn t o e n c a p s u l a t e n e t w o r k p a c k e t . a n d t h e a u t h o r a d o p t s s i n g l e t o n p a tt e rn t o e n s u r e o n e i n s t a n c e f o r t h o s e w h o n e e d o n l y o n e i n s t a n c e i n t h e s y s t e m. t h e m a n a g e m e n t o f fl y p l a n i s t h e c o r e t a s k o f fl y d a t a p r o c e s s s y s t e m . t h e a u t h o r a n a l y z e s t h e fl y p l a n s s t a t e a n d it s t r a n s f o r m a t i o n . a n d t h e a u t h o r m a k e s u s e o f s t a t e p a t t e rn t o e n c a p s u l a t e fl y p l a n s s t a t e s . s t r a t e g y p a tt e rn c a n e n c a p s u l a t e a g r o u p o f a l g o r i t h m , a n d m a k e s t h e a l g o r i t h m s t o b e r e p l a c e d f r e e l y . t h e a u t h o r u s e s t h i s c h a r a c t e r t o e n c a p s u l a t e t h e s o u r c e o f p l a n a n d a s a d e c o d e s t r a t e g y o f r o u t e . t h e p a p e r u s e s a g r e a t d e a l u ml f i g u r e t o d e s c r i b e t h e p a t t e rn s s t r u c t u r e . t h e d e s i g n t h o u g h t i n th e p a p e r n o t o n l y c a n b e u s e d t o r e b u i l d c u r r e n t c o d e , b u t a l s o p r o v i d e r e f e r e n c e f o r l a t e r s y s t e m d e s i g n . k e y w o r d : a i r t r a f f i c c o n t r o l fl y d a t a p r o c e s s d e s i g n p a t t e rn u ml f d p 四川大学硕士学位论文 第一章 引 言 1 . 1空中交通管制简介 空中交通管制就是对航空器的空中活动进行管理和控制的业务,包括空中 交通管制业务、飞行情报和告警业务。它的任务是:防止航空器相撞,防止机 场及其附近空域内的航空器同障碍物相撞:维护空中交通秩序,保障空中交通 畅通,保证飞行安全和提高飞行效率。 很多因素制约和影响航空器的飞行,这些因素包括: ( 1 ) 航空器性能的限 制: 不同 型号的飞机有不同的商务载重、 起降条件、 巡航时速等。5 0 年代以前的客机不能飞往西藏高原,而当代则有多型飞机 能在高原机场起降。 ( z ) 气象条件的限制: 不同型的航空器有不同的飞行气象标准, 绝对的 “ 全 天候飞机”是不存在的。 ( 3 )不同性质的飞行任务的限制,运输机要求在相对固定的高度层飞行, 且不同型的飞机有不同的最佳飞行高度层。农业飞机喷洒农药时要求在低 空飞行,一般情况下飞得越低喷洒效果越好。 ( 4 ) 时间的限制;为了防止飞机在天空出 现危险接近或相撞, 既要在空间 垂直方向和水平方向保持高度差和距离,同时在时间上要合理调配次序, 拉开时间间隔。 ( 5 ) 地理环境的限制: 如山峰、 高压电塔、电视塔等突出物都对飞行有影 响,飞行规则对此有种种限制。还有,重要城市市区、军事要地空域不准 飞入,列为 “ 空中禁区”。 ( 6 ) 地面保障设施的限制: 为安全可靠地完成飞行任务, 地面保障设施有: 通信和导航、雷达、气象、航行指挥、搜索和救援等,一旦这些设备不完 备或出现故障.对飞行活动的限制就趋多。 ( 7 ) 地空活动的限制: 如对空射击靶场有活动的地区空域, 禁止飞机飞入。 总之, 航空器是在有限的空间、 有限的时间和有限的条件下起飞、降落和 飞 行的、由 于 航 空 器的 飞 行受 诸多 因 素的 限 制 和 影响, 人们 通过实 践以 及 .i 四川大学硕士学位论文 飞行事故的痛苦教训,逐步形成了一套管理空中飞行的规章制度和组织, 即空中交通管制。 管制方法主要有两种:程序管制、雷达管制 。 ( 1 ) 程序管制 程序管制方式对设备的要求较低,不需要相应监视设备的 支持,其主要的设备环境是地空通话设备。管制员在工作时,通过飞行员 的位置报告分析、了 解飞机间的位置关系, 推断空中交通状况及变化趋势, 同时向飞机发布放行许可, 指挥飞机飞行。 航空器起飞前, 机长必须将飞 行计划呈交给报告室, 经批准后方可实施。 飞行计划内容包括飞行航路( 航 线) 、 使用的导航台、预计飞越各点的时间、携带油量和备降机场等。空中 交通管制员根据批准的飞行计划的内容填写在飞行进程单内。当空中交通 管制员收到航空器机长报告的位置和有关资料后,立即同飞行进程单的内 容校正,当发现航空器之间小于规定垂直和纵向、侧向间隔时,立即采取 措施进行调配间隔。这种方法速度慢精确度差,为保证安全因而对空中飞 行限制很多, 如同机型同航路同高度需间隔1 0 分钟,因而在划定的空间内 所能容纳的航空器较少。这种方法是我国民航管制工作在以往很长一段时 间使用的主要方法。 该方法也在雷达管制区雷达失效时使用。 在随着民用 航空事业的迅速发展,飞行量的不断增长,中国民航加强了雷达、通信、 导航设施的建设,并协同有关部门逐步改革管制体制,在主要航路、区域 已实行先进的雷达管制。 ( 2 ) 雷达管制 ( r a d a r c o n t r o l ) 雷达管制员根据雷达显示,可以了 解本管制空域雷达波覆盖范围内所有航空器的精确位置,因此能够大大减 小航空器之间的间隔,使管制工作变得主动,管制人员由被动指挥转变为 主 动 指 挥, 提 高了 空 中 交 通 管 制的 安 全 性、 有 序 性、 高 效 性。 目 前 在民 航 管制中使用的雷达种类为一次监视雷达和二次监视雷达。一次监视雷达发 射的一小部分无线电脉冲被目 标反射回来并由该雷达收回加以处理和显 示,在显示器上只显示一个亮点而无其他数据。二次监视雷达是一种把己 测到的目 标与一种以应答机形式相配合设备协调起来的雷达系统,能在显 示器上显示出标牌、符号、 编号、航班号、高度和运行轨迹等及特殊编号。 1 . 2空中交通管制系统的现状 四川大学硕士学位论文 国外在经过几十年的空中交通管理软件的开发上,已经积累了许多的先进 经验。他们运用成熟的软件工程开发模型,己经开发形成了较为完善的空中交 通管制系统。如法国汤普森公司的欧洲猫空中交通管制系统就是一个在国际上 都较为先进的空管系统,在我国的一些大的机场就安装了该系统。而我国的国 产交通管制软件系统的发展就相对滞后。这是由于国产空中交通管制软件的开 发时间较晚,而且国有软件开发能力较弱,对于空管系统这样一个规模较大, 性能要求又比较高,开发周期较长,工程风险很大的情况,制约了很多想要投 资该领域的国内软件开发商。我国许多地方的空中交通管制系统都依赖于国外 的空中交通管制软件产品,但国外交通管理软件的销售金额高,规模较小的空 管领域就仍然沿用人工干预状态。目 前国内做空中交通管理控制系统的软件公 司相当少,而四川大学的川大智胜软件公司,由于较早就涉足空管领域的系统 软件开发,积累了丰富的经验;另外本身又由于拥有川大图形图像研究所的技 术支持,有着丰富的技术资源和人力资源,为大规模的软件工程开发打下了良 好的基础。并在国产空中交通控制管理软件系统开发上在国内处于明显的领先 水平。其生产的空管软件虽然在整体上与国外先进的空管系统软件还有一定的 差距,但在某些关键技术上已有较大的突破,追上或超过了国外的技术。但另 外比起国外的同类产品来说,川大智胜软件公司的空管软件产品的售价远低于 国外的空管产品,因而极具竞争力。川大智胜软件公司的空管软件产品已经配 备于国内许多民航机场,并开始涉足军方航空管制领域,受到了广泛的好评。 1 . 3设计模式简介 模式 ( p a t t e r n )的概念最早由 建筑大师c h r i s t o p h e r a l e x a n d e r 于二十世 纪七十年代提出, 应用于建筑领域, 八十年代中期由w a r d c u n n i n g h a m 和k e n t b e c k 将其思想引入到软件领域,1 9 9 4 年开始由h i l l s i d e g r o u p ( 由k e n t b e c k 等发起成立) 和 (o o p s l a联合发起了国际 p l o p ( p a t t e r n l a n g u a g e o f p r o g r a m m i n g ) 会议, 如今模式 ( p a t t e r n )已 成为软件工程领域内的一个热门 话题,其在计算机领域的影响超过了在建筑界的影响。 c h r i s t o p h e r a l e x a n d e r 将模式分为三个部分:首先是环境 ( c o n t e x t ,也 四川大学硕士学位论文 可以 称着上下文) , 指模式在何种状况下发生作用; 其二是动机( m o t i v a t i o n ) , 意指问题或预期的目 标; 其三是解决方案 ( s o l u t i o n ) , 指平衡各动机或解决所 阐述问题的一个构造或配置 ( c o n f i g u r a t i o n ) 。他提出,模式是表示环境、动 机、解决方案三个方面关系的一个规则,每个模式描述了一个在某种环境下不 断重复发生的问题,以及该问题解决方案的核心所在,模式即是一个事物 ( t h i n g ) 又是一个过程( p r o c e s s ) ,不仅描述该事物本身, 而且提出了 通过怎 样的过程来产生该事物。这一定义己被软件界广为接受。 软件模式的应用对软件开发产生了重大的作用,主要表现在: ( 1 ) 软件模式是人们在长期的设计软件、管理组织软件开发等实践中大 量经验的提炼和抽象,是复用软件设计方法、过程管理经验的有力工具。模式 类似于拳击中的组合拳,它提供了一系列软件开发中的思维套路。如,通过模 式的使用,有利于在复杂的系统中产生简洁、精巧的设计。 ( 2 ) 软件模式为我们提供了一套简洁通用的设计、管理、组织方面的词 汇,同时模式也为我们提供了一个描述抽象事物的规范标准,可大大促进软件 开 发 过 程 中 人 与 人 之 间 的 交 流 , 而 软 件 开 发 中 的 交 流 是 至 关 重 要 的 ,“ 软 件 项 目失败的原因最终都可追溯到信息没有及时准确地传递到应该接收它的人”。 1 . 4作者参与的工作 作者在实习期间参加了民航备份系统的研发设计工作,开发时间历时一年 半,编写代码量四万多行,作者采用面向对象的程序设计思想,引入设计模式 进行软件的架构设计,从而使系统获得良 好的可维护性、可复用性。目 前该系 统已在贵阳、双流、西安、昆明、海口、重庆、桂林机场投入使用,获得用户 的一致好评,还有一部分机场正准备采用我们开发的这套空中交通管制系统, 取得了重大的社会效益和经济效益。按照功能划分,空中交通管制系统可以划 分为雷达数据处理 ( r d p ) 、飞行数据处理 ( f d p )以 及人机界面显示 ( s d d )三 部分,作者一直专著与飞行数据处理模块的研究开发工作。期间主要完成的工 作如下: ( 1 ) 数据库的建模以及数据收集工作 及基础数据 ( 包括飞机性能参数 主要包括数据库表结构的确定以 航路点、 航线、管制扇区划分等) 四川大学硕士学位论文 的填充。 网络数据包的设计以及访问接口的定制 网络通信模块的设计 解决飞行计划的生成获取问题 确定航路解析策略 研究了飞行计划与航迹的匹配法则 研究飞行计划状态变迁及其程序实现策略 、了、了、声、尹、,j、lj 9oj4叮刁八h7. 2了、2.、ztz几、了.、 四川大学硕士学位论文 第二章u ml和设计模式 本文后面部分大量用到u m l( 统一建模语言, u n i fi e d m o d e l i n g l a n g u a g e ) 图标示意,其中大多数集中为类图、状态图和时序图,为阅读、 在此对u m l作一简要介绍。 本章还对设计模式进行了 整体论述 理解的方便, 2 .1标准建模语言u m l 的出现 公认的 面向 对象建 模语言出 现于7 0 年代中 期。 从1 9 8 9 年到1 9 9 4 年, 其数 量从不到十种增加到了 五十多 种。 在众多的建模语言 中,语言的 创造者努力推 崇自 己的 产品, 并在实践中不断完善。 但是, 0 0 ( o b j e c t o r i e n t e d ) 方法的用 户并不了 解不同建模语言的优缺点及相互之间的差异,因而很难根据应用特点 选择合适的建模语言, 于是爆发了一场 “ 方法大战”。 9 0 年代中,一批新方法 出 现了, 其中 最引 人注目 的是b o o c h 1 9 9 3 , 0 0. 5 e 和o m t - 2 等。 b o o c h是面向对象方法最早的倡导者之一,他提出了面向对象软件工程的 概念。 1 9 9 1 年, 他将以前面向a d a 的工作扩展到整个面向对象设计领域。 b o o c h 1 9 9 3 比 较适合于系统的设计和构造。 r u m b a u g h等人提出了面向对象的建模技术 ( o m t )方法,采用了面向对象 的概念, 并引入各种独立于语言的表示符。 这种方法用对象模型、动态模型、 功能模型和用例模型,共同完成对整个系统的建模,所定义的概念和符号可用 于软件开发的分析、设计和实现的全过程,软件开发人员不必在开发过程的不 同阶段进行概念和符号的转换。o m t - 2特别适用于分析和描述以数据为中心的 信息系统。 j a c o b s o n 于1 9 9 4 年提出了(o o s e 方法, 其最大特点是面向用例( u s e - c a s e ) , 并在用例的描述中引入了外部角色的概念。用例的概念是精确描述需求的重要 武器, 但用例贯穿于整 个开发过程, 包括对系统的测试和验证。 d o s e 比 较适合 支持商业工程和需求分析。 此外,还有c o a d / y o u r d o n 方法,即著名的o o a / o o q ,它是最早的面向对象 的分析和设计方法之一。该方法简单、易学,适合于面向对象技术的初学者使 四川大学硕士学位论文 用,但由于该方法在处理能力方面的局限,目前已很少使用。 概括起来,首先,面对众多的建模语言,用户由于没有能力区别不同语言 之间的差别,因此很难找到一种比较适合其应用特点的语言;其次,众多的建 模语言实际上各有千秋;第三,虽然不同的建模语言大多类同,但仍存在某些 细微的差别,极大地妨碍了用户之间的交流。因此在客观上,极有必要在精心 比较不同的建模语言优缺点及总结面向对象技术应用实践的基础上,组织联合 设计小组,根据应用需求,取其精华,去其糟粕,求同存异,统一建模语言。 1 9 9 4 年1 0 月, g r a d y b o o c h 和j i m r u m b a u g h 开始致力于这一工作。 他们 首先将b o o c h 9 3 和o m t - 2统一起来,并于 1 9 9 5 年 1 0 月发布了第一个公开版 本,称之为统一方法 u m 0 . 8 ( u n i t i e d m e t h o d ) . 1 9 9 5年秋,o o s e的创始人 i v a r j a c o b s o n 加盟到这一i作。经过b o o c h , r u m b a u g h 和j a c o b s o n 三人的共 同努力,于1 9 9 6 年6 月和1 0 月分别发布了两个新的版本,即u m l 0 . 9 和u m l 0 . 9 1 ,并将u m 重新命名为u m l ( u n i f i e d m o d e l i n g l a n g u a g e ) . 1 9 9 6 年,一些机构将u m l 作为其商业策略己日 趋明显。u m l的开发者得到 了来自 公众的正面反应, 并倡议成立了u m l 成员协会, 以完善、 加强和促进u m l 的定义i作。当时的成员有 d e c , h p , i - l o g i x , i t e l l i c o r p , i b m , i c o n c o m p u t i n g , m c i s y s t e m h o u s e , m i c r o s o f t , o r a c l e , r a t i o n a l s o f t w a r e , t i 以及u n i s y s 。这一机构对u m l 1 . 0 ( 1 9 9 7 年 1 月)及u m l 1 . 1 ( 1 9 9 7 年 1 1 月 1 7日)的定义和发布起了重要的促进作用。 u m l是一种定义良 好、易于表达、功能强大且普遍适用的建模语言。它溶 入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对 象的分析与设计,还支持从需求分析开始的软件开发的全过程。 2 . 2 u ml的内 容及功能 u ml包括以下的图: ( i ) 使用案例图 ( u s e c a s e d i a g r a m s ) ( 2 ) 类图 ( c l as s d i a g r a m s ) ( 3 )序 列图( s e q u e n c e d ia g r a m s ) ( 4 ) 合作图 ( c o l la b o r a t i o n d i a g r a m s ) 四川大学硕士学位论文 ( 5 )状态图( s t a t e c h a r t d i a g r a m s ) ( f ) 活动图 ( a c t i v i t y d i a g r a m s ) ( 7 ) 构件图 ( c o m p o n e n t d i a g r a m s ) ( 8 ) 部署图 ( d e p l o y m e n t d i a g r a m s ) 在所有的这些图里面,案例图、类图和序列图最为有用。 根据这些图的用意,可以将它们大体上划分为结构型图和行为型图两种。 结构型图描述了系统的静态结构,是显示一个系统己 有的类及它们之间的静态 关系的最佳手段。行为型图描述一个系统的动态性质,是显示系统的元素如何 协作产生满足要求的系统行为的最佳手段。 结构型图 如下表所示, 其中给出了 所有的u m l 结构图。 在所有的结构图中, 类图是 最为常用的。 型图名称说 明 类图 ( c l a s s d i a g r a m ) 类图描述一些类、包的静态结构和它们的关系 对象图 ( o b j e c t d i a g r a m ) 对象图给出一个系统中对象的快照 构件图 ( c o m p o n e n t d i a g r a m ) 描述可以部署的软件构件之间的静态关系 部署图( d e p l o y m e n t d i a g r a m )描述一个系统的拓扑结构 显然,要描述一个设计模式的静态结构,使用类图和对象图是很合适的。 行为型图 如下表所示,其中给出了所有的 里面,案例图和时序图是最为常用的 u m l 行为型图。当然,在所有的行为型图 四川大学硕士学位论文 型图名称说 明 使用案例图 ( u s e c a s e d i a g r a m ) 使用案例图描述一系列的角色和使用案例以及 它们之间的关系, 可以用来对一个系统最基本的 行为进行建模 活动图 ( a c t i v i t y d i a g r a m ) 描述不同过程之间的动态接触 状态图 ( s t a t e d i a g r a m ) 描述一系列对象的内部状态的变化和转移 时 序图 ( s e q u e n c e d i a g r a m ) 时序图是相互作用图, 描述对象之间信息传递的 时序 合作图 ( c o l l a b o r a t i o n d i a g r a m ) 合作图是相互作用图, 描述发出信息、 接收信息 的一系列对象的组织结构 显然,要描述一个设计模式的行为特性,使用状态图和时序图就很合适。 一个使用 u m l的系统设计,往往是从使用案例图开始的,而且一个时间应 当是以使用案例驱动的。只要有意义,所有类型的u m l图都是可以混合在一起 使用的。比如,一个对象图可以与一个类图同时出现在一个结构图中,一个构 件图中可以有类图出现等,不过有些u m l 建模工具不一定允许这样做。 在本文中,最常使用的是类图、状态图和序列图。 对一个软件系统而言, u m l 语言具有以下的重要功能: 可视化( v i s u a l i z i n g ) 功能、说明 ( s p e c i f y i n g )功能、建造 ( c o n s t r u c t i n g )功能和建文档 ( d o c u m e n t i n g )功能: ( 1 ) 可视化功能 可视化可以 促进对问题的理解和解决,并且方便熟悉 u m l的设计师彼 此交流和沟通。可以比较容易地发现设计草图中可能的逻辑错误,保 证最后完成的软件确实能按照要求运行,避免和减少意外发生。 ( 2 ) 说明功能 对一个系统的说明应该通过一种通用的、精确的、没有歧异的通信机 制进行,显然 u m l的特性使得 u m l 很适合于这种说明工作。系统的整 体设计可以指导软件的开发过程。由于重要的决定均可以在写代码之 前就做出,因此可以减少低质量的代码,进一步降低开发成本。 ( 3 ) 建造功能 u m l 有它自己的语法规则, 这使得人们可以使用建模工具软件对一个系 四川大学硕士学位论文 统设计模型加以 解释,并将设计模型映射到一种计算机语言上。 这也 就是说, 使用建模工具可以大大加快建模和系统设计的过程。 通过u m l 可以看到总体的图象,这样一来,可以均衡调配系统所消耗的计算机 资源,使得系统更有效率。因为系统的设计首先完成,所以很容易就 能发现可以复用的代码。高效率的代码复用可以降低开发成本。 ( 4 ) 建文档功能 使用 u m l进行设计可以同时产生系统设计文档。由于使用 u m l设计的 软件在写出代码之前就有了专业化的设计和文档资料,所以程序员事 先精确知道他们的计划是什么。当需要修改一个己有的系统时,如果 能够找到那个系统的 u m l文档资料,则会节省学习时间,使修改工作 事半功倍。这样就可以降低维修成本。如果在项目进行当中,有新的 程序员参加项目的话, 这些程序员可以借助 u m l图形文档资料很快熟 悉开发中的系统。 2 . 3类图 数千年以前,人类就己经开始采用分类的方法有效地简化复杂问题,帮助 人们了解客观世界。在面向 对象建模技术中,我们使用同样的方法将客观世界 的实体映射为对象,并归纳成一个个类。类 ( c l a s s ) 、对象 ( o b j e c t )和它们 之间的关联是面向对象技术中最基本的元素。对于一个想要描述的系统,其类 模型和对象模型揭示了系统的结构。在u m l 中,类和对象模型分别由类图和对 象图表示。类图技术是00方法的核心。 类图( c l a s s d i a g r a m ) 描述类和类之间的静态关系。与数据模型不同,它不 仅显示了 信息的结构,同时还描述了系统的行为。类图是定义其它图的基础。 在类图的基础上, 状态图、 合作图等进一步描述了系统其他方面的特性。 对象 ( o b j e c t ) 与我们对客观世界的理解相关。 我们通常用对象描述客观世界中某个 具体的实体。 所谓类( c l a s s ) 是对一类具有相同特征的对象的描述。 而对象是类 的实例 ( i n s t a n c e ) 。建立类模型时,我们应尽量与应用领域的概念保持一致, 以使模型更符合客观事实, 易修改、 易理解和易交流。类描述一类对象的属性 ( a t t r i b u t e )和行为 ( b e h a v i o r ) 。在u m l 中,类的可视化表示为一个划分成 四川大学硕 卜 学位论文 三个格子的长方形 ( 下面两个格子可省略) 。如图2 - 1 所示: i p e r s o n - n a m e: s tr i n g - d a t e of b irt h: d a t e # h e ig h t : in t + a l ia s : s t r i n g + g e t n a m e q: s t r in g + s e t n a m e ( in n a m e : s t r in g ) + g e t a g e u: i n t + g e t h e ig h t (: in t + g e ta lia s o: s t r in g + s e ta lia s ( in a lia s : s t r in g ) i 图2 - 1 典型类图示例 图2 - 1 所示即为一典型类图,在顶部的格子中包含类的名称。类的命名应 尽量用应用领域中的术语,应明确、无歧义,以利于开发人员与用户之间的相 互理解和交流。类的获取是一个依赖于人的创造力的过程,必须与领域专家合 作,对研究领域仔细地分析,抽象出领域中的概念,定义其含义及相互关系, 分析出系统类,并用领域中的术语为类命名一般而台,类的名字是名词。中 间的格子包含类的属性,用以描述该类对象的共同特点。该项可省略。根据图 的详细程度,每条属性可以包括属性的可见性、属性名称、类型、缺省值和约 束特性。 u m l 规定类的属性的语法为: 可见 性 属性名 : 类型 二缺省值 约 束特性 , 其中缺省值一项可以省略。 不同属性具有不同可见性。 常用的可见性 有p u b l i c , p r i v a t e 和p r o t e c t e d 种,在u m l 中分别表示为 “ +”、 “ 一” 和 “ #”。类型表示该属性的种类。 它可以是基本数据类型, 例如整数、 实数、 布尔型等, 也可以是用户自定义的类型。一 般它由所涉及的程序设计语言 确定。 约束特性则是用户对该属性性质一个约束的说明。例如 “ 只读 ”说明该属性 是只读属性。操作用于修改、检索类的属性或执行某些动作。操作通常也被称 为功能, 但是它们被约束在类的内部,只能作用到该类的对象上。操作名、返 回类型和参数表组成操作界面。 u m 规定操作的语法为: 可见性 操作名( 参 数表) :返回类型 约束特性 。 在图2 - 1 中, p e r s o n ” 类中有“ s e t a l i a s 操作, 其中“+ 表示该操作是公有操作, 调用时需要参数“ a l i a s , 参数类型为字符串, 不需要返回值。类图描述了类和类之间的静态关系。 定义了类之后, 就可以定 义类之间的各种关系了。 四川大学硕士学位论文 在类与类之间,会有连线指明它们之间的关系。类与类之间可以建立以下 几种关系:一般化关系、关联关系、聚合关系、合成关系和依赖关系,这儿种 关系都是静态的。 一般化关系 一般化 ( g e n e r a l i z e t i o n ) 关系表示类与类之间的继承关系。一般化关系是 从子类指向父类的,用u ml图表示如下: b a s e c l a s s ch i l d cl a s s 1 图 2 - 2 jc h i i d c la s s 2 一股化关系 关联关系 关联关系是类与类之间的联接, 它使得一个类知道另一个类的属性和方法。 关联可以是双向的, 也可以是单向的。 双向的关联可以有两个箭头或没有箭头, 表示关联的方向,用u ml图表示如下: 图2 - 3 关联关系 图2 - 3中包括三个关联,每个关联用两个类之间的一条线段表示。每个关 联有两个端点,每一个端点都可以有一个角色名,显示出关联的本质。在每一 个关联的 端点还可以, 还可以 有一个基数( m u l t i p l i c i t y ) , 表明这一 端的类可以 有几个实 例。例如在图2 一3 中p e r s o n 与c o u n t y 的关系中,一个p e r s o n 只能 住在一个c o u n t y 之中, 而一个c o u n t y 则“丁 以 居住零到多个p e r s i o n a 常见的基数有下表所示的这些。 四川大学硕士学位论文 基数含义 o . . 1 零个或者一个实例 0. * 或*实例数目没有限制 ( 可以为零个) 1 只有 一 个实例 1 . * 至少有 一 个实例 一个关联关系往往可以进一步确定为聚合关系或者合成关系。 聚合 ( a g g r e g a t i o n )关系是一种强的关联关系。 聚合关系是整体和个体之 间的关系。一个汽车类与引擎类、轮胎类以及其它零件类之间的关系便是整体 和个体的关系。一个汽车对象是由一个引擎对象、四个轮胎对象组成的,如下 图所示。 图2 - 4 聚合关系 与关联关系一样,聚合关系也是通过实例变量实现的。以上面的例子为例, c a r 类中 应当 有一个类型为e n g i n e 的 属性和一 个类型为t i r e 的数组属性。 但是, 关联关系所涉及的两个类是在同一层次 匕 的,而在聚合关系中,两个类是处在 不平等层次上的,一个代表整体,另一个代表部分。 合成关系 合成 ( c o m p o s t i o n ) 关系是一种比 聚合强的关联关系。它要求普通的 聚合 关系中代表整体的对象负责代表部分对象的生命周期, 合成关系是不能共享的。 代表整体的对象要负责代表部分对象的存活,在一些情况下负责将代表部 分的对象湮灭掉。 代表部分的东西在每一个时刻只能与一个对象发生合成关系, 由后者排它的负责其生命周期。合成关系用实心菱形箭头表示,如下图所示。 四川大学硕士学位论文 f u s e l a g 图2 - 5 合成关系 依赖关系 依赖 ( d e p e n d e n c y ) 也是类与 类之间的一种关系, 依赖总是单向的。 依赖 关系表示一个类依赖与另一个类的定义。 房子 ( h o u s e ) , p e r s o n 类依赖与c a r 类和 p e r s o n 一个人 ( p e r s o n ) 可以买车 ( c a r ) 和 h o u s e 类, 用u m l 图 表 示 如 下 。 十 b u y ( i n c a r : c a r ) 二 v o i c + b u y ( i n h o u s e 二 h o u s e )v o i d 依赖关系 b u y s 图 2 一 6 2 .4时序图 时序图又叫序列图、活动序列图。作为交互图的一 种序列交互按照时间顺 序从上到下显示每个使用案例。图 2 - 7中的例子显示了空中交通管制系统中飞 行计划与航迹手动相关过程时序图。 在一个时序图中,垂直的虚线叫做生命线,它代表一个对象的存在时间。 每一个箭头都是一个调用,这个箭头从调用者对象连接到接收者对象的生命线 上的激活条 ( a c t i v a t i o n b a r )上。每一个激活条代表调用所持续的时间。 在图2 - 7 的时序图中, 操作界面s d d向f d p发出手动相关请求, 经网络接 g 7 解析得到手动相关请求包。该包的处理m数着手调用相应航迹、计划的检查 函数, 检查是否满足手动相关条件,条件满足后, 相应计划做内部状态调整, 生成标牌信息,最后交由网络接u发给 s d d ,完成手动相关的整个流程。 四川大学硕士学位论文 航迹 内部状态调整 图 2 - 7 时序图 2 .5状态图 状态图 ( s t a t e d i a g r a m) 又称做状态转换图 ( s t a t e t r a n s i t i o n d i a g r a m) 。 状 态图的基本思想是定义一个具有有限个内部状态的机器,因此状态图又称做有 限状态机。对象被外界的时间激发,从而从一个状态转换到另一个状态。 以作者所参与开发的欧洲猫备份系统中屯 行计划的状态变迁为例,在系统 中由r p l或 p l n报产生的飞行计划的状态为f u t r u e ,此时的飞行计划还未 收到任何与其有关的信息,当系统收到 f p l报时,计划的状态就变为 i n a c t i v e ,或者管制员人工也可以使飞行计划的状态变为 i n a c t i v e( 未激 活) 。 然后根据系统计算,在航空器预计进入管制范围一定时间之前,或者管制 员人工将计划改为 p r e a c t i v e( 预激活)状态。此时系统给相应的席位发送 电子进程单并打印纸进程单。 当出港航空器滑行时,或者进港航空器在收到移交协调时,管制员可人工 将计划状态改为c o o r d i n a t e d( 协调) 状态。 在无人值守模式下, 对于出港 飞 行,雷达检测到起飞后,计划转为 c o o r d i n a t e d状态,对于进港飞行, 在航空器达到管制区边界一定时间 (弓 以下线设定)之前使计 一 划自动变为 四川大学硕士学位论文 c o o r d ina t e d状态。 随后,对于出港航空器,系统自 动移交到第一个责任管制席位,对于进港 航空器则在距离管制区边界一定时间之前进行移交。当管制员接收后,计划的 状态边为c o n t r o l l e d ( 管制) 。 在出港航空器快要飞出管制边界一定时间之后,或者进港航空器着陆后, 计划的状态变为f inins h e d( 结束) ,一定时间之后,系统自 动将计划的状态 变为c a n c e l l e d ( 取消) 。用u ml状态图描述如下。 图2 - 8状态图 其中,实心圆点表示初始状态,方框代表计划的状态,带边界框的实心圆 点代表终止状态。 2 . 6 u m l 及建模的工具 有很多工具可以帮助用户画出u m l图。其中有些是纯粹的绘图上具,另外 四川大学硕士学位论文 一些则是有代码生成功能的0 0 设计工具。一个好的0 0设计工具甚至可以 双向 工 作, 既 可以 从 代码生 成u m l 图, 也可以 从u m l 图 生 成代码: 根 据时 序图自 动给出交互图,或者根据交互图自 动给出序列交互视图。常用的工 具有: .r a t i o n a l r o s e w w w . r a t i o n a l . c o m . t o g e t h e r w w w . t o g e h e r .s o f t . c o m .m i c r o s o f t v i s i o w w w . m i c r o s o f t . c o m . v i s u a l u m l w w w . v i s u a l o b .j e c t m o d e l e r s . c o m . m o d e l b r i d g e w w w . m e t a i n t e g r a t i o n . n e t .m i c r o g o l d w i t h c l a s s w w w . m i c r o g o l d . c o m .q u i c k u ml w w w . e x c e l s o f t w a r e . c o m 本文所采用的u m l 图标多是采用微软的v i s i o 所绘制的。 2 .了什么是设计模式 建筑大师c h r i s t o p h e r a l e x a n d e r 说过, “ 每一个模式描述了一 个在我们j a 1 围不断重复发生的问题,以及该问题解决方案的核心。这样,你就能一次又一 次地使用该方案而不必做重复的劳动, 。 尽管a l e x a n d e r 所指的是城市和建筑模 式,但其思想也同样适用于面向对象

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论