|
|
摘要运用设计模式可有效地提高面向对象软件设计的效率和质量。文中介绍了设计模式的思想,并以一个电力设备在线监测软件为实例详细介绍了如何在面向对象设计中灵活使用设计模式。 关键词设计模式面向对象在线监测 1引言 在进行软件设计时,有两种方法可以使用,即结构化设计方法和面向对象的方法。传统的程序是采用结构化设计,用结构化语言,如FORTRAN或C来编写的。由于这种方法与现实生活中人们的认知过程不完全吻合,故而这些程序难以理解且可扩展性差,也就是说,程序的生命周期较短并且不适于重用性开发和增补性开发。 软件的复杂性和人类认知的基本特点要求出现软件设计和编程的全新的方法。面向对象的程序设计应运而生了,因为人类的理解过程大多都是面向对象的。从面向对象的角度,世界被看作是由一些相互作用,并施加积极影响的对象所组成。一些面向对象的语言,如C++,可以通过用继承、聚合、多态、友元关系等方法来开发面向对象的系统,这样的系统易于理解、修改和扩展。 本文主要讲述采用面向对象的设计方法进行软件设计时,如何运用设计模式的思想以获得良好的设计,并结合作者本人实际设计并开发的一个电力设备在线监测软件的实例来加以说明。 2面向对象软件设计的难点 面相对象软件的设计目标是灵活的、模块化的、可复用的和易理解的软件。面向对象的设计有很多优点,但也比较困难。如果对面向对象的理解不够,那么把面向对象的设计仅仅停留在封装和继承这些低层次的水平上,而完全没有充分利用面向对象所蕴含的强大能力,这只能称为具有面向对象外观的结构化设计。 熟悉一门面向对象的语言(如C++)绝不等于一个好的面向对象设计人员。在进行面向对象软件设计时,一个难点是去发现合适的类。要从一个具体的应用项目中去分析和找到合适的类要考虑许多因素:封装、粒度、依赖关系、灵活性、演化、复用等等。特别地,设计结果所得到的类并非都在现实世界中存在,有很多类是抽象的,而且设计中的抽象对于产生灵活的设计是至关重要的,例如,描述过程和算法的类现实中并不存在,但它们却是设计中的关键部分。除了要对对象进行合理的抽象以形成合适的类外,另一个难点是确定各个类之间的结构关系(如继承、多态等)和由类实例化而得到的对象之间的通信和协作关系,这些决定了一个系统的可复用、可扩展和易理解等特性。 3设计模式的提出 运用设计模式可以帮助克服上述难点。设计模式描述了已有的设计方案,以便于重复利用已有经验;它为设计者提供了一套用较抽象的方式表示设计方案的方法,以便于设计者将自己的设计思想清楚地表达出来,便于交流。另外,在熟悉了设计模式思想并了解了一些模式后,还能在设计过程中运用模式思想和方法来引导设计,使设计效率得到很大提高。 设计模式就是记录面向对象软件的设计经验,每个设计模式系统地命名、解释和评价了面向对象系统中一个重要和重复出现的设计。它是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。它确定了所包含的类和对象,它们的角色、协作方式以及职责分配。它不只针对某个具体应用问题,而是某类问题解决方案的抽象描述。 在过去的结构化设计方法中,算法和数据结构起到十分重要的作用,而在面向对象系统的设计中,设计模式也具有很重要的作用,可以帮助设计者去分析要解决的问题。 描述一个模式包含下面几个方面: (1)模式名:简洁地描述模式的本质。 (2)意图:该模式适用于什么特定的问题。 (3)结构:用基于对象建模技术(OMT)的表示法对模式中的类进行图形描述。 (4)参与者:指模式中的类和对象以及它们各自的职责。 (5)协作:模式的参与者怎样协作以实现它们的职责。 总的来讲,设计模式有如下优点:(1)清晰地将设计方案表达出来,利于学习;(2)便于复用已有的方案;(3)有助于分析具体设计问题;(4)便于文档管理,经验交流。 4一个实例——电力设备在线监测软件的设计 4.1电力设备在线监测系统的构成简介 本软件的任务是对电力设备由于内部绝缘缺陷而造成的有害放电进行在线监测。基本过程是首先利用电流和超声传感器采集到可提供设备状态信息的数据,然后用FFT(快速傅立叶变换)分析出频谱,以观察频率成分。接下来对数据进行信号处理,以便将采集到的数据中的有用信号提取出来。这里的有用信号即指放电信号。经过处理的数据要进行两种分析,一是通过电流信号计算放电量,二是利用超声信号估计时延和放电点的定位计算。这在需要对设备进行检修时可帮助确定故障位置。采集和经过信号处理的数据都将之放到文件中,以便用示波器来显示和供下一步使用。 图1是该软件的数据流图: 参考图1,可从中发现几个重要的组成部分,如示波器、数据采集过程、信号处理算法、定位算法等。此时如何从中找出合适的类,以及这些类的对象之间如何协作是问题的关键。 根据数据流图分析,可定义如下几个类: (1)示波器类:示波器主要是用来将数据用波形方式灵活的显示在界面上,有时可能要提供不同的显示风格,因而设计一个示波器类,这时就可运用抽象厂模式或工厂方法模式[1]。 (2)数据采集类:数据采集过程比较机械,可定义为一个类。但当需要提高软件的通用性时,可采用桥接模式。 (3)信号处理算法类:对于信号处理算法类,则可采用策略模式。定位算法类的处理也类似。 限于篇幅,无法一一介绍,下面将结合信号处理算法类的构造及使用详细介绍策略模式。 4.2策略模式简介 策略模式的英文名为Strategy,即策略。策略是用来处理问题的方法,面对不同的问题或同样的问题在不同的情况下要根据实际情况选择不同的策略。类似的,在进行面向对象的设计时,策略模式的意图是定义一系列算法,把它们一个个封装起来,并且使得可根据需要方便地选择某个算法使用,并使得可独立于算法的调用者而添加或删除某个算法。
|
|
状 态:
离线
公司简介
产品目录
|
|
公司名称:
|
武汉天立华高电气设备有限公司
|
联 系 人: |
天立华高
|
电 话: |
027-86385331
|
传 真: |
|
地 址: |
武汉市http://www.whtlhgdq.com/东湖风景区先锋工业园天立大厦2幢 |
邮 编: |
430083 |
主 页: |
|
|
|
|
|