(计算机应用技术专业论文)基于面向对象的售电系统的设计与实现.pdf_第1页
(计算机应用技术专业论文)基于面向对象的售电系统的设计与实现.pdf_第2页
(计算机应用技术专业论文)基于面向对象的售电系统的设计与实现.pdf_第3页
(计算机应用技术专业论文)基于面向对象的售电系统的设计与实现.pdf_第4页
(计算机应用技术专业论文)基于面向对象的售电系统的设计与实现.pdf_第5页
已阅读5页,还剩51页未读, 继续免费阅读

(计算机应用技术专业论文)基于面向对象的售电系统的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 随着软件规模的扩大,对软件开发技术提出了许多新的要求。基于面向对 象的软件开发作为一种新的软件开发技术,使软件设计的“即插即用”的成为 可能,然后就象硬件工程师可以用芯片组装成不同型号的硬件产品一样,软件 程序员可以用软件模块来拼装各种软件。本文主要对基于面向对象的软件开发 的发展、理论和应用作了初步探讨。 本文首先简要介绍了已经使用多年的基于c 语言和f o x p r o 数据库系统丌 发的一个小型售电系统。通过对该系统的使用和分析,指出了该系统在应用和 设计中存在的一些问题。 随后,作者简要介绍了基于面向对象的软件丌发新技术。作为本课题内容, 文中着重讨论了一些基于面向对象的软件开发过程的基本概念,以及用c + + 语 言实现的改进后的售电系统。 最后,作者详细讨论了开发中发现的问题及问题产生的具体原因。通过以 上应用系统的设计与实现,作者对新旧两种系统的优缺点进行了比较,我们发 现面向对象编程技术的应用能在今后的软件开发中能有效提高软件生产效率, 改善软件的质量和程序的稳定性。 关键词:面向对象数据库售电系统 a b s t r a c t w i t ht h e c o n t i n u o u s e x p a n s i o n i nt h es i z eo ft h e a p p l i c a t i o n ,t h es o f t w a r e d e v e l o p m e n tt e c h n o l o g y i s r e q u i r e d t ob e i m p r o v e d ,t h e o b j e c t o r i e n t e d p r o g r a m m i n g s o f t w a r ed e v e l o p m e n ti san e w t e c h n o l o g yo fs o f t w a r ed e s i g n j u s tl i k e p c sc a l lb ea s s e m b l e d b yc h i p s ,s o f t w a r ec a nb eb u i l tu s i n gs o f t w a r e c o m p o n e n t s t h e m a i n p u r p o s eo f t h et h e s i si st od i s c u s st h e t h e o r y d e v e l o p m e n tp r o c e s sa n dp r a c t i c e o fo b j e c to r i e n t e dp r o g r a m m i n g d e v e l o p m e n t f i r s t l y , t h ea u t h o rh a sd i s c u s s e dt h eo l dp o w e rs a l e s y s t e mt h a ti sb a s e do nc l a n g u a g ea n df o x p r od a t a b a s es y s t e m t h o u g ht h ea n a l y s i so ft h eo l ds y s t e m ,s o m e p r o b l e m sh a v ea r i s e nw h i c hm u s tb er e s o l v e d s e c o n d l y , t h eo b j e c to r i e n t e dp r o g r a m m i n gi si n t r o d u c e d b r i e f l y , h e r et h ea u t h o r e m p h a s i z e s o m eo ft h e f u n d a m e n t a l t h e o r y t h a ti su s e di n o b j e c t o r i e n t e d p r o g r a m m i n g a n dt h e a u t h o ri n t r o d u c e st h eh e wp o w e rs a l e s v s t e mt h a tw a s i m p l e m e n t e d w i t hc + + f i n a l l y ,t h ea u t h o rd i s c u s s e dt h ep r o b l e m st h a tw e r ef o u n di nt h en e w m e t h o do f p r o g r a m m i n g a n dw h a t c a u s e dt h e s e p r o b l e m s t h r o u g h t h e d e s i g n a n d i m p l e m e n t a t i o no f t h i sn e w a p p l i c a t i o n ,t h ea u t h o rc o m p a r e dt h et w od i f f e r e n td e s i g n m e t h o d s - w ef o u n dt h a tw ec o u l d i m p r o v eo u rs o f t w a r ep r o d u c i n ge f f i c i e n c yb y u s i n g o b j e c to r i e n t e dp r o g r a m m i n ga n da l s o i m p r o v et h eq u a l i t ya n ds t a b i l i t yo fo u r s o f t w a r e k e y w o r d s :o o p d a t a b a s ep o w e rs a l es y s t e m 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发 表或撰写过的研究成果,也不包含为获得:歪盗盘堂或其他教育机构的学位 或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在 论文中作了明确的说明并表示了谢意。 学位论文作者签名:1 母,砬王 签字日期:2 卿z 年上月,z 日 学位论文版权使用授权书 本学位论文作者完全了解蠢洼盘堂有关保留、使用学位论文的规定。 特授权苤鲞盘鲎可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学 校向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名:1 习! :主导师签名 走醐 签字日期:2 2 - 年2 - 月,三日签字日期:跏l 年f ,月f 日 第章绪论 1 1 开发研制背景 第一章绪论 随着城乡电网的不断发展,用电量大幅增长,过去的总表+ 分表的售电结 算模式已不再适合广大市场的需要,新型的一户一表的用电结算电方式大量普 及,从而使得收费人员的工作量大幅增加。因而,为了减轻收费人员的负担, 同时解决用户欠费的问题, i c 卡电度表被越来越广泛的使用。在大中型城市 地区,由于安装密度大、数量多,售后服务比较方便、用户和工作人员素质均 比较高、实现i c 卡电表的普及比较容易;在城市,建立完善的i c 卡售电网络 也比较容易,只需利用已经广泛分布的银行网络,升级部分硬件,即可满足需 求;同时这种售电方式和合作也大幅减少了供电部门的收费、追缴欠费的工作 量,而又给银行带来了新的业务,故而受到各方面的一致推崇。所以这种基于 c s 结构的这种售电结构在短短数年之内得以迅速普及,甚至一些2 4 小时无人 自动售电机也已投入使用。 然而,在中国广大的农村地区,用电量近年也大幅增加,由于农村居住分 散,县级以下的供电部门既不可能建立广泛的售电网点,也没有现成的商业银 行网络可以利用,城市居民到银行购电的方式在广大的农村地区是不现实的。 在农村,我们最多只能依赖于乡、镇一级的分布的现有售电系统和大量文化水 平参差不齐的农村电工来解决这一问题。特别是近年来农村电网彻底改造基本 完成,水利灌溉设施的改造即将开始,这一市场需求也越来越迫切。针对这些 实际存在的情况,越来越多的表明我们迫切需要设计一种小型售电系统来服务 于这些分布广泛却数量众多的用户。 同时,在城市,由于资产问题,实际上在很多新建成的高档住宅区、商业 区,用户用电并不直接从电力公司直接购买,而是要通过小区的物业管理公司, 物业管理公司和供电部门实际上形成了批发商与零售商之间的关系,所以这些 小区的物业管理公司也需要一种独立的小型售电系统解决方案。 1 2 原有系统简介与分析 实际上,我们手边已有一种小型售电系统,当初其设计目标是针对刚网0 在 城市中安装的一户一表,后来改软件被联网的售电系统取代后,却在不少农村 第一章绪论 地区开始使用。我们这次的设计也是在基于原有的部分设计的基础上,对系统 的结构做了全面的再设计。 图1 1 城市售电网络的结构 图1 2 农村售电网络的结构 第一章绪论 原有系统由售电系统和后台数据库两部分组成,全部由f o x p r o 实现。 原有的系统经过长时间使用,发现存在的具体问题如下: a 由于f o x p r o 所创建的数据库文件不是单文件结构,数据库文件的完 整性不能保证。 b 由于f o x p r o 本身的问题,当发生突然停电时,数据库的记录有重复 记录的现象。 c 虽然i c 卡读写器支持多种i c 卡,应用程序却只支持一种i c 卡,若 要换用其他i c 卡,必须针对每一种i c 卡重写全部相关函数。 1 3 基本需求分析 由于我们要开发的这套软件要面向广大的农村地区,当地技术水平比较落 后,人员素质参差不齐,所以这套系统中并不要求太先进的性能,相反稳定、 简单、可靠才是第一位的。 a 功能需求一这种小型售电系统应该对系统要求不高,操作简单,在尽 量符合现有的工作流程的前提下,能够处理所有现行基本售电业务, 并可存储所有相关信息,打印一些简单的报表。同时,要求适当的安 全性。 b 性能需求一这种售电系统应该采用比较通用的小型桌面数据库,用户 最大容量不超过1 0 0 ,0 0 0 户,应该可保留用户2 3 年的售电信息。 c 环境需求一对硬件要求p 1 0 0 以上机器,有至少一个r s 2 3 2 标准串口 可用,以便安装本系统所需的i c 卡读写器;对软件运行环境要求w i n 9 8 操作系统及支持o d b c 和a d o 的小型桌面数据库。 d 安全要求一要求本软件不能被任意拷贝和安装,数据库内的数据不能 被随意修改。 e 用户界面一要求界面友好,操作简单。 f 扩展性一考虑到i c 卡的成本越来越低,容量越来越大,不断有新型 的i c 卡面世,所以采用的i c 卡读写器和系统的软件部分都应支持尽 量多型号的i c 卡。 g 稳定性一要求程序和数据库都比较稳定,特别是数据库部分,应采用 比较成熟的数据库产品,避免不完整性和突然断电情况下重复 i j :i 录现 象的出现。 h 兼容性一同时,由于先期已经有小部分地区已经使用了早期的 f o x p r o 版本的售电系统,本系统的设计应尽量向下兼容,以避免两 套系统并存的局面;最后,考虑未来发展,应对系统做出全面系统的 1 第一章绪论 规划,近期1 i 能实现的部分,也要把接口定义好,以备将来发展之需。 1 4 论文作者的主要工作 论文期间所做的主要工作: a 分析原有的基于c 和f o x p r o 的售电管理系统的结构,以及使用中 发生的问题的原因。 b 对面向对象软件编程技术的理论进行研究,并对具体的面向对象语 言c + + 的特性进行研究。 c 通过作者自行设计的一个具体的基于面向对象的应用系统,对面向 对象编程的理论和技术进行更加深入的研究,并将其与传统的编程 方法进行对比。 第二章o o p 概述 2 1 面向对象技术 第二章o o p 概述 由于计算机硬件技术发展已日趋成熟,计算机化的需求越来越高,无法跟 上硬件发展的步伐。近年来,为提高软件的生产力,发展了c a s e 、计算机辅 助软件工程、快速原形( q u i c kp r o t o t y p i n g ) 制作、4 g l 及数据库管理等软件工 程技术。虽然这些技术确实提高了不少效率,但面对更迅速的的硬件技术发展, 这样的软件工程技术仍不能满足需要。 面向对象设计( o o p ) 便是此时为解决软件生产危机所提出的一种设计思 想,它不仅是新的设计方法,也引进了新的程序语言,可以改变软件工业的发 展及解决软件危机。 软件发展应该比硬件发展更快,更具弹性。但由于传统设计方式是由上而 下的设计概念,每一次开发程序必须重新开始,所以便有人提出软件i c 的概念, 即面向对象的程序设计( o o p ) 。 面向对象程序设计( o b j e c t o r i e n t e dp r o g r a m m i n g , o o p ) 就是将模块化 原则发展的更加充分,以促进软件行业的分工合作。模块化,在面向对象系统 中不只是将系统分成小模块,而更重视模块的“重组”,合成一个系统程序。程 序设计师不再像以前的工作方式那样重头开始,所有的指令都逐行编写,而是 利用一些别的已经设计好的程序设计模块,再构成一个功能更广、更强的模块, 提供给他人使用。最后系统便是由软件元件中挑选适当元件相组合提供给用户 使用。 若能实现这样的专业分工,软件工业的前景是不可限量的,但这似乎是个 理想的专业模式。到目前为止软件的专业分工程度仍然有限,软件与硬件的差 别在于软件较硬件更具弹性及扩展性,程序设计师几乎可以不依赖于外界支援 单独完成编写他所需要的东西。由于使用者的要求越来越高,系统要求程序越 来越复杂,逐渐地单独编写大型程序越来越不可能,因为你不能再面面俱到, 渐渐地你需要外界支援。所以软件i c ,即面向对象程序设计,虽目前仍为发展 阶段,但在不久的将来,他将是软件的主流。 面向对象程序设计的本质是把数据和处理数据的过程当成一个整体一对 象。 c + + 充分支持面向对象程序设计。面向对象程序设计的实现需要封装和 s 第二章o o p 概述 数据隐藏技术,需要继承和多态性技术。面向对象技术是一个非常实用而强有 力的软件开发方法。它有许多特色。是方法的唯性,即方法是对软件开发 过程所有阶段进行综合考虑而得到的。二是从生存周期的一个阶段到下一个阶 段的高速连续性,即在一个阶段所用到的部分与在下一个阶段所使用的部分是 衔接的,所使用的技术经过生存期每一一阶段后不改变。三是把面向对象分析 ( o o a ) 、面向对象设计( o o d ) 、面向对象程序设计( o o p ) 集成到生存期的 相应阶段。 2 1 1 面向对象的概念 c o a d 和y o u r d o n 给出了一个定义:“面向对象一对象+ 类+ 继承+ 通信”。 如果一个软件系统是使用这样的4 个概念设计和实现的,则可以认为这个软件 系统是面向对象的。一个面向对象的程序的每一成份应是对象,计算是通过新 的对象的建立和对象之间的通信来执行的。 a 对象( o b j e c t ) 对象是面向对象开发模式的基本成分。每个对象可用其一组属性和它 可以执行的一组操作来定义。属性一般只能通过执行对象的操作来改变。 操作又称为方法或服务,在c + + 中称为成员函数,它描述了对象执行的功 能。若通过消息传递,还可以为其他对象使用。而消息是一个对象与另一 个对象之间通信的手段,是要求另一对象执行类中定义的某个操作的规格 说明。发送给一个对象的消息定义了一个操作名和一个参数表( 可能是空 的) ,并指定某一个对象。当一个对象接收到发给自己的消息时,则调用消 息中指定的操作,并将形式参数与参数表中相应的值结合起来。接收对象 对消息的处理可能会改变对象的状态,即改变接收对象的属性,并发送 个消息给自己和另一个对象。可以认为,这种消息的传递大致等价于传统 过程方法中的函数调用。 为了把说明与实现分离,需对对象的数据结构和相关操作的实现进行 封装,因此,“对象”有两个视图,分别表现在设计和实现方面。从设计方 面来看,对象是一些概念的实例,它们把有关的实体模型化。这些对象常 常直接对应于问题论域中的物理实体,即现实世界的实体。这个视图把对 象看作实体,产生有关实体的声明,描述实体,包括实体的属性和可以执 行的操作。从实现方面来看,一个对象是表达在应用的可执行代码中的实 体而使用的实际数据结构。这些对象是数据与操作的单一混合体,它们是 数据抽象的实例化。 第二章o o p 概述 b 类( c l a s s ) c + + 通过建立用户定义类型( 类) 支持封装性和数据隐藏。定义良好 的类一旦建立,就可看成是完全封装的实体,可以作为一个整体单元使用。 类的实际内部工作应当隐藏起来,定义使用良好的类的用户不需要知道类 是如何工作的,只要知道如何使用它就行。 类是一组具有相同数据结构和相同操作的对象的集合。类的定义可以 视为一个具有类似特性与共同行为的对象的模板,可用来产生对象。在一 个类中,每个对象都是类的实例( i n s t a n c e ) ,他们都可使用类中提供的函数。 一个对象的状态则包含在它的实例变量中。 为了从类定义中产生对象,必须提供建立实例的操作。面向对象程序 语言,如s m a l l t a l k ,c + + 都定义了一个n e w 操作,可建立一个类的新实例。 c + + 还引入了构造函数,用它在声明一个对象时建立实例。此外,程序设计 语言给出了不同方法来撤销实例,即当某些对象不再使用时把它们删去, 把存储空间释放出来以备其他对象使用。c + + 给出了一个d e l e t e 操作,可以 释放一个对象使用的空间。c + + 还允许每个类定义自己的析构函数或撤销方 法,在撤销一个对象时调用它。s m a l l t a l k 没有提供一个机制来撤销对象, 但可以进行无用单元收集。 类常常可以看作一个抽象数据类型( a d t ) 的实现。但更合适的是把 类看作是某种概念的一个模型。事实上,类是单个语义单元,它可以很自 然地管理系统中的对象,匹配数据定义与操作。许多面向对象语言都提供 数据抽象机制。这个机制为类定义提供了一个手段,指明类的用户能够使 用的操作,这组操作叫做类的界面。类定义的其余部分给出数据定义和辅 助功能定义,包括类的实现。这种分离把类内部的修改对类的用户的影响 隔离开来。 类,就其是一个数据值的聚合的意义上来看,与p a s c a l 中的记录或c 中的结构类似,但又有差别。类扩展了通常的记录语义,可提供各种级别 的可访问性。也就是说,记录的某些成份可能是不可访问的,而这些成分 对于该记录型来说具有可访问性。类不同于记录,因为他们包括了操作的 定义,这些操作与类中声明的数据值有相同的地位。 c 继承( i n h e r i t a n c e ) c + + 采用继承支持重用思想,程序可以在扩展现有类型的基础上声明 新类型。新子类是从现有类型派生出来的,称为派生类。派生类继承了原 有基类的所有属性,并在此基础上增加了新的功能从而实现了代码的重用 第二章o o p 概述 性。 继承是使用已存在的( 现存) 定义作为基础建立新定义的技术。新类 的定义可以是现存类所声明的数据、定义与新类所增加的声明的组合。新 类复用现存类的定义,而不是要求修改现存类。因为这种类的一部分已经 实现和测试,故开发费用较少,现存类可当作父类( 基类或超类) 米引用, 则新类相应地可以当作子类( 子类或派生类) 来引用。 使用继承设计一个新类,可以视为描述一个新的对象集合,它是现存 类所描述对象集合的子集合。这个新子集合可以认为是现存类的一个特化。 如图2 一l 中的q u a d r i l a t e r a l 类是p o l y g o n 类的一个特化。一个q u a d r i l a t e r a l 是限制为四条边的多边形。还可以进一步把q u a d r i l a t e r a l 特化为r e c t a n g l e ( 矩形) ,它是具有特殊性质的四边形。q u a d r i l a t e r a l 类的界面可以等同于 p o l y g o n 类的界面,而r e c t a n g l e 类的界面又与q u a d r i l a t e r a l 类的界面相同。 p o l y g o n r e f e r e n c e p o i m v e r t i c e s d r a w m o v e ( a x ,a y ) c o n t a i n s ? ( a p o i n t ) q u a d r i l a t e r a l r e f e r e n c e p o i n t v e i t i c e s d r a w m o v e ( a x ,a y ) c o n t a i n s ? ( a p o i n t ) 图2 1 使用继承的一个例子 新类的界面还可以看作是现存类界面的扩充界面。例如,从一个现存 的车辆类派生的四轮驱动车类可能不仅是车辆类子集合定义的特化,而且 还可能在新类的界面中引入新的能力。在刚才的例子中,可以在r e c t a n g l e 中加进更多的操作,如加进一个操作,返回该实例中所谓的最大的椭圆。 d 多态性和动态联编 通过继承的方法构造类,采用多态性为每个类指定表现行为。继承性 和多态性的组合,可以轻易地生成一系列虽类似但独一无二的对象。由于 继承性,这些对象共享许多类似的特征。但由于多态性,一个对象可以有 独特的表现方式,而对另一个对象有另一种表现方式。 对象、类、继承及消息表征了面向对象丌发模式,但还使用了其他一 第一章o o p 概述 些技术与他们配合,以提供更多的功能。其中两个是多态性( p o l y m o r p h i s m ) 和动态联编( d y n a m i cb i n d i n g ) 。 多态性技术主要在结构方面给设计者提供了灵活性,这种结构在于程 序参数的类型检验中是很灵活的。在具有多态性的语言中,经常对照形式 参数榆查实际参数。然而,代替在形式参数与实际参数之间做精确匹配, 实际参数可能是属于一个特定类型集合的任何几个类型的一个实例。图2 2 给出了4 个类的继承层次。使用这个层次结构,类q u a d r i l a t e r a l 的实际参 数可以代替类p o l y g o n 的形式参数。因为类q u a d r i l a t e r a l 的界面与类p o l y g o n 的界面是相容的,就是说,类q u a d r i l a t e r a l 界面可响应类p o l y g o n 界面所有 消息。 图2 2 某些多边形类的继承层次 多态性蕴涵许多好处,例如,想要在屏幕上画一系列多边形。多态性 允许一个对象同时属于几个类型。这样,一个数据结构( 如一个表) 所包 含的元素可以属于一组指定的类型而不仅仅是一个类型,可以认为这是一 个类族,通过对表元素的形式类型规格说明的继承,把这些类关联在一起。 可以通过遍历这个表,给各个表元素发送d r a w 消息,“画出”多边形表中 所有的项。 把多态性和动态联编技术结合起来,可支持系统开发人员建立灵活的 可扩充的系统,动态联编把函数调用与目标代码块的连接延迟到运行时进 行。有些语言( 如s m a l l t a l k ) 主要利用动态联编,因为他们是解释性语言。 编译性的语言( 如c + + ) 则在静态联编与动态联编之间有选择的交替使用, 以支持需要的多态性,并维持静态联编可能达到的效率。像c + + 这样的编 译性语言,还做编译时间检查,保证每个消息的发送能够通过对象接收消 息来获悉,甚至在使用动态联编时也能够做到。 第二章0 0 p 概述 为了说明动态联编,考虑在p o l y g o n 类中的操作c o n t a i n s ? ( a p o i n t ) 。 2 1 2 传统信息系统设计方法与面向对象方法的比较 a 传统信息系统设计 在传统的方法中,系统设计是从系统分析中分离出来的,并且与系统 分析有明显不同之处。图2 2 显示了他们之问的关系。 注意,在这个模型中,系统设计的输入值是“需求说明”,而它是从系 统分析中直接输出的。在系统分析员开始在具体的硬件、软件平台上实现 预期的信息系统时,需求说明的大部分被转换为相应的设计文档。这样就 产生了一个问题,设计人员参照的是设计文档,而不是原始的用户需求。 系统分析员越进入系统设计部分,离原始的用户需求分析越远,设计人员 将用需求说明而不是原始的用户需求来证明和验证他的设计工作。 图2 2 一般系统分析、设计、和实现模型 需求说明文档对于整个系统的成功实现具有至关重要的意义,因为对 于信息系统而言,他代表着用户需求。当需求说明文档被转变成为相应的 设计、构造、测试和实现的过程中,很多更改是难以避免的。在大多数情 况下,设计文档将被修改以反映这些变动,而需求说明文档则很少对这些 更改做修订。这主要是由于一些几个原因: 时间限制。 需求说明文档在设计过程中和设计后很少再被使用。 第二章o o p 概述 很难保证需求说明文档和设计文档完全一致。 b 面向对象的分析与设计 面向对象的分析与设计通过直接扩展原始用户需求说明模型而不是将 它转换为设计文档来解决上述这个存在于传统方法中的熏要问题。系统分 析员在整个系统实现的过程中始终参照原始模型。这也使得用原始用户需 求来验证整个系统的过程变的容易。不论何时,设计过程中的任何改变, 设计、构造、测试过程中的变化都将自动反映在原始文档中。 2 2 类的设计 类设计的第一步是标识应用所需的概念。应用分析过程包括了对问题论域 所需的类的模型化;但在最终实现应用时不只有这些类,还需要追加“些类。 2 2 1 类的设计目标 类的设计目标如下: a 单一概念的模型: 在分析与高层设计阶段标识一个概念时,常常需要使用多个类来表示, 通常在面向对象设计时需要对一个概念进行分解,用一组类来表示这个概 念。一个独立的类只表示一个概念。 b 可复用的“插接相容性”部件: 为使所开发的能用在未来的应用中。需要一些附加的特性。例如,在 类的集合界面的标准化,在一个集合内类的“插接相容性”等。 c 可靠的部件: 应用软件必须是可靠的。而这种可靠性与它的部件有关。每个部件必 须经过充分的测试。如果要建立可复用的类,则通过测试确保部件的可靠 性是绝对必要的。 d 可集成的部件: 人们希望把类的实例用到其它类的开发和应用中,这要求类的界丽应 当尽可能小,表示一个类所需要的数据和操作都定义在类的定义中。因此, 类的设计应当尽量减少命名冲突。并利用封装特性保证把一个概念的所有 细节都组合在一个界面之下,利用信息隐藏保证实现级的名字将不会与其 第二章o o p 概述 他类的名字互相干扰。 2 2 2 通过复用设计类 利用现存类来设计新类,有四种方式:选择,分解,配置和演变。这 是面向对象技术的一个重要优点。我们许多类的设计都是基于现存类的复 用。 a 选择: 设计一个类最简单的方法是从现存的部件中简单地选择合乎需要的部 件。这就是开发软件的目的。一个面向对象开发环境应提供个常用部件 库。大多数语言环境提供一个常用部件库。大多数语言环境都带有一个原 始部件库,如整数、实数和字符,它是提供其他所有功能的基础层。任一 基本部件库( 如“基本数据结构”部件) 都应建立在这些原始层上。例如, 列表、集合、栈和队列等。这个层还包括一组提供其他应用域服务的一般 类,如窗口系统和图形图元。 b 分解: 最初标识的“类”常常是几个概念的组合,在着手设计时,可能会发 现所标识的操作落在分散的几个概念中,或者会发现,数据属性被分开放 到模型中拆散概念形成的几个组内。这样必须把一个类分成几个类,希望 新标识的类容易实现,或者他们已经存在。 c 配置: 在设计类时,可能会要求现存类的实例提供类的某些特性。通过把相 应类的实例声明为新类的属性来配置新类。例如,一种仿真服务器可能要 求使用一个计时器来跟踪服务时间。设计者不必开发在这个行为中所需的 行为和操作,而是找到相应的计时器类,并在服务器类的定义中声明它。 d 演变: 要求开发的新类可能与一个现存类非常相似,但不是完全相同。此时, 不适宜采用“选择”操作。这时可以从一个现存类成一个新类。利用继承 机制来表示泛化特化的联系。特化处理有三种可能的方式: 新类b 中的对象是类a 中对象的特殊化。 新类b 中的对象是类a 中对象的一般化。 新类b 中对象与类a 中对象共享某些公共属性。 第二章o o p 概述 2 3 类设计方法 通常,类中的对象具有相同的属性和操作。因此,应当建立一个机制来表 示类中的数据结构、处理定义和引入过程。这时,类的设计是由数据模型化、 功能定义和a d t 定义混合而成的。类是某些概念的个数据模型,类的属性就 是模型中的数据域,类的操作就是数据模型允许的操作。要明确规定它们两个 谁先确定是不可能的,两个处理是互补的。 类的标识有主动和被动之分。被动类是数据为中心,它们是根据系统的其 他对象发送来的消息而修改其封装数据模型的;主动类则提供许多系统必须履 行的基本操作。与被动类的实例( 被动对象) 一样,主动类的实例( 主动对象) 接收消息,但这些对象是负责发送附加消息和控制某些应用部分的。在窗口环 境,一个窗口对象是一个被动对象,窗口是基于发送给窗口的消息来显示某些 内容的。窗口管理器是一个主动对象,它担负着各种在它控制的窗口上的操作。 在被动类于主动类的设计问不存在明显的差别。在设计主动类时,需要优 先确定数据模型,稍后再确定操作;在设计被动对象时,把类提供的服务翻译 成操作。在标识了服务之后再设计为支持服务所需要的数据。许多类都是这两 个极端的混合。 类中对象的组成包括了p u b l i c ( 共享界面) 、o p e r a t i o n ( 操作) 和p r i v a t e ( 私 有数据结构) 。而消息则通过界面,执行控制和过程性命令。因此,类的设计描 述包括两部分: a 协议描述( p r o t o c o ld e s c r i p t i o n ) 协议描述由一组消息及对每个消息的相应注释组成, 例如,类m o t i o ns e n s o r 的一部分协议描述: m e s s a g e - r e a d :r e t u r n ss e n s o ri d , s e n s o rs t a t u s ;读s e n s o r 时要求的消息 m e s s a g e ( m o t i o n ,s e n s 0 0 一s e t :s e n d ss e n s o ri d , s e n s o rs t a t u s ; 设置或重置s e n s o r 状态 b 实现描述( i m p l e m e n t a t i o nd e s c r i p t i o n l 实现描述说明了每个操作的实现细节,这些操作应是包含在对象类的 消息中的。实现描述由以下信息构成: 属性定义:- 说明类的数据类型、操作方法( 包括对象名和对类引用的 规格说明) 等; 类接口描述:该类的各共有界面,一般包括继承界面和外部界面; 第二章o o p 概述 类实例的可能状态之间的有效变换集; 实现描述必须包括充足的信息,以提供在协议描述中所描述的所有信 息的处理方式。使用类所提供服务的用户必须熟悉如何实现服务的协议; 而服务的提供者( 对象类) 必须考虑服务如何提供给用户,即实现细节的 封装问题。 ( 1 ) 界面 类的界面构成了类的规格说明,定义了与其它类的交互。界面包括操 作特征及先决条件和后置条件。操作特征包括他的名字和应归入参数的类。 ( 2 ) 命名操作 操作的命名指示了设计人员所采取的视点。操作的目的是操纵一个类 的实例( 该操作定义在此类上) ,或者提供有关该实例状态的信息,操作名 应反映这个目的。传送给操作的信息是操作的另一特征,要求数据量不要 很多。操作发送消息给对象,这些对象必须在消息的参数中出现。因此, 操作可能会引起其他对象改变它们的状态,并改变它自己对象的状态。 ( 3 ) 界面的级别 类定义中有三种不同的存取级别: p u b l i c ( 共有界面) :类a 的共有界面的使用者是所有使用类a 的实例 的对象的集合,这个界面是该类界面的一个类表,它包括通常使用的算法 运算和输入输出函数。这些操作的实现和类的数据元素的确切表示,对类 的用户来说都是隐蔽的。 p r i v a t e :( 私有界面) :类的私有界面是一些操作的集合,这些操作仅 为该类的其他操作所使用。同时它们进一步把实现的细节对外部时间隐蔽 起来。 s u b c l a s s ( 子类) :类a 的子界面是一个操作的集合,使用这些操作可 存取类a 子类的实例。这些操作多少有点依赖于实现的。它们允许子类对 类的细节进行特殊的存耿。 ( 4 ) 标准界面 在设计类的层次时,结构的根类提供了一个模型或标准界面,他们能 够描述在子类中可找到的那些概念。根类是抽象的,且不必实现界面上的 每个操作,但它应提供将在每个子类中实现的操作的标准特征。 ( 5 ) 内部结构 第一二章o o p 概述 在类的内部定义了两种类型的数据:数据模裂的成员和支持信息。数 据模型的成员提供了概念的表示;支持信息仅仅是为了帮助概念的实现。 例如,我们希望笛卡儿坐标和极坐标都支持一个p o i n t 类。然而,由于效率 的关系,希望实现时一次只使用一种表示,或者是x ( 横坐标) 和y ( 纵坐 标) ,或者是p ( 矢径) 和0 ( 极角) 。基于在实例中最近的操作来决定要使 用的属性对。此时可使用个u s i n g p o l a r 标志,当他为t r u e 值时,可使 用极坐标;当它为f a l s e 值时,可使用笛卡儿坐标。属性u s i n g p o l a r 的唯 一用途是支持实现。数据模型对象的标识和定义是分析与高层设计阶段的 任务,而支持数据对象的标识是类设计和实现级的任务。 ( 6 ) 消息模式 要根据功能模型及动态模型,以及实际情况设计对象的消息模式。对 象之间相互传递消息的机制是:当一个对象接收了一条消息后,就在该对 象中寻找消息指定的操作名。假如没有找到,就到它的父类中寻找,直到 查找成功,或者查找失败( 找完根类对象) 为止。如果找到了所需的操作, 就执行这个操作,执行的过程中会有进一步的消息发送。消息发送的方法 是完全一样的,不考虑具体的接收者。因此有可能具有相同方法名的不同 对象,用不同的方式响应同一条消息的发送,这叫做消息发送的多形性。 当一个对象把一条消息发送出去后,有两种控制方式。一种情况是同时把 控制转移给接收消息的对象,当接收消息的那个对象把任务完成后,再把 控制权转回给发送消息的对象,这种情况叫做控制单线,也可理解为运行 过程中的过程调用:另一种情况是当消息发送后,发出的消息可能激活另 一个对象( 也可能那个接受者早已活动着) ,这种情况叫做控制多线。也可 理解为并发处理的通信模块,响应消息将以异步方式返回给发送消息的对 象。在控制多线情况下,会出现多条消息排队等待接收对象处理的现象。 消息模式和处理能力共同构成对象的外部特性。 确定各类之间的继承关系时,将各对象的公共性质放在较上层的类中 描述,通过继承而共享对公共性质的描述。这里需要说明的是,类实质上 定义的是对象的类型,它描述了它们所有的性质。类又是一种分层结构, 类的上层可以有父类,下层有子类。子类直接继承父类的全部描述,这也 叫做传递性。类可以有多个父类和多个子类,这叫做多重继承;如果只限 于一个父类,叫做简单继承,在这种情况下,类的层次结构是树形结构。 在实现时,利用继承性可把通用的类和专用的类存储于类库中,根据需要 可以复用它们。 第一二章o o p 概述 2 4 本工程中o o p 的应用 本工程中o o p 的主要应用在于底层的动态连接库中,由于各种不同的 的 数据结构有类似之处,所以我们用o o p 方法对其进行抽象定义,定义一个共享 基类( c c a r d ) ,对共有的属性( 如卡形、表形) 方法( 如设置卡形、设置表形) 进行定义,其余的卡是该基类的派生类,通过重载技术负责对通过继承产生的 新类中特有的属性、方法进行定义。 这种c c a r d 基类设计的优点在于: a 使得i c 卡的物理结构的定义与上层使用的接口分离,对所有针对i c 卡的操作提供了标准接口界面,使得程序清晰易懂。使整个工程中各 种数据结构的定义非常直观,结构清晰。 b 对共有的硬件的底层操作进行封装,这样当底层硬件升级时( 如升级 存贮空间更大的卡形) 时可以轻易实现,这样本应用程序可以配合i c 卡读写器同时使用多种i c 卡,对一些公用方法的封装( 如加密、解 密算法) 使得软件升级更容易,程序也更加清晰易懂。 c 大幅减少了重复编程的工作量,从而进一步减少代码的维护工作量。 同时在上层的售电管理和用户管理模块的设计中,使用了一些利用o o p 技 术制作的第三方控件,增强了应用程序的功能。 第三章关系数据库概述 3 1 数据库概述 第三章关系数据库概述 在商用数据处理应用中,关系模型现在已经成为主要的数据模型。早期的 数据库系统建立在网状模型或层次模型的基础上。同关系模型相比,这两种较 早的模型与底层实现的结合更加紧密。 关系数据库具有坚实的理论基础。这一理论有助于关系数据库的设计利用 户对数据库信息需求的有效处理。 3 1 1 关系数据库的结构 关系数据库是表的集合,每个表有唯一的名字。表中的一行代表的是系 列值之间的联系。由于一个表就是这种联系的集合,表这个概念和数学卜的关 系这个概念是密切相关的,这也是关系数据库名称的由来。 3 1 2s o l 语言简介 商品化的数据库系统需要对用户更加友好的查询语言,其中最具影响的是 s q l 语言,s q l 使用了关系代数和关系演算结构的组合。尽管说s q l 是一个 “查询语言”,但它除了查询数据库外还有许多功能。s q l 具有定义数据结构、 修改数据库中的数据、以及说明安全性约束条件等特性。 s q l 已经确立起自己作为标准关系数据库语言的地位。s q l 有许多种不同 的版本,最早的版本是由i b m 的s a nj o s e 研究室提出的。该语言最初叫s e q u e l , 作为s y s t e mr 的一部分于7 0 年代初付诸实施,发展到现在,它的名字已变成 s q l ( 结构化查询语言) 。现在有许多产品支持s q l 语言。 1 9 8 6 年美国国家标准协会( a n s i ) 和国际标准化组织( i s o ) 发布了s q l 标准s q l 8 6 ,1 9 8 7 年i b m 发布了自己的s q l 企业标准一系统应用程序结构数 据库界面( s a a s q l ) 。扩充的标准( s q l 8 9 ) 于1 9 8 9 年发表,现在的数据库 系统通常至少要支持s q l 8 9 。a n s i i s o 的比较新的版本是s q l 一9 2 。 s q l 语言有以下几个部分: a 数据定义语言( d d l ) - - s q ld d l 提供定义关系模式、删除关系、 建立索引以及修改关系模式的命令。 第二章关系数据库概述 b 数据操纵语言( d m l ) 一s q ld m l 不仅包括基于关系代数和元组 关系演算的查询语占,还包括在数据库中插入、删除、修改元组的 命令。 c 嵌入式d m l 语言一嵌入式s q l 用于某种通用编程语言中,如p l 1 、 c o b o l 、p a s c a l 、f o r t r a n 和c 。 d 视图定义- - s q ld d l 包括定义视图的命令。 e 权限管理一s q l d d l 中包括指定对关系和视图的服务权的命令。 f 完整性一s q ld d l 包括定义数据库中的数据必须满足的完整性约 束条件的命令。破坏完整性约束条件的更新将被禁止。 g 事务控制一s q l 提供定义事务开始和结束的命令。有些实现还允许 显示地封锁数据以实现并发控制。 l 触发器一当触发器定义的条件得到满足是,自动执行预设的操作。 3 2o d b c 技术简介 由于在一个分布式数据库系统中,可能由于需求差异等原因,往往会存在 多种数据库,他们之间的互连访问成为一个棘手的问题,特别是当用户需要从 客户机端访问不同的数据库服务器时。微软提出的开放数据库互连( o d b c ) 成为目前一个强有力的方案。 o d b c 的基本思想是为用户提供简单、标准、透明的数据库连接的公共编 程接口,开发厂商根据o d b c 的标准去实现底层的驱动程序,这个驱动对用户 是透明的,并允许根据不同的d b m s 采用不同的技术加以优化实现,这就利于 不断吸收新的技术而日趋完善。 这同时也就是数据库驱动的思想,它很类似于w i n d o w s 中打印驱动的思想。 在w i n d o w s 中,用户安装不同的打印驱动程序,使用同样的一条打印语句或操 作,就可以很容易地实现在不同打印机上打印输出,而不需要了解内部的具体 原理。o d b c 出现后,用户安装不同的d b m s 驱动就可以用同样的s q l 语句 实现在不同的d b m s 上进行同样的操作,而且无需翻译。 o d b c 是依靠分层结构来实现的,如此可保证其标准性和开放性。如图3 1 所示,它共分为四层:应用程序( a p p l i c a t i o n ) 、驱动程序管理器( d r i v e r m a n a g e r ) 、驱动程序( d r i v e r ) 和数据源( d a t as o u r c e ) 。微软对o d b c 规程进 行规范。它为应用层的开发者和用户提供标准的函数、语法和错误代码等,微 软还提供了驱动程序管理器,它在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论