已阅读5页,还剩66页未读, 继续免费阅读
(计算机应用技术专业论文)软件设计模式的研究及应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 软件复用是从事软件产业人员的不懈追求,它能够提高软件生产率以及软件 质量。我们采用设计模式来记录软件设计知识。这可以使软件复用从代码复用提 高到软件开发各阶段知识的复用。 面向对象技术是目前最主要的软件开发方法,面向对象的本质特点是抽象。 设计模式将面向对象思想应用在各种典型问题的解决方案上,是我们学习面向对 象设计的最佳案例。学习和运用设计模式是我们提高面向对象程序设计的捷径, 通过在实际项目设计过程中运用设计模式以及一些已经成熟的技术,能够较好的 实现系统的稳定性、灵活性和可扩展性。 本文首先介绍了面向对象思想的研究,着重讨论了一些面向对象的基本概 念,通过一个形象的例子来说明面向对象的软件开发方法及统一建模语言u m l 的 内容及建模过程。 接着作者讨论了软件设计模式的思想及应用方法。将软件设计模式与软件体 系结构、软件框架以及组件分别加以比较,给出了设计模式的法则及运用设计模 式解决设计问题的途径等。 最后,作者介绍了设计模式在职称管理系统中的应用,详细介绍了命令 模式、中介者模式、单例模式及桥接模式在系统中的使用。 关键词:设计模式面向对象软件复用管理系统 a b s t r a c t s o f t w a r er e u s a b i l i t yi sa l w a y st h eg o a lf o rt h es o f t - w a r ep e o p l e i tc a l li m p r o v e t h ep r o d u c t i v i t ya n dq u a l i t yo fs o f t w a r e i no r d e rt ot e u s es o r w a r e ,w eu s ed e s i g n p a t t e r nt o r e c o r ds o f i 、) v a r e d e s i g nk n o w l e d g e b e c a u s ei tc 粕i m p r o v es o f t :w a r e r e u s a b i l i t yf r o mc o d er e u s i n gt oe v e r yp h a s e so f d e v e l o p i n g t h e0 b j e c to r i e n t e dt e c h n o l o g y , w i t ha ne s s e n t i a lf e a t u r eo fa b s t r a c t i o n , i st h e p r e v a i l i n gs o f t w a r ed e v e l o p m e n tm e t h o dn o w a d a y s d e s i g np a t t e r n sc a nb et h eb e s t c a s ef o ru st os t u d y , b e c a u s ei ti sas o l u t i o nt h a ta p p l i e so b j e c to r i e n t e dt ov a r i o u s l y t y p i c a la n dp r a c t i c a lp r o b l e m s b yl e a r n i n ga n da p p l y i n gd e s i g np a t t e r n sw ec a n o b t a i nas h o r t c u tt oi m p r o v eo b j e c to r i e n t e dd e s i g nl e v e l s t i l lw ew i l la c h i e v em o r e r e u s a b i l i t y , f l e x i b i l i t ya n de x t e n s i b i l i t yi nt h es y s t e mb ya p p l y i n gt h e s ep a t t e r n sa n d o t h e rm a t u r et e c h n o l o g i e si nt h ep r o c e s so f p r o j e c t sd e s i g n i n g t h i sa r t i c l ef i r s ti n t r o d u c e di n v e s t i g a t i o no ft h eo b j e c t - o r i e n t e dt h o u g h t ,a n d d i s c u s s e ds o m eo b j e c t - o r i e n t e db a s i cc o n c e p t se m p h a t i c a i l y w 油s o m ee x p l a i n s t h e m e t h o do fo b j e c t - o r i e n t e ds o f t w a r ee x p l o i t a t i o n , t h ec o n t e n to fu n i f i c a t i o nm o d e l i n g l a n g u a g ec u m l ) a n d t h em o d e l i n gp r o c e s sa r ei l l u s t r a t e d t h e nt h ea u t h o rd i s c u s s e dt h es o f t w a r ed e s i g n p a t t e r nt h o u g h t a n dt h e a p p l i c a t i o nm e t h o d c o m p a r i n gt h es o l , w a r ed e s i g np a t t e r nw i t ht h es o f t w a r es y s t e m s t r u c t u r e ,t h es o f t w a r ef r a m ea sw e l la st h em o d u l ep e r f o r m e d ,t h ea u t h o rh a s p r o d u c e dt h ed e s i g np a t t e r np r i n c i p l e ,t h ew a yo fu t i l i z a t i o nd e s i g np a t t e ms o l u t i o n d e s i g nq u e s t i o na n d s oo n f i n a l l y ,t h ea u t h o rf u l l y i n t r o d u c e dt h ed e s i g np a t t e r nt h a ti su s e di nt h e p r o f e s s i o n a lt i t l eg r a d i n gm a n a g e m e n ts y s t e ma n dt h ea p p l i c a t i o no ft h ec o m m a n d p a t t e r n , t h em e d i u mp a t t e r n , t h es i n g l e t o np a t t e ma n dt h eb r i d g ep a t t e mi ns y s t e m k e y w o r d s :d e s i g np a t t e r n , o b j e c to r i e n t e d , s o f t w a r er e u s a b i l i t y , m a n a g e m e n ts y s t e m 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得叁叠盘茎或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 学位论文作者签名: f 镊托 签字日期:弘叮年,月。j ,日 学位论文版权使用授权书 本学位论文作者完全了解苤注盘茎有关保留、使用学位论文的规定。 特授权苤盗盘茎可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校 向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名:磊锻札 导师虢葵浮皮1 、 签字日期:”年l 月l y 日 签字日期:多州碑,月日 天津大学硕士学位论文 第一章绪论 1 1 问题的提出 第一章绪论 职称评审工作是人事管理工作的重要组成部分,是关系到广大专业技术人员 切身利益的一件大事。现阶段,职称评审基本上还是手工操作,能用计算机进行 的都是制作一些简单文档,把计算机当打字机使用。现行的这种处理信息模式, 有很多缺陷,如整理材料、填写表格等,重复劳动多,工作效率低;没有充分利 用现有的办公网络和计算机设备,造成一定意义上的资源浪费;评委审核材料后 在会上介绍情况,容易发生介绍不全面等情况。针对以上缺点,职称评审系统以 职称评审工作为对象,处理职称评审中的各种业务,以提高评审工作效率和管理 水平目标。 在系统的设计中,采用面向对象的设计方法,在系统设计的初期就要加强对 系统整体结构的把握,从基础上,根本上去努力搭建起一个模块化的,重用性和 移植性强的系统结构。 设计模式是一种在一定环境下反复出现问题的解决方案。一个设计模式是环 境、问题、解决方案的统一体,是针对反复出现的问题的,它来源于成功的经验。 模式是高度抽象的,它捕捉的是成功解决方案中的结构精华,而不是具体的技术 细节。设计模式通过明确对象、对象间的协作和职责分配,捕捉到了隐藏在设计 背后的意图。 设计模式使设计人员可以更加简单方便地改进和复用已往成功的设计和体 系结构,将己被实践证明的技术表示成设计模式,也会使新的系统开发者更加容 易理解其设计思路。 在系统的设计中使用设计模式,可提高软件在可适应性、可靠性、可伸缩性 等方面的设计质量,并且便于软件开发团体内部以及开发团体之间的沟通。 1 2 面向对象思想 面向对象程序设计方法的出现和广泛应用是计算机软件技术发展中的一个 重大变革和飞越。相对于之前的程序设计方法,面向对象技术能够更好地适应当 今软件开发在规模、复杂性、可靠性和质量、效率上的种种需求,因而被越来越 天津大学硕士学位论文 第一章绪论 多地推广和使用,其方法本身也在这诸多实践的检验和磨练中日趋成熟、标准化 和体系化,逐渐成为目前公认的主流程序设计方法。 面向对象的方法将数据及对数据的操作方法放在一起,作为一个相互依存、 不可分离的整体一对象。对同类型对象抽象出其共性,形成类。类中的大多数 数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系, 对象与对象之间通过消息进行通信。这样,程序模式间的关系更为简单,程序模 式的独立性、数据的安全性就有了良好的保障。 面向对象的分析和设计实质上是一种系统建模技术。面向对象思想的中心 是:软件模块的分解并不是从功能上,或是从处理问题的算法上出发,而是从系 统的组成上考虑。其主张对问题进行自然分割,利用类及对象作为基本构造单元, 以更接近于人类思维的方式建立问题域模型,从而使设计出的软件尽可能直接地 描述现实世界,构造出模块化的、可重用的、可维护性好的软件,并能控制软件 的复杂性和降低开发维护费用。 但是计算机编程是并且将一直是人类承担的最困难的任务之一。即使是出现 了很多工具,成熟的程序员也必须具有智力、逻辑能力、发现和使用抽象的能力、 经验和创造力。面向对象编程并不是软件开发组织的管理者所寻找的“银弹”。 另外把使用结构化的分析设计和建模方法产生的结果过渡到面向对象系统是不 自然的,也是困难的。面向对象思想只是一种高级编程规范,我们只有利用它结 合相应的面向对象开发工具,并且在总结和继承前人开发经验的基础上使用有特 色的面向对象软件开发方法,才可能充分地利用其思想的优越性,来满足我们系 统的日益艰巨的功能性和非功能性需求。 1 3 设计模式思想来源 模式( p a t t e r n ) 的概念最早由建筑大师c h r i s t o p h e ra l e x a n d e r 于2 0 世纪7 0 年代提出,应用于建筑领域。 2 0 世纪8 0 年代中期由w a r dc u n n i n g h a m 和k e n tb e c k 将其思想引入到软件 领域,1 9 9 4 年开始由h i l l s i d eg r o u p ( 由k e n tb e c k 等发起成立) 和0 0 p s l a 联合 发起了国际程序设计模式语言大会( p a t t e r n sl a n g u a g e so fp r o g r a md e s i g n , 简称p l o p 或p i o p d ) ,如今模式已成为软件工程领域内的一个热门话题,其在计 算机领域的影响超过了在建筑界的影响。 面向对象语言的产生,使得软件构造脱离以前面向过程的软件开发模式,以 对象来描述问题空间的实体。面向对象语言的最大的一个好处就是提高了软件的 重用性。软件重用是提高软件生产率和软件质量的重要途径,由于具有封装和继 天津大学硕士学位论文第一章绪论 承特性,面向对象方法相比较而言更适合支持软件重用。“类”是比较理想的可 重用软部件,在面向对象方法中,存在三种基本的重用方式:实例重用、继承重 用和多态重用。 虽然面向对象方法提供了很好的机制对软件设计强调的原则提供了很好的支 持,但真正的软件开发过程中实践面向对象思想时,软件设计人员往往感到困惑 或对众多设计方案感到难以选择。比如在面向对象设计中,最困难的是寻找合适 的对象来构造软件系统,从而设计出相对应的理想的类,由于要考虑多种因素诸 如封装、粒度、灵活性,而这些因素往往是冲突的,因此如何进行权衡取舍找到 一个合理的折衷是相当困难的。在实现可重用时,设计人员局限于使用前面提到 的三种重用方式,其中继承重用是他们最津津乐道最常用的重用方式,而纯粹的 继承重用在大多数场合具有局限性,比如继承关系是在编译时就定义好了,所以 无法在运行时刻改变从父类继承来的实现。更为严重的是父类通常定义了子类的 具体实现,以致子类清楚父类的部分实现细节,破坏了封装性,由于父类和子类 存在如此紧密的依赖关系以致于父类实现的任何细微变化必然导致子类发生变 化等等。 以上诸多问题经常使经验不足的设计人员手足无措,迫于软件开发周期的压 力,最终迫使他们设计出重用性、灵活性受限的解决方案,有心者可能会请教经 验丰富的设计人员,请教他们面l 瞄类似问题时采用的解决方案,而且常常会惊讶 地发现:当他们清楚地阐述面临的问题时,经验丰富的前辈们通常会很快地指出 问题解决方案的核心,经过指点,通常会有“柳暗花明又一村”而豁然开朗的感 觉。更有心者会将这经验和技巧文档化,以备将来之需,以期达到遇到类似问题 时,使自己能从容对付而避免大量重复的设计工作的效果。如果将经过证明的屡 试不爽的经验和技巧文档化,那将是一笔可观的财富。这种文档化的经验技巧就 是设计模式( d e s i g np 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 对模式的定义,他曾在其著作中指出:“每一个模式描述了一个在我 们周围不断发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一 次地使用该方案而不必做重复劳动。”该定义的核心在于提供一个相关问题的解 决方案,使人们避免不必要的重复劳动。在软件设计中,也会有不断重复出现的 问题,因此该思想同样适用于软件行业。可以简单地认为,设计模式就是解决某 个特定的面向对象软件问题的特定方法。 天津大学硕士学位论文第一章绪论 i a 开发工具介绍 本系统开发使用数据库开发工具d e p h i 7 0 ,d e l p h i 是b o r l a n d 公司研制的新 一代可视化开发工具,它拥有可视化的集成开发环境,采用面向对象的开发语言 和基于部件的开发结构框架。 系统通过t a d o q u e r y 、t a d o t a b e l 等部件实现数据库的查询、修改、添加 和删除,t d b g r i d 部件显示查询结果:结合m i c r o s o f to f f i c e 中的e x c e l 实现大量 表格的生成。系统与数据库的连接采用a d o 。 系统建模时,使用功能强大的建模工具m o d e l m a k e r ,它是一个面向生产力、 重构和u m l 风格的工具。本课题的模式结构图就是用m o d e l m a k e r 设计,使用 它可以加速开发速度,产生和设计出优秀的代码。 1 5 论文作者所做的工作 在论文期间作者所做的主要工作 1 、设计和开发了基于设计模式的职称评审系统 2 、对面向对象技术和基于设计模式的软件开发方法进行了研究 3 、对统一建模语言u m l 和建模工具m o d e lm a k e r 进行了研究 天津大学硕士学位论文第二章面向对象思想的研究 第二章面向对象思想的研究 2 1 面向对象的基本概念 l 、对象 对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要 保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务 的封装体。 对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单 位。一个对象由一组属性和对这组属性进行操作的一组服务构成。每个对象都具 有自己的标识。可以说对象是具有共同特征的类的实例。 2 、类 类是具有相同属性和服务的一组对象的集合,这为属于该类的全部对象提供 了统一的抽象描述,其内部包括属性和服务两个主要部分。 类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两 个主要部分。 3 、封装 封装是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内 部实现对用户是隐蔽的。封装就是把对象的属性和服务结合成一个独立的系统, 并尽可能隐蔽对象的内部细节。封装的目的是使对象的使用者和生产者分离,使 对象的定义和实现分开。 封装是面向对象方法的一个重要原则。它有两个涵义: ( 1 ) 把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单 位( 即对象) 。 ( 2 ) 信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界,只保留 有限的对外接口使之与外部发生联系。这主要是指对象的外部不能直接地存取对 象的属性,只能通过几个允许外部使用的服务与对象发生联系。 封装使对象成为一些各司其职,互不干扰的独立单位。封装有益于类构件的复用。 在软构件的定义中,用户只关心事件的输入输出,对事件内部不必关心,方法和 事件是独立于应用的,用户可以在软构件中定义自己的事件,对于内部的复杂性 调用并不知晓,从而提高了隐蔽性。 4 、继承 继承是类问的基本关系,它是基于层次关系的不同类共享数据和操作的一种 机制。特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继 承。继承是面向对象方法中一个十分重要的概念,并且是面向对象技术可提高软 天津大学硕士学位论文 第二章面向对象思想的研究 件开发效率的重要原因之一。 继承的实现则是通过面向对象系统的继承机制来保证的。继承关系是传递 的。一个特殊类既有自己新定义的属性和服务,又有从它的一般类中继承下来的 属性与服务。继承来的属性和服务,尽管是隐式的( 不用书写出来) ,但是无论 在概念上还是在实际效果上,都确确实实地是这个类的属性和服务。当这个特殊 类又被它更下层的特殊类继承时,它继承来的和自己定义的属性和服务又都一起 被更下层的类继承下去。 5 、多态性 同一个词表示不同的操作称多态性。多态性是一种方法,这种方法使得在多 个类中可以定义同一个操作或属性名,并在每个类中有不同的实现。一般通过动 态绑定实现多态性。动态绑定是一种在运行时( 而不是在编译时) 确定被执行代 码的技术。 6 、接口 接口的概念是建立在封装的基础之上。如果我们把要实现的功能看作是一个 “黑盒”封装在一个软件实体中,那么我们访问这个“黑盒”的输入输出部分就 是接口。这里的接口是指一些方法特征的集合,它关心的是方法的特征定义( 例 如方法的名称、参数的类型及数量) ,而不是方法的具体实现。 接口声明和类相似,但不能直接实例化,也不能实现它们的方法,而是由支 持接口的类来提供实现。 2 2 面向对象的几点思考 面向对象思想是一个复杂的体系,为了反映和模拟现实世界问题域中的个体 和关系,增加了很多术语和方法。在前面的介绍中我们已经看到了许多概念,如 类、继承、封装、多态等,这些概念和技术的存在极大的方便了我们实现问题域 到解决域的映射,也增加了我们软件创作的灵活性。但是要从这些技术中选择出 最恰当的部分来完成我们的设计,就要更深入地分析这些技术中的关系和应用这 些技术的原则。而恰当使用面向对象中的各种设施,来解决重复出现的问题,也 是设计模式的主要任务。所以这一节我们有必要对面向对象思想中的某些关键概 念和技术加以深度分析。 1 、类和类型 类和类型这两个概念很容易被混淆。对象的类定义了对象是如何实现的,即 对象的内部数据与其操作的实现。对象的类型只涉及它的接口一对象能反应的请 求的集合。一个对象能有多个类型,不同类的对象可以有相同的类型。 在面向对象思想中,类型的概念尤为重要,因为对象是数据和状态的封装体, 天津大学硕士学位论文第二章面向对象思想的研究 要与对象交互、改变对象的状态,只有通过向对象发送消息。对象将消息的类型 与其支持的操作特征相比较,再选择执行正确的操作。操作的特征包括一个操作 的名称、参数和返回值。一个对象的全部操作的特征就是这个对象的接口。对象 的类型是标记一个特定接口的名称。当向一个对象发送一个请求时,执行的特定 操作既依赖于请求,也依赖于接收对象。支持相同请求的不同对象可能对完成这 些请求的操作有不同实现,即类型并不限制实现。具有相同类型的对象可以对相 同的消息产生不同的响应,所以在面向对象实现中可以通过改变响应消息的对象 来改变执行情况( 只要这些对象都具有相同类型) ,这就实现了多态性。而在运行 时将请求连接到一个对象和该对象的一个操作上,称为动态连接。 2 、继承和组合 面向对象系统中功能复用的两种最常用的技术是类继承( i n h e r e n t ) 和对象组 合( c o m p o s i t i o n ) 。在前面对继承的解释中我们可以看到,类继承允许你根据其他 类的实现来定义一个类的实现。这种通过生成子类的复用通常被称为白箱复用。 白箱这里指继承方式中,父类的内部细节对子类可见。 对象组合是类继承之外的另一种复用选择。新的更复杂的功能可以通过组装 或组合对象来获得。对象组合要求被组合的对象具有良好定义的接口。这种复用 风格被称为黑箱复用,因为对象的内部细节是不可见的。对象之间只有通过接口 进行合作和通信。 继承和组合各有优缺点。类继承可以较方便的改变被复用的实现。当一个子 类重定义一些而不是全部操作时,它也能影响它所继承的操作,只要在这些操作 中调用被重用的操作。但是类继承有一些不足之处。首先,继承在编译时刻确定, 所以无法在运行时可改变从父类继承的实现。另外,父类的实现细节暴露在子类 的面前,而被认为“破坏了封装性”。继承是一种最强的藕合关系,子类中的实 现与它的父类有如此紧密地依赖关系。以至于父类实现中的任何变化必然会导致 子类发生变化。 对象组合是通过获得对其他对象的引用而在运行时刻来动态定义操作的实 现。其作用和优点有:通过接口访问对象,并不破坏封装性;只要类型一致, 运行时刻还可以用一个对象来替换另一个对象;因为对象的实现是基于接口写 的,所以实现上存在较少的依赖关系。另外通过继承来改变实现,如果有很少的 修改也需派生出一个新子类,这样很可能发生子类膨胀的问题,而通过组合来实 现复用和变化不会造成这种情况,所以在面向对象设计中有一个原则:支持对象 组合甚于类继承。 3 、藕合和内聚 藕合和内聚是从结构化设计理论借鉴而来。藕合度( c o u p l e ) 是模块闻联系强弱 天津大学硕士学位论文第二章面向对象思想的研究 的度量,即模块间的相互依赖性。聚合度( c o h e s i o n ) 是模块所执行任务的整体统 一性的度量。与藕合度相对应,聚合度是指一个模块本身内部的问题。每个模块 的聚合度是模块独立的( 模块内部单元之间的紧密约束和相关的) 程度。因为结构 化设计思想的研究对象就是结构化模块,而面向对象思想的中心是对象。我们可 以把这里模块对应成面向对象中的对象,来讨论对象间的依赖关系。 理想的,如果一个对象在不需要另一个对象的情况下,能够完整地执行其 功能,我们就称这两个对象是完全独立的。但是这样的情况几乎是不存在的,通 常,对象之间总是相互关联的,很少是相互独立的,因为完全独立的对象是无所 谓构成系统的。但是存在藕合,必然一个对象要了解另一个对象,这个了解的程 度正是我们最关心的。因为过分的藕合,必然会造成系统修改时的大成本和复杂 性,而且势必会对对象的封装性有所破坏。所以降低对象间的藕合是一个基本的 目标。 内聚要求每一个对象完成一个单一明确的任务。一个重要的设计原则是让 系统设计与问题结构相适应。这也与面向对象思想的基本出发点相符,所以我们 应该将高度相关的处理问题单元转换成高度相关的代码,即对象的代码。并且尽 量减少对象之间为了完成同一个任务,而发生的联系,使它们之间发生影响的可 能性降低,这种观点也被称作正交性。在纯正交的设计中,操作没有副作用,每 一个行动只改变一件事情,不影响其它东西。 藕合和内聚是紧密相关的,基本上我们的要求是低藕合,高内聚。 4 、针对接口和实现编程 类继承是一个通过复用父类功能而扩展应用功能的基本机制。它允许你根据 旧对象快速的定义新对象。它允许你从已存在的类中继承所需要的绝大部分功 能,从而几乎无需任何代价就可以获得新的实现。 然而,实现复用只是成功的一半,继承所拥有的定义具有相同接口的对象族 的能力也是很重要的( 通常可以从抽象类来继承) 。这样的继承方法更有利于充分 利用多态性。 只根据抽象类中定义的接口来操纵对象有以下两个好处: 客户无须知道他们使用对象的特定类型,只需对象有客户所期望的接口。 客户无须知道他们使用的对象是用什么类来实现的,他们只需知道定义 接口的抽象类。 这将极大的减少子系统实现之间的相互依赖关系,也产生了可复用的面向对 象设计的如下原则: 针对接口编程,而不是针对实现编程。 天津大学硕士学位论文第二章面向对象思想的研究 2 3 面向对象的软件开发方法 面向对象方法是基于客观世界的对象模型的软件方法。它是以对象为中心的 开发方法,是从客观世界中抽象出来的软件开发的新的思维方法,与人类习惯的 思维方法一致,它可以促进软件开发人员在应用领域中最大限度地发挥其才干和 思维能力。 软件危机的出现,促进了软件工程学的形成与发展。但传统的软件工程学在 需求分析中对问题域的认识和描述不是以问题域中固有的事物作为基本单位,而 是打破了各项事物之间的界限。因此,分析结果不能直接映射问题域,容易隐蔽 一些对问题域理解上的偏差。面向对象的软件工程学是面向对象方法在软件工程 领域的全面运用,它把面向对象的分析( o o a ,o b j e c t e d o r i e n t e da n a l y s i s ) 、设计 ( o o d ,o b j e c t e d - o r i e n t e dd e s i g n ) 及编程( o o p ,o b j e c t e d - o r i e n t e dp r o g r a m m i n g ) 集成到软件生存期的相应阶段。 2 3 1 什么是面向对象的分析和设计 面向对象的分析与设计的精髓是按照对象( 事物、概念、或实体) 的观点考 虑问题域和逻辑解决方案。如图2 1 所示。 园圃团 l 对问题调查ll 逻辑解决方案il 编码 i l ll 图2 - 1 开发过程中各活动的含义 在面向对象的分析中,重点在于发现并描述问题域中的对象。例如,在图书 馆信息系统中,这些概念包括b o o k ( 书) 、l i b r a r y ( 图书馆) 、和p a t r o n ( 资助 人) 。 在面向对象的设计中,重点在于定义那些能最终用面向对象程序设计语言实 现的逻辑软件对象。这些对象具有属性和方法。仍然以图书馆系统为例,b o o k ( 书) 这个软件对象具有一个t i t l e ( 题目) 属性和一个p r i n t ( 打印) 方法。 最后,在系统的构造或面向对象程序设计中,实现了所设计的构件,例如用 c + + 、j a v a 、或者d e l p h i 编写的一个b o o k 类。 天津大学硕士学位论文 第二章面向对象思想的研究 2 3 2 面向对象的分析与设计的例子 要完全阐明面向对象的分析与设计,需要引入大量信息。在有可能陷入大量 细枝末节的信息海洋中之前,这里首先使用一个简单的例子对面向对象的分析与 设计中的一些步骤和使用的图形做一个鸟瞰。这个简单的例子是一个“掷骰子游 戏”,在这个游戏中游戏者要掷出两个骰子。如果总点数是7 ,他就赢了,否则 他就输了。步骤如下图: 图2 - 2 描述系统需求时的步骤 1 、定义用况 理解需求包括理解领域过程和外界环境一参与过程的外部参与者。这些领域 过程可以通过用况( u s ee a s e ) 来表示即用结构化的文体格式对领域过程进行描 述。 用况实际上不是面向对象分析的制品,它仅仅是对过程进行描述,不用面向 对象技术来开发项目时用况同样有效。尽管如此,定义用况仍然是描述系统需求 时非常有用的最初步骤。 举一个例子,在投郑骰子游戏中,如下是一个p l a y a g a m e ( 进行游戏) 用况: 用例:p l a y a g a m e ( 进行游戏) 参与者:p l a y e r ( 游戏者) 描述:这个用况仍然始于游戏者拾起骰子并投掷骰子。如果骰子总点数是 7 ,游戏者赢,否则输。 2 、定义概念模型 以对象的分类和理解问题域中的术语为考虑问题的角度来建立问题域和系 统需求的规格说明是面向对象分析所关心的事情。问题域的分解要涉及到对该问 题域中重要的概念、属性和关联等的识别。这个过程的结果可以用一个概念模型 ( c o n c e p t a u lm o d e l ) 来描述,概念模型是一组刻画概念( 对象) 的图形。 天津大学硕士学位论文第二章面向对象思想的研究 例如,如图2 3 所示,在掷骰子游戏这个问题域中,概念模型中的部分内容 展示了p l a y e r ( 游戏者) 、d i e ( 骰子) 和d i c e g a m e ( 掷骰子游戏) 等概念,以 及它们之间的关联和各自具有的属性。 图2 , 3 掷骰子游戏的概念模型 概念模型不是对软件构件的描述,它表达了真实世界中问题域内的概念。 3 、定义协作图 面向对象的设计所关心的事情是定义逻辑软件的规格说明,这个规格说明要 满足建立在类的分解基础上的功能需求。这个阶段的一个必要步骤是为对象分配 职责以及展示出对象之间如何通过消息进行交互,这些可以用协作图 ( c o l l a b o r a t i o n d i a g r a m ) 来表示。协作图显示了实例和方法调用之间的消息流。 例如:假如要设计一个掷骰子游戏的模拟软件。图2 - 4 显示了游戏过程中的 必要步骤:发送消息给出p l a y e r 类和d i e 类的实例。 图2 4 展示软件对象之间消息传递的协作图 天津大学硕士学位论文第二章面向对象思想的研究 4 、定义设计类图 要定义一个类,需要回答这样几个问题: 对象如何与其他对象连接? 这个类型方法是什么? 要回答这些问题,需要检查协作图,它提示出了对象间必要的连接和每个软 件类必须定义的方法。表达这些设计细节的图叫设计类 ( d e s i g n c l a s s d i a g r a m ) 。 这些设计细节说明了类的定义,并有待于用软件去实现它们。 以掷骰子游戏为例,参考协作图可以得到下面的设计类图。因为一个p l a y ( 做 游戏) 消息被发送到实例p l a y e r ,所以p l a y e r 需要一个p l a y 方法,而d i e 需要一 个r o l l ( 滚动) 方法。 和概念模型不同的是,这个设计类图没有显示出实际动作时的概念,它只描 述了软件构件。 为了显示出对象之间如何通过属性连接,一个带着属性名的箭头线可以用来 指向要连接的对象。例如,d i e c g a m e 有一个属性指向一个p l a y e r 的实例。 图2 5 所示的设计类图并不完整,相对于充分定义各个类所需的软件详细规格说 明来讲,它只代表了这个规格说明的起点。 图2 - 5 软件构件的设计类图 2 3 3 面向对象的与面向功能的分析与设计 天津大学硕士学位论文 第二章面向对象思想的研究 软件项目是复杂的,分解( 分而治之) 是处理复杂性的主要策略一将问题分 解成易于管理控制的单元。在面向对象的分析与设计方法出现以前,最流行的问 题分解方法是结构化分析与设计( s t r u c t u r e da n a l y s i sa n dd e s i g n ) ,它对问题的分 解尺度主要是依据功能或过程,处理问题的结果是将一个复杂过程分解成一系列 面向对象的分析设计 按对象或概念分解 固固 田固 结构化的分析设计 按功能或过程分解 图2 - 6 面向对象的与面向功能的问题分解 具有层次关系的子过程。 面向对象的分析与设计强调以对象为尺度而不是以功能为尺度来分解问题 空间。 2 4 统一建模语言u m l 随着面向对象技术的发展和人们对建模重要性的逐步认识,面向对象的建模 语言层出不穷。统一建模语言u m l 是在多种面向对象建模方法的基础上发展起 来的建模语言,主要用于软件密集型系统的建模。在多种面向对象建模方法流派 并存和相互竞争的局面中,u m l 树起了统一的旗帜,使不同厂商开发的系统模 型能够基于共同的概念,使用相同的表示法,呈现彼此一致的模型风格。而且它 从多种方法中吸收了大量有用的建模概念,使它的概念和表示方法在规模上超过 了以往任何一种方法,并且提供了允许用户对语言做进一步的扩展机制。 u m l 在语法和语义的定义方面也做了大量的工作。以往各种关于面向对象 天津大学硕士学位论文第二章面向对象思想的研究 方法的著作通常是以比较简单的方式定义其建模概念,而以主要篇幅给出过程指 导,论述如何运用这些概念来进行开发。u m l 则以一种建模语言的姿态出现, 使用语言学中的一些技术来定义。尽管真正从语言学的角度看它还有许多缺陷, 但它在这方面所做的努力却是以往的各种建模方法无法比拟的。 u m l 代表了面向对象技术的最新发展,并且已成为面向对象技术界公认的 建模语言标准。 2 4 1u m l 的主要内容 统一建模语言u m l 共定义了用况图、静态图、行为图、交互图和实现图5 类、共1 0 种模型图,它们分别构成了u m l 的静态建模机制和动态建模机制。 1 、用况图( u s e c a s ed i a g r a m ) 用况图着重于从系统外部执行者的角度来描述系统功能,并指出各功能的操 作者。用况图展现了一组用况、参与者以及它们之间的关系。在对系统行为组织 和建模方面,用况图是相当有重要的。 用况图的主要元素是用况( u s ec a s e ) 的执行者( a c t o r ) 。在u m l 中,用况 被定义成系统执行的一系列动作,动作执行的结果能被指定执行者观察到。 所谓用况是指对一个用户使用系统的一项功能时所进行的交互过程的一种 描述。一般来说,用况具有以下特点: ( 1 ) 用况捕获某些用户可见的需求,实现一个具体的用户目标。一个用况必 须至少与一个执行者关联。 ( 2 ) 用况由执行者激活,并提供确切的值给执行者。 ( 3 ) 用况可大可小,但它必须是对一个具体的用户目标实现的完整描述。 执行者是指用户在系统中所扮演的角色。执行者可以是人,也可以是与系统 进行交互的任何外部系统。执行者触发用况,并与用况进行信息交换。单个执行 者可与多个用况联系;反过来,一个用况可与多个执行者联系。对同一个用况而 言,不同执行者有着不同的作用,它们可以从用况中取值,也可以参与到用况中。 几乎在任何情况下都会使用用况。用况用来获取需求、规划和控制项目。用 况获取是需求分析阶段的主要任务之一,而且是首先做的工作。大部分用况将在 项目的需求分析阶段产生,并且随着工作的深入会发现更多的用况,这些都应及 时增添到已有的用况集中。用况模型驱动了需求分析之后各阶段的开发工作,不 仅在开发过程中保证了系统所有功能的实现,而且被用于验证和检测所开发的系 统,从而影响到开发工作的各个阶段和u m l 的各个模型。 2 、静态图( s t a t i cd i a g r a m ) 静态图描述系统的静态结构,它包括类图( c l a s sd i a g r a m ) ,对象图( o b j e c t 天津大学硕士学位论文第二章面向对象思想的研究 d i a g r a m ) 和包图( p a c k a g ed i a g r a m ) 。 类图描述系统中类的静态结构。它不仅定义系统中的类,表示类之间的联系 如并联、依赖、聚合等,也包括类的内部结构( 类的属性和操作) 。类图描述的 是一种静态关系,在系统的整个生命周期都是有效的。系统可有多个类图,单个 类图仅表达了系统的一个方面。要在高层给出类的主要职责,在低层给出类的属 性和操作。类图是定义其它图的基础。在类图的基础上,状态图、合作图等进一 步描述了系统其它方面的特性。 对象图是类图的实例,几乎使用与类图完全相同的标识,它展示了一组对象 及它们间的关系。与类图不同,对象图显示类的多个对象实例,而不是实际的类。 一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统 某一个时问段存在。 包是一种分组机制,其思想是将许多类集合成一个更高层次的单位,形成一 个高内聚、低耦合的类的集合。包由包或类组成。包图所显示的是类的包以及这 些包之间的关系。可以将包图看作另一种形式的类图。包图用于描述系统的分层 结构。包图在大的项目中是一种重要工具。包的概念对测试也十分有用,可以以 包为单位进行单元测试。 3 、行为图( b e h a v i o rd i a g r a m ) 行为图描述系统的动态模型和组成对象间的交互关系,包括状态图( s t a t e d i a g r a m ) 和活动图( a c t i v i t yd i a g r a m ) 。 状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件。大多 数面向对象技术都用状态图表示单个对象在其生命周期中的行为。一个状态图包 括一系列的状态以及状态之间的转移。 状态是对象执行了一系列活动的结果。当某个事件发生后,对象的状态将发 生变化。状态图中定义的状态有:初态、终态、中间状态、复合状态。其中,初 态是状态图的起始点,而终态则是状态图的终点。一个状态图只能有一个初态, 而终态则可以有多个。 通常,状态图是对类的补充。在实用上并不需要为所有的类画状态图,仅为 那些有多个状态,其行为受外界环境的影响并且发生改变的类画状态图。状态图 适合描述跨越多个用况的单个对象的行为,而不适合描述多个对象间的行为合 作。 活动图描述满足用况要求所要进行的活动以及活动间的约束关系,有利于识 别并行活动。活动图是由状态图变化而来的,它们各自用于不同的目的。活动图 依据对象状态的变化来捕获动作( 将要执行的工作或活动) 与动作的结果。活动 图中一个活动结束后将立即进入下一个活动( 在状态图中状态的变迁可能需要事 天津大学硕士学位论文 第二章面向对象思想的研究 件的触发) 。活动图的应用非常广泛,它既可用来描述操作( 类的方法) 的行为, 也可以描述用况和对象内部的工作过程。 状态图对于接口、类或协作的行为建模尤为重要,可用它描述用况实例的生 命周期。活动图强调对象间的控制流程,对于系统的功能建模特别重要。 4 、交互图( i n t e r a c t i o nd i a g r a m ) 交互图描述对象间的交互关系。顺序图( s e q u e n c ed i a g r a m ) 和合作图 ( c o l l a b o r a t i o nd i a g r a m ) 合称为交互图。 交互图描述对象间的动态合作关系,它强调对象之间消息发送的时间顺序, 同时显示对象之间的交互。顺序图存在两个轴:水平轴表示不同的对象,垂直轴 表示时间。顺序图中的对象用一个带有垂直虚线的矩框表示,并标有对象名和类 名。垂直虚线是对象的生命线,用于表示在某段时间内对象是存在的。对象间的 通信通过在对象的生命线间画消息来表示。 合作图用于描述相互合作的对象间的交互关系和链接关系。虽然顺序图和合 作图都用来描述对象间的交互关系,但侧重点不一样。顺序图着重体现交互的时 间顺序,合作图则着重体现交互对象问的静态链接关系。 合作图中对象的外观与顺序图中的一样。如果一个对象在消息的交互中被创 建,则可在对象名称之后标以 n e w 。类似地,如果一个对象在交互期间被删 除,则可在对象名称之后标以 d e s t r o y 。对象间的链接关系类似于类图中的联 系。通过在对象间的链接上标志带有消息串的消息( 简单、异步或同步消息) 来 表达对象间的消息传递。 实际使用时,如果强调时间和顺序,则使用顺序图;如果强调上下级关系, 则选择合作图。 5 、实现图( i m p l e m e n t a t i o nd i a g r a m ) 实现图包括构件图( c o m p o n e n td i a g r a m )
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 17127.1-2026农业轮式拖拉机和机具三点悬挂挂接器第1部分:U型框架式挂接器
- 信息通信业务员安全检查竞赛考核试卷含答案
- 2026年医院投诉管理与服务提升课件
- 电极丝制造工安全培训效果模拟考核试卷含答案
- 2026年医疗知情同意法律实务课件
- 商品理货员安全演练评优考核试卷含答案
- 景泰蓝制胎工岗前理论模拟考核试卷含答案
- 湿法纺纺丝操作工安全管理知识考核试卷含答案
- 溴化丁基橡胶装置操作工成果转化模拟考核试卷含答案
- 水产品冻结工基础管理测试考核试卷含答案
- 2026年春季学期高中高一年级英语备课组三月听力训练方案模板
- 食品安全主题班会课件
- 新人教版三年级数学上册教学工作计划
- 《增材制造技术》全套教学课件
- 2026成都盐道街中学高一入学英语分班考试真题含答案
- 港口设施保安培训
- 机械员培训教学课件
- 进出洁净区培训
- 2025至2030中国婴儿汽车安全座椅行业项目调研及市场前景预测评估报告
- 机关事务工作演讲稿
- 2025年设备监理师职业资格考试设备工程项目管理历年参考题库及答案
评论
0/150
提交评论