基于UML的图书管理系统之设计模式应用

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:jiguoqiang
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着现在的软件的复杂性日益提高,传统的开发过程和一般的面向对象思想对于软件的开发和维护方面逐渐暴露出它的不足,主要表现在过于僵硬——很难在软件系统里加入一个新性能。过于脆弱——在修改完成之前,无法确切预测到可能会波及到的地方。复用率低、黏度过高——复用系统的某个部分时,总是发现这些已有的代码依赖于很多其他东西。于是面对这些问题就需要可扩展性、灵活性、可插入性的思想,于是设计模式就应运而生。
  关键词:统一建模语言;面向对象;设计模式;桥模式;策略模式
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)16-30889-01
  Application Design Pattern in Library Manage System on UML
  LI Cui-ling,SUN Wu-hua
  (Faculty of Information Science and Technology,Jiujiang University,Jiujiang 332005,China)
  Abstract:Because of the complication of the development about software,the tradition process and normal object-oriented can't satisfy Today's software development and maintain,follow as: Rigidity—It is difficult to addition a new property, Fragility—before modify, we can't expect the interact somewhere, Immobility、Viscosity—when we want use something, we will find that this codes act with some else. Suffer from this we need the thinking of Extensibility ,Flexibility, Pluggability,So the design pattern take the important roles.
  Key words:UML Object-oriented;Design pattern;Bridge;Strategy
  
  1 引言
  
  以前我们大多采用非面向对象的技术进行软件设计,所以当我们转而使用面向对象的方法设计软件时感到非常困难,而设计可复用的面向对象软件就更加困难。因为软件设计既要针对现有的问题,同时又要对将来潜在的问题和需求有足够的通用性,尽可能减少重复设计和更改。设计模式为我们提供了有效的解决思路,使我们可以方便、高效地设计和复用成功的设计和已有的体系结构。
  
  2 设计模式
  
  2.1设计模式的基本概念
  从程序设计的角度理解,一个设计模式提供了一个针对某一特定问题的解决方案。在面向对象的程序设计中,一个设计模式有一个特定的结构。使用这样的结构,程序的体系结构更加灵活、代码可以更加方便地被复用,程序具有更好的适应性。
  2.2设计模式的基本要素
  2.3桥模式
  能够分别实现类的抽象和行为的实现,使其相互间没有影响,降低了程序的耦合度能够很方便地扩展类的功能,能够在扩展功能的同时隐藏内部机制,保证透明度。
  参与者和协作者:
  2.4策略模式
  策略模式定义一系列的算法,把这些算法一个个封装起来,使它们可以相互替换,而对用户提供统一的接口。因而,这些算法可以独立于使用它的客户而变化。
  参与者和协作者:
  
  3 设计模式在图书管理系统中的应用
  
  3.1问题的产生
  首先,要对图书管理系统进行分析,即运用基于UML的面向对象方法,我们知道,系统核心功能必须满足面对各种角色,如老师、博士、研究生、本科生、专科生、其他,提供各种服务,如借书、还书、预定等等。
  区分各种角色的目的是由于各种角色的接、还、预定、等功能的不同限制,如借书的期限不同,借书的本数不同等等。
  而且,如果管理要提供新的服务功能,或者要加入一种新的角色,还有可能,要改变借书期限和借书本数,我们如果用传统的方法编写的代码那么我们势必会对代码的修改产生一些负面影响。
  3.2解决方法
  针对以上问题,我们发现各种角色和各种服务正好对应这样一个抽象和行为,于是桥模式就自然而然的浮现出来了。
  UML图如下:
  如果系统要面向新的借书者,要提供新的服务功能,只需在上图的“桥”的左右两边分别加上Actor 和 imp的继承类即可,这样对与系统的这个影响的波动就会相当的小,十分容易被开发者掌握范围和预测其影响。
  同时我们还要清楚的认识到,“桥”模式是提供系统的一个最大范围的一个场景,即是系统领域方面的最大的骨架。
  此外,我们还有这样的一个问题需要解决,即当要改变各种借阅者借书期限和借书本数,或者其他的限制条件时我们又该怎么办?
  一个办法就是,将这些限制作为各个角色的成员变量,这样就能解决问题。的确可以,但是也许会涉及到可维护性。如果我们用设计模式里的策略模式效果就不同了,因为策略模式对用户提供统一的接口,算法可以独立于使用它的用户,所以改变借书天数和借书本数就不会对使用用户产生影响。
  如下UML图:
  其中的Strategy1、2、3分别代表不同的借书期限和本数的计算方式,并且还可以计算过期的各种算法。
  由此,对于该图书管理系统的总的桥模式和策略模式的综合使用如下UML图:
  通过以上的关于图书管理系统整体设计模式的研究我们的系统具有了如下性质:
  (1)可扩展性
  很容易向系统加入新性能。例如,我们可以十分轻松的添加新的角色—教授,添加新的服务等等(在桥两边加),根本不影响整体构架。
  (2)灵活性
  允许代码修改平稳地发生,不会波及很多其他模块。
  (3)可插入性
  可以很容易地将一个类抽出去,同时将另一个有同样接口的类加进来。如实现了上述策略。
  
  4 设计模式对软件设计的指导
  
  设计模式是对学习OO设计原则的具体指导。
  优越性:
  (1)通过扩展已有的软件系统,可以提供新的行为,满足新需求,使系统有一定适应性和灵活性。
  (2)已有的软件模块,特别是最重要的抽象层模块不能再修改,这就使系统有一定的稳定性和延续性。
  (3)抽象化是关键。
  可以给出一个或多个抽象类或接口,规定出所有具体类必须提供的方法的特征,作为系统设计的抽象层。这个抽象层预见了所有可能的扩展,因此在任何扩展情况下都不会改变,使得系统的抽象层不需修改。(对修改关闭)同时,从抽象层导出一个或多个新的具体类可以改变系统的行为,因此系统的设计对扩展是开放的。
  (4)对可变性的封装原则
  找到一个系统的可变因素,将它封装起来。这意味着,一种可变性不应当散落在代码的很多角落里,而应当被封装到一个对象里面;一种可变性不应当与另一种可变性混合在一起(设计模式中所有类图的继承结构一般不会超过两层,否则意味着将两种不同的可变性混合在一起了)。
  
  5 结束语
  
  当我们在进行软件设计的时候,我们要多考虑用一些经典的设计模式来指导自己,这样对于系统的总体稳定性十分有益,只要我们善于观察,总会发现模式和提高自己的设计分析能力,同时我们还要牢记以下三点面向对象的重要原则:
  (1)遵从开—闭原则对扩展开放,对修改关闭。
  (2)组合优于继承。
  (3)面向接口编程。
  通过这样,我们一定会使面向对象的设计和分析方法上一个新的台阶。
  
  参考文献:
  [1]ErichGamma RichardHelm RalphJohnson john Vlissides设计模式—可复用面向对象软件的基础[M].机械工业出版社,2000.
  [2]Alan Shalloway, James R.Trott.设计模式精辟[M].北京:清华大学出版社,2004.
  [3]Craig Larman.UML和模式应用——面向对象分析和设计导论[M].机械工业出版社,2002.
  [4]王少锋.UML面向对象技术教程[M].北京:清华大学出版社,2004.
  注:“本文中所涉及到的图表、公式注解等形式请以PDF格式阅读原文。”
其他文献
摘要:首先阐述了在实践教学中采用Proteus软件仿真的优势,然后对Proteus软件进行介绍,最后举例说明。  关键词:软件仿真的优势;Proteus软件;实例  中图分类号:TP319文献标识码:A文章编号:1009-3044(2007)17-31477-02  The Application of Proteus in Embedded System Teaching  REN Qin, C
期刊
摘要:本论文主要比较了两种多用户上行链路同步估计算法—时域同步与频域同步的性能;最后提出一种新的频率补偿算法使剩余频率快速降到±0.25子载波间距左右,使得频偏估计更具鲁棒性,并说明了算法仿真的有效性。  关键词:多用户OFDM;时域;频域  中图分类号:TN919文献标识码:A文章编号:1009-3044(2007)17-31386-04  Simple Analysis on Multiuse
期刊
摘要:压力测试是Web应用程序测试必不可少的一项工作。现以一个用ASP.NET开发的信息管理系统为例,详细论述如何使用ACT对Web应用程序进行压力测试。  关键词:Web应用程序;压力测试;ACT  中图分类号:TP306文献标识码:A文章编号:1009-3044(2007)17-31405-02  Briefing on Stress Testing of Web Application Pr
期刊
摘要:FLASH设计是目前设计业界界中使用比较广泛的一种形式,本文将着重介绍FLASH设计的现状,并对其发展前景进行详细的分析。  关键词:FLASH;动画;前景  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)17-31475-02  FLASH Design of the Status and Outlook  LI Qiao-jun,TAO Lin  (Hena
期刊
摘要:随着高等教育改革的进一步深化,许多课程的理论教学学时都不同程度地压缩了。如何在有限的学时内让学生掌握所学知识,是每个教师所面临的新问题。论文主要介绍了在数字电子技术课程的课堂教学中,引入MAX+plusⅡ软件,利用其方便、强大的仿真功能,帮助学生理解课程中的难点和重点,从而提高课堂教学的效率。  关键词:MAX+plusⅡ;数字电子技术;课堂教学  中图分类号:TP311文献标识码:A 文章
期刊
摘要:在C语言中,函数是实现程序模块化设计思想的手段。函数在调用过程中常常存在着实参和形参之间的数据传递。文章阐述了调用函数的过程中实参和形参之间数据传递的实质和属性,即值传递和单向性。  关键词:函数;形参;实参;数据传递  中图分类号:TP312文献标识码:A 文章编号:1009-3044(2007)17-31457-01  Analysis of Data Transferring from
期刊
摘要:VB是高校计算机基础课程之一,适合各种管理信息系统的开发。本文主要对VB基础教学中建构主义思想的运用进行了研究,并分析设计了VB教学过程中的教学方法。  关键词:VB;基础教学;建构主义  中图分类号:G642文献标识码:A 文章编号:1009-3044(2007)17-31455-02  Research of VB Teaching Based on Constructivism  GA
期刊
摘要:基于ASP.NET(C#)Web开发平台,对远程备份与恢复SQLServer数据库的方法进行了简单、详细地介绍;解决了基于WEB方式的远程数据库恢复中我们常常会遇到“因为数据库正在使用,所以未能获得对数据库的排它访问权,RESTORE DATABASE操作异常终止”等问题;高效地实现了远程数据库备份与恢复功能。  关键词:ASP.net;C#;远程备份与恢复;SQLServer数据库  中图
期刊
摘要:随着嵌入式系统的广泛应用,嵌入式系统中的数据存储和数据管理显得日益重要。本文主要介绍flash存储器的存储特点,Linux文件系统的两类存储策略:块式存储和线性存储,并在此基础上提出了一种改进的简单日志文件系统的存储策略。  关键词:Flash;Linux;文件系统存储策略  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)17-31448-02  A Metho
期刊
摘要:在以Tuxedo为中间件的企业信息系统中,为满足分布式系统的应用,需要解决在Java程序中调用Tuxedo服务的难题,给出了一种免费的、用Visual C++2、Visual Basic3、Jacob组件和Java语言结合编程的方法,详细地解说了方法实现的原理及关键程序代码。  关键词:Java;Tuxedo服务;方法  中图分类号:TP311文献标识码:A文章编号:1009-3044(20
期刊