版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象的程序实现特征研究面向对彖的程序实现特征研究【摘耍】程序的质量主要取决于软件设计的质量,选择了程序 设计语言之后,编程风格在很大程度上影响着程序的可读性、可测试 性和可维护性。保证程序质量的重要方法是有良好的程序设计风格。 对面向对象实现来说,良好的程序设计风格也是非常重耍的,它不仅 能够减少系统维护或扩充所带来的系统开销,而且更有助于在新项目 或工程中重用已有的程序代码。本文就程序设计风格和准则进行探讨 研究。【关键词】面向对象;程序设计特征程序的质量取决于程序设计的质量,选择了程序设计语言之后, 编程风格决定了程序的可读性、可测试性和可维护性。对面向对象实 现来说,良好的面向对象程
2、序设计风格,不但要遵循传统的结构化程 序设计风格和准则,也要遵循为适应面向对象方法所特有的概念(例 如,继承性)而必需的一些新的风格和准则。一、提高可重用性提高软件的可重用性是而向对象方法的一个主要目标。软件重用 是指在两次或多次不同的软件开发过程中重复使用相同或相似软件 元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过 程、需求分析其至知识领域等多个层次。在编码阶段主耍考虑代码重 用的问题,代码级的重用是最简单,也是最流行的,是迄今为止研究 最深入、应用最广泛的重用技术。传统上,代码级重用部件的主体是 子程序(函数或过程)。现在,rti于基于对象和血向对象的程序设计语 言及相应开
3、发环境的发展,代码级重用部件的内容更加丰富,不仅包 括结构化程序设计语言中的函数或过程,同时也包括面向对象程序设 计语言中的程序包和类。一般说来,代码重用可分为两种形式,一种是本项目内的代码重 用,称为内部重用;另一种是新项目重用已有项目的代码,称为外部 重用。内部重用主要是找出本项目设计屮和同或和似的部分,然后利 用继承机制共享它们。要做到外部重用,即一个项冃重用另一项冃的 代码,就要求开发人员必须具有重用的设计思想,做到反复考虑,精 心设计。虽然为实现外部重用与内部重用需要考虑的范围不同,但是 有助于实现这两类重用的程序设计准则却是相同的。实践经验表明, 主要的准则有:1 提高方法的内聚,
4、减小方法的规模一个方法(即服务)应该只完成单个功能,这样的方法是高内聚的。 如果某个方法涉及两个或多个不相关的功能或规模大的方法,则应该 把它分解成儿个更小的方法。2 保持方法的一致性实现代码重用的一个重要因素是应该保持方法的一致性。一般来 说,功能相似的方法应该有一致的名字、参数特征(包括参数个数、 类型和次序)、返回值类型、使用条件及出错条件等。这样有助于实 现代码重用。3. 把策略与实现分开方法从所完成的功能來看有两种类型:策略方法和实现方法。策 略方法负责做出决策,提供变元,并且管理全局资源;实现方法只负 责完成具体的操作,但却没有执行这个操作的决定权,也不知道为什 么执行这个操作。策
5、略方法不直接完成计算或实现复杂的算法,只是检查系统运行 状态,并处理出错情况。该方法通常紧密依赖于具体应用,这类方法 易编写、易理解。实现方法仅仅针对具体数据完成特定处理,通常用于实现复杂的 算法。实现方法既不制定决策,也不管理全局资源。实现方法如果在 执行过程中发现错误,只返回执行状态而不处理出错情况。由于实现 方法是自含式算法,与具体应用和对独立,因此,容易在其他应用系 统中重用,具有较高的可重用性。在编程吋分清策略方法和实现方法,不要把它们放在同一个方法 中。应该把算法的核心部分放在一个单独的具体实现方法中。为此需 要从策略方法中提取出具体参数,作为调用实现方法的变元,才能提 高方法可重
6、用性。4. 采用全面覆盖技术在编程时,对系统全面考虑,写出覆盖整个系统所有可能的方法。 而不能仅仅针对当前需要的功能写方法。例如,如果在当前应用中需 要写一个获取表中第一个元素的方法,则至少还应该为获取表中最后 一个元素再写一个方法。一个方法不仅能处理正常值,而且还能够对 异常情况(如空值、极限值及界外值等)作出有意义的响应。5 降低方法的耦合度降低方法与外界的耦合程度的一项主要措施是在方法中尽可能 少使用或不使用全局信息。6.充分地利用继承机制使用继承机制可实现共享和提高重用性,是面向对象程序设计的 主要途径。(1) 使用了过程。把公共的代码分离出来,构成一个被其他方法 调用的公用方法,是实
7、现代码复用最常用、最简单的方法。通常可以 在基类中定义这个公用方法,供派生类中的方法调用。(2) 分解因了。提高相似类代码可重用性的另一个有效途径,是 从不同类的相似方法中分解出公共代码和不同的代码(即因子)。把公 共代码作为公用方法,定义在一个抽象基类(额外的)中;把不同的因 了作为名字相同而算法不同的方法,定义在不同类中,并被这个公用 方法调用。把这种分解与面向对象语言提供的多态性机制结合起来, 抽象基类中定义的公用方法可由派生类來继承,在新了类中只需编写 其特有的代码,由于增添新了类编写的代码减少了,显然为增添新了 类所需付出的工作量也就明显降低了。(3) 使用委派。当确实存在一般一特殊
8、关系时,利用继承关系, 子类可以继承父类的所有方法和属性。但是,当逻辑上不存在一般一 特殊关系时,为重用已有的代码,可以利用委派机制。要恰当地使用 继承机制,否则会降低程序的可理解性、可修改性和可扩充性。(4) 把重用代码封装在类中。解决同一类应用问题时,程序员往 往希望重用其他方法编写的程序代码。那么就将被重用的代码封装在 类中,这样使用起来比较安全,也是程序员应该提倡的编程风格。例 如,如果开发一个应用数学系统时,发现有现成的实现迭代法的商品 软件包,程序员想重用这个算法,于是先定义一个迭代法类,然后把 这个商品软件包的功能封装在该类中即可。二、提高可扩充性前面所述的提高可重用性的准则,同
9、样能提高程序的可扩充性。 通过实践研究,有助于提高程序的可扩充性的面向对象程序设计准则 如下:1. 封装实现策略为了提高类中数据结构或算法可修改性,应该把类中描述属性的 数据结构以及修改属性的算法等实现策略封装起來,只提供公有的接 口供外界访问。2. 方法的功能应该单一一个方法应该高内聚低耦合,包含对象模型中的有限内容。如果 用一个方法遍历多条关联链,将使方法过分复杂,既降低了可理解性, 乂影响了可修改性和可扩充性。3. 避免使用多分支语句在实施系统开发过程中,可以利用do-case语句测试对象的内部 状态,避免使用多分支语句来根据对象类型选择应有的行为,否则在 增添新类时将不得不修改原有的代
10、码。一般來说,应该合理地利用多 态性机制,根据对象当前类型,自动决定应有的行为。4. 精心选择和定义公有方法公有方法是对外公用的接口,私有方法是仅在类内使用的方法, 通常利用私有方法来实现公有方法。一般来说,公有方法的修改代价 要比私有方法大得多,因为对公有方法的修改常常会引起许多其他类 的修改,而私有方法的删除、增加或修改所涉及的面要小得多(仅在 类内),因此代价也比较小。为提高可修改性,降低维护成本,必须 精心选择和定义公有方法。三、提高健壮性提高健壮性,也是程序员在编写实现方法的代码吋应该考虑的一 个重要方面。通常需要在健壮性与效率z间做出适当的折衷。健壮性 对任何一个实用软件都是不可忽
11、略的质量指标。遵守下述准则将有助 于提高健壮性。(下转第83页)(上接第81页)1增强系统的容错功能系统应该具备容错功能,即具有处理用户操作错误的能力。当用 户操作失误或输入数据出错时,不会引起程序运行中断,更不应该造 成“死机”,而应该对操作进行检查,发现了的错误,必须给出有关 的提示信息,并允许用户再次输入或正常退出。2. 检查参数的合法性对软件系统中所使用的方法或过程,尤其是公有方法或过程,应 该着重检查其参数的合法性,不能因为用户在使用公有方法或过程时, 违反参数的约束条件而引发程序运行中断或造成系统“死机”现象。3. 不要预先确定限制条件预先确定限制条件对所开发的系统往往会产生一些不
12、良的后果。 特别是在设计阶段,往往很难准确地预测出应用系统中使用的数据结 构的最大容量需求。当系统中使用的数据结构的容量大于预先确定的 限制条件时,系统有可能引发一连串的问题。因此不应该预先确定限 制条件。如果有必要和可能的条件下,则应该使用动态内存分配机制 来创建数据结构,当然,该数据结构是未预先确定限制条件的。4. 先测试后优化为了提高健壮性,往往需要增加大量的代码,这就或多或少地影 响了系统的执行效率。因此,就需要在效率与健壮性z间做出合理的 折衷。一般来说,首先根据应用程序的特点,确定需要着重测试的部 分(例如,最坏情况出现的次数及处理时间等),进行测试。然后为提 高性能,确定着重优化的关键部分。此外在选择算法吋,要综合考虑 内存需求、速度以及实现的简易程度等因素,选择出适当的算法。四、结论程序是软件设计的自然结果,程序的质量主要取决于设计的质量, 根据设计的要求选择了程序设计语言z后,编程风格在很大程度
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025下半年四川自贡市属事业单位考试聘用人员高频重点提升(共500题)附带答案详解
- 2025下半年北京市延庆县事业单位招聘39人历年高频重点提升(共500题)附带答案详解
- 2025上海地铁第一运营限公司多职能队员(巡视)(储备)招聘50人高频重点提升(共500题)附带答案详解
- 2025上半年贵州六盘水市事业单位及国企业招聘应征入伍大学毕业生【92】人高频重点提升(共500题)附带答案详解
- 2025上半年四川省江油市事业单位招聘95人历年高频重点提升(共500题)附带答案详解
- 农村建设诚信承诺书模板
- 银行网点智能系统布线合同
- 商场屋面瓦安装合同
- 2024年租房合同终止协议3篇
- 2024年物业中介服务定金协议
- 以学增智-提升推进高质量发展的本领研讨发言稿
- 2023年10月自考00055企业会计学真题及答案含评分标准
- 幼儿园人事工作总结
- 可修改版五年级数学期中考试答题卡模板
- 精装修工程工作界面划分
- 山东省青岛市市北区2023-2024学年九年级上学期11月期中数学试题
- 【语文】上海市三年级上册期末复习试题(含答案)
- 遥感技术基础第二版课后答案
- 项目式高中化学教学《保护珊瑚礁的措施-沉淀溶解平衡》
- 犯罪现场勘察题库(348道)
- 八段锦操作评分标准
评论
0/150
提交评论