面向对象的电力图形系统的分析和设计
电力系统的网络图形是电力系统分析的基础,在总结前人经验的基础上,本文介绍了面向对象的电力系统图形系统的OOA模型以及设计思路,阐述了该图形系统的功能和特点。该图形系统用Visual C++和Microsoft Access进行开发,由于采用了面向对象的思想,系统易于扩充和维护。
关键词:面向对象分析;电力系统;图形系统;数据库
Analysis and Design of Graphic System for Power System Based on Object-oriented
ZENG Xiang-hui SONG Wei DENG Jian YANG Yi-han
(Department of Electric Power Engineering,North China Electric Power University ,Baoding 071003)
ABSTRACT:The power system electric network figure is the power system analysis base .On the basis of former research.,the paper introduced OOA's model and design thinking of the graphic system for power system ,elaborated the graphic system's functions and features.The graphic system was developed by Visual C++ and Microsoft Access.Since adopting idea of object oriented,the system is easy to enlargement and protection.
Key Words: object oriented analysis; power system; graphic system; data base
0 引言
目前,计算机分析在电力系统中的应用越来越广泛,无论是操作票系统、仿真专家系统、还是电力系统潮流计算和短路计算都需要绘制电气接线图。图形是工程中最简洁的语言,在计算机图形上实现数据输入和结果输出会起到一目了然的效果。操作可视化是电力系统各种分析软件的一个发展趋势。但是,现有的大多数电力系统分析软件的图形界面都是为某一特定分析功能而制定的,如潮流优化、短路计算等,建模方法大部分不一致,与数据库的联系不紧密,给出的设备参数比较单一,这样不得不为不同的分析功能做着许多重复开发图形界面的工作。
本文介绍了电力系统图形系统的面向对象分析模型以及设计思路,意在开发这样一个图形系统——能提供良好的图形用户界面,用户能方便快捷的进行电力系统网络接线图的绘制和修改;能对图形进行分层管理;在绘制好的接线图上,只要通过鼠标操作,便可完成电力系统计算参数的录入和设备元件的建模;图元参数以数据库的形式存储,数据库具有很好的通用性,包含了电力系统各种分析计算所需的信息。
1 图形系统的OOA模型
自80年代末期到90年代,面向对象的方法和技术向着软件生命期的前期阶段发展。即:人们对面向对象方法的研究与运用,不再局限于编程阶段,而是从系统分析和系统设计阶段就开始采用面向对象方法。这标志着面向对象方法已经发展成一种完整的方法论和系统化技术体系。
顾名思义,OOA(Object Oriented Analysis)——面向对象分析,就是运用面向对象方法进行需求分析。OOA的基本任务是运用面向对象方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及系统责任所需的类及对象,定义这些类和对象的属性与服务,以及它们之间的形成的结构、静态联系和动态联系。最终目的是产生一个符合用户需求,并能够直接反映问题域和系统责任的OOA模型。需要指出的是OOA旨在建立一个反映问题域并独立于实现的系统逻辑模型,所有与实现有关的问题均不在OOA阶段考虑。
OOA方法建立的系统模型包括基本模型和补充模型两部分。基本模型以直观的方式表达了最重要的系统信息;补充模型则提供了帮助理解基本模型和反映系统如何满足用户需求的交互图。
1.1基本模型
用OOA开发的系统模型是一个类图,类图所要表达的模型信息可以从三个层次来看待:
对象层——给出系统中所有反映问题域与系统责任的对象。用类符号表达属于每一类的对象。
特征层——给出每一个类(及其所代表
的对象)的内部特征。描述了对象的内部构成状况,以分析阶段所能达到的程度为限给出对象的内部细节。
关系层——给出各个类(及其所代表的对象)彼此之间的关系。描述了对象外部的联系状况。
图形系统的功能需求:给用户提供一个方便、易用的界面,可以使应用程序更直观的实现其操作和分析;有完善的图形编辑功能,包括对各种电气图元的绘制和编辑操作,如选择、移动、旋转、复制等基本操作,能对图形分层管理;实现图形与数据库相关联,为电力系统其他分析软件提供统一的数据库接口。
基于以上功能需求分析,图形系统的OOA模型可表示如下:
图中,每个矩形框表示一个对象,矩形框的上栏填写类名,中栏和下栏填写的是对象的属性名和服务名,“@”表示该对象是主动对象或主动服务,符号“”是一般与特殊结构的连接符号,箭头“”表示消息发送,“1 m”表示一对多的实例连接。从图中可以看出,对象“图元基类”与“电气元件”构成一般与特殊结构。对象“图形管理”和“电气元件”之间有一对多的实例连接关系,表明了图形管理类管理了哪些电气元件。对象“工作区间”向“图形管理”对象发送消息,执行“增加”、“删除”等服务;“图形管理”对象向“电气元件”对象发送消息,使用“绘制”、“选中”等服务;“电气元件”对象向“图形信息”对象发送信息,使用“获取图层”、“获取颜色”等服务;“电气元件”对象向“库服务器”发送消息,使用“入库”和“提取”服务。
1.2补充模型
在面向对象分析中,use case是对系统功能使用情况的一个文字描述序列。每个use case针对一项系统功能,描述系统外部的活动者如何与系统进行对话,即具体地说明活动者透过系统边界向系统发什么信息,系统进行什么处理以及返回什么信息。use case可以较好的表达用户对系统的功能需求。
交互图是一个use case与完成相应功能的系统成分之间的对照图。它表明use case中陈述的每件事是由系统中对象的哪个服务响应和完成的,以及这个服务又进一步用到哪些别的对象服务。交互图的表示方法如下:
(1) 在交互图的上部并排的列出与某个use case有关的一组对象(给出其类名)。
(2) 在每一类对象下方画一条垂直线,并在这条线上用一些棒形线条表示该对象的服务按时间方向(从上到下)的执行动作;一个棒形条表示一个服务的执行。
(3) 如果一个对象服务在某一个执行点上
应该向另一个对象发消息,则从这一点向后者画一条带箭头的水平直线,并在旁边注明被引用对象的服务名。
(4) 在系统边界外(通常在交互图左侧),写出对这组对象所执行的功能的描述。
交互图比类图的消息连接更清晰地表示了对象之间的行为依赖关系,并且在表示对象之间交互情况的同时,也表示了对象与系统之外活动者的交互。对于本图形系统,由于篇幅所限,在此仅以电气元件的绘制为例来说明交互图的建立。交互图如下所示:
其工作过程如下:
a.编辑:在工作区间点击相应的电气元件的位图或按钮控件;
b.增加:在相应的电气元件的集合管理类增加一个元件对象并得到指向该元件的对象指针;
c.绘制:利用该对象指针调用绘制函数进行该类图元的绘制;
d.获取图层和颜色:获取图元的图层和颜色以完成绘制;
e.将图元显示在客户区。
2 图形系统的设计
基于以上对图形系统的分析以及所建的OOA模型,可对图形系统设计如下:
2.1 图形界面的设计
图形系统作为人机交互的主要渠道,除了要能实现强大的绘图与交互功能外,还要显示美观,结构清晰,与用户交互过程要简单方便。本图形系统设计了具有Windows风格的界面,创建了一个工作区间窗口,以进行图元编辑及图层管理,并设计工具条以及一系列界面美观、交互方便的对话框。具体界面可参看本文所附例图3。
2.2电气图元数据结构的设计
对于图形系统而言,最基础也是最重要的功能,是对不同类型电力系统元件的绘制和编辑操作。采用面向对象思想把数据和功能合为一个单元,具体设计为每种元件都定义一个类,具体一个元件对应一个对象。每种元件都具有自己各种属性和数据,如大小、形状、位置等,也具有自己的各种行为,如绘制、移动、旋转、复制、删除等,利用面向对象技术把数据和操作封装在一起,从而实现图形系统的各种功能和操作。同时,各种元件除具有自己特殊的属性和行为外,还有一些共同的地方,如颜色、画笔宽度等属性。这样就可以利用C++类继承和派生的特点,建立不同元件的公共抽象基类,其他元件类在此基础上派生而成,这样极大的减轻了编程量,消除了冗余的代码,又增强了程序的可读性。
2.3电气图元管理的设计
在电力系统图形编辑过程中,所涉及的图元众多,如何把它们有序的组织起来,一直是比较困难的问题。在本图形系统中由于数据类型比较多且交换频繁,所以采用了基于C++类模板CTypedPtrArray来实现对指向图形元素对象的指针的组织和管理。每个图形元素是图形元素类创建的一个对象,在创建这个对象时得到指向这个对象的指针,通过类模板CTypedPtrArray建立对象指针数组来管理这些指针,实现图元对象的增加、删除等操作,进而达到管理所有图元对象的目的。
2.4图形信息管理的设计
为了能灵活的对图元的颜色以及对图层的管理,本图形系统设计了一个图层结构和一个图形信息类。图层结构包含了图层的名称、图层的唯一识别号以及图层的显示状态(布尔型变量)。图形信息类的属性包括一个存储颜色列表的数组和一个存储图层列表的图层结构数组,服务包括获取颜色以及获取图层的显示状态。在创建完一个图元对象,并请求该对象的“绘制”服务时,首先向图形信息类请求“获取图层的显示状态”服务,判断该对象所属图层的显示状态,如果处于不显示的状态则返回,服务不再继续,否则,向图形信息管理类请求“获取颜色”服务来创建画笔,进行图元的绘制。基于以上的服务流程以及图形系统的重绘机制,只需设计出图形信息管理交互界面,对图形信息类的颜色列表数组和图层结构数组进行相应的操作即可实现图形颜色和图层的管理。
2.5图形方式下参数录入的设计
本图形系统设计了一系列元件参数对话框,并编写了相应的代码。用户能够在网络接线图上方便迅速的进行数据处理。只要双击接线图上某种类型的元件,应用程序便会弹出同该类元件相对应的元件参数对话框,用户通过填写对话框各项参数,即可完成对某一图元的建模,或对已建模图元的参数的修改。这种图形化的参数录入方式既直观又明了,后台数据库的读写由应用程序完成,对普通用户完全屏蔽,用户不用再去担心文件格式的正确与否,所要做的仅仅是鼠标的点击和参数对话框的填写,从而大大提高了数据处理的效率。
2.6数据库的设计
图形系统是作为一个独立的模块镶嵌在电力系统分析软件中的,最终图形中的各设备图元的参数和拓扑信息要传送给其它的各分析功能模块,一个好的数据接口最能体现模块的独立性、易用性和通用性。基于图形系统的特点采用Microsoft Access进行数据库开发,在数据库结构上,采用按元器件分类列表的关系数据库结构。
在创建完系统接线图对图元进行参数录入后,也就把图元的图形类参数以及系统类参数存入数据库,此时的数据库里存放的图形类参数包括图元的坐标、长度以及放置方向等基本图形信息,我们称之为“生数据库”。但是,图形系统的数据库最终是面向各种电力系统分析软件的,而这些分析软件需求的往往不是这些基本的图形信息,而是进行分析所必需的拓扑信息。所以本图形系统对数据库进行了转换,在“生数据库”建立后,由嵌入SQL语句的主程序对“生数据库”进行查询和转换,生成包含电网拓扑信息的通用数据库——“熟数据库”。
3 图形系统的特点
(1) 能够方便、快捷的绘制出各种电力系统常用元件,如发电机、变压器、母线、刀闸等,并且能够对图中的元件进行任意移动和删除。
(2) 具有强大的编辑功能。能够对图中的一个或多个元件进行选择、复制、拷贝、粘贴、旋转、撤销等工作。为了区别不同的电压等级和其他属性,用户在绘制接线图时能够任意指定当前绘制的线型、线宽、颜色,文字标注的字体和字号,对已绘制的图元,也能随意改变上述属性。
(3) 能对图形进行分层管理。能动态创建图层,图层创建的同时,工作区间图层视图的树结构自动增加一条树的分支,图层创建完后只要双击某一树支即可对该树支对应的图层进行浏览。每个图元都属于特定的图层,若用户选择了当前活动图层,则仅显示属于此图层的图元。这种图层的概念可以用来标示不同电压等级的图元。
(4) 在网络接线图上实现了可视化操作。能通过鼠标点触相应元件,即可实现变压器分接头的切换、刀闸和开关的开合以及电容的投切。
(5) 本图形系统采用了面向对象技术,
对各种电气元件设备有统一的操作模式,能很方便的将新的元件引入编辑系统以及扩充新的功能模块,具有一定的可拓展性和开放性。
4 结论
本图形系统利用Visual C++和Microsoft Access混合编程的方法进行开发,基本做到了人机交互良好、操作方便,并且与数据库紧密相连。由于采用了面向对象的方法,图形系统的扩充和维护都比较方便。目前本图形系统在操作票系统以及继保整定方面得到了应用,实践证明,该图形系统具有很高的实用性和推广价值。
评论
查看更多