机电之家行业门户网运行
文章 下载
最新公告:

  没有公告

设备维修与管理培训
您现在的位置: 设备维修与管理 >> 设备管理 >> 管理技术 >> 网络计划 >> 资讯正文
 
赞助商
 
 
最新文章
 
 设备管理中存在的问题及改进措施
 探索设备备件更换规律,实现设备
 创新设备管理 提升竞争优势
 设备管理关乎企业效益
 TPM自主保全实践的探索与思考
 驱动离心泵的电机电流高的原因及
 离心泵运行时不打量的原因
 离心泵一般容易发生的故障有哪些
 离心泵各零部件的检修标准
 计量泵的常见故障及处理方法
 
推荐技术
 
 
相关文章
 
襄城:加强电力信息建设
电力企业信息化建设:发
OA系统就是OK——陕西省
湖北襄城供电公司:加强
AIPN系统在某省电力系统
ATM技术在电力调度数据网
电力系统在线监测控制及
电力企业配网GIS系统的设
串口传输方式在电力信息
发展电力信息化的三个观
 
客户服务
 
如果您有设备方面好的文章或见解,您可以送到我们的投稿信箱
客服电话:0571-87774297
信   箱:88ctv@163.com
我们保证在48小时内回复


s

b

g

l

.

j

d

z

j

.

c

o

m

 

电力设备监测软件中设计模式思想的运用           
电力设备监测软件中设计模式思想的运用
作者:佚名 文章来源:不详 点击数: 更新时间:2008-9-24 17:36:46

摘  要 运用设计模式可有效地提高面向对象软件设计的效率和质量。文中介绍了设计模式的思想,并以一个电力设备在线监测软件为实例详细介绍了如何在面向对象设计中灵活使用设计模式。
    关键词 设计模式 面向对象 在线监测


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,即策略。策略是用来处理问题的方法,面对不同的问题或同样的问题在不同的情况下要根据实际情况选择不同的策略。类似的,在进行面向对象的设计时,策略模式的意图是定义一系列算法,把它们一个个封装起来,并且使得可根据需要方便地选择某个算法使用,并使得可独立于算法的调用者而添加或删除某个算法。
    策略模式的类结构如图2所示:


  图2采用的是基于OMT的表示法,类用矩形表示,类名用黑体,类中的操作在类的下面。类中如果定义数据,则放在操作的下面,其间用横线分割。抽象类和抽象操作用斜体表示。上面ConcreteStrategy对CStrategy的继承是接口继承,即CStrategy只是提供算法供外界调用的接口,这里用AlgorithmInterface()表示,其中的操作并不具体实现,具体实现延迟到ConcreteStrategy中。
    类A◇→类B该符号表示类A中维护一个类B对象的引用。策略模式的参与者包括:
  (1)CStrategy类:定义所有支持的算法的公共接口。调用者使用这个接口来调用某ConcreteStrategy类定义的算法。
  (2)ConcreteStrategy类(具体策略):按Strategy定义的接口实现某具体算法。
  (3)Context类:调用者需维护一个Strategy对象的指针,并在实际调用算法时用所需的ConcreteStrategy类来初始化该Strategy对象。同时,Context还可定义一个接口以便CStrategy访问它的数据。
  这些参与者之间的协作关系为:CStrategy和Context相互作用以选择所需的算法。当算法被调用时,Context可以将该算法所需的所有数据都传递给CStrategy。Context只有在选择具体算法即在初始化它所维护的Strategy指针时才和ConcreteStrategy打交道。而在初始化之后,就只和CStrategy对象交互。当要更换算法时,只要在初始化CStrategy时作选择就可以了。下面用实例说明。
4.3 在设计信号处理算法部分时运用策略模式
  在电力设备监测软件中,就信号处理部分而言,可以有不同的算法以供选择,如小波变换滤波、相关处理、级联二阶滤波等,各种方法都有其各自的特点,因而要易于任意选择某个算法进行计算,以便从不同角度进行观察。同时,当要向已经完成的软件中添加新方法或去掉某个算法时,如何使原软件的改动尽可能小,这也是设计者必须考虑的问题。
  实际按策略模式设计的信号处理算法类层次结构如图3所示:

  (1)抽象策略类
    将抽象的策略类命名为

    (2)具体策略类
  将小波变换滤波类命名为



  抽象的策略类命名为CStrategy,各具体处理类如小波变换滤波类命名为CWaveletStrategy,相关处理类命名为CcorelateStrategy等等。
  CStrategy中只有纯虚的函数,是作为接口,并不实现具体功能。具体实现各种信号处理方法的类即SignalProcess(),这样对于调用者是十分方便的,调用时无需区分是哪个具体类。各具体类的供外界调用的接口虽然相同,但是各方法机理和实现途径不同,而这些不同由私有成员的不同得以体现。另外,各类的构造函数的参数也不同,因各处理方法所需的输入信息可能不一样。
    (3)调用者
    处理方法的调用者可定义为

    (4)使用示例
  在进行处理前先要用适当的具体信号处理类来初始化CContext中的m_pSignalProcStrategy,如果要用小波变换,则
  CContext*pContext=new CContext(newCWaveletStrategy(实际输入参数));
  因为SignalProcess()定义为虚函数,根据动态绑定原理,因而尽管m_pSignalProcStrategy定义为CStrategy的指针,在CContext中具体调用处理方法时只要如下即可m_pSignalProcStrategy->SignalProcess()。
  当要更换不同处理方法时,只要在初始化新的CContext实例时,用不同的具体处理方法类实例化即可,因而十分方便。另外,当在软件完成后的维护期,当要添加新的方法时,则只要从CStrategy继承一个新的类即可,调用部分基本不用修改。
5 结论
  综上所述,运用策略模式可以在要向已经完成的软件中添加新方法或去掉某个算法时,如何使原软件的改动尽可能小,并可在运行过程中灵活地更换某个算法进行计算。除此之外,还有许多其它模式,都是已有设计经验的总结与抽象,如能很好地理解与运用,可很大地提高面向对象软件的设计效率和质量。

参考文献

1 Erich Gamma等著,李英军等译.Design patterns.北京:机械工业出版社,2000
2 Shuha pandit等.电力系统应用的面向对象设计.IEEE Computer Application in power,2000,13(4)

资讯录入:admin    责任编辑:admin 
  • 上一篇资讯:

  • 下一篇资讯:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    不良信息
    举报中心
    机电之家设备管理网
    致力于机电设备维修与管理技术
    网络110
    报警服务
    服务热线:0571-87774297 传真:0571-87774298 电子邮件:donemi@hz.cn 服务 QQ:66821730
    机电之家(www.jdzj.com)旗下网站 杭州滨兴科技有限公司提供技术支持

    版权所有 Copyright © 机电之家--中国机电行业门户·设备维修与管理

    主办:杭州高新(滨江)机电一体化学会
    浙ICP备05041018号