首页  ·  知识 ·  软件项目
面向对象的开发方法(2)
X8023Z  http://www.cnblogs.com/X8023Z/  综合  编辑:dezai  图片来源:网络
"FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman

(2)程序设计风格

良好的程序设计风格对保证程序质量的重要性。良好的程序设计风格对面向对象实现来说尤其重要,不仅能明显减少维护或扩充的开销,而且有助于在新项目中重用已有的程序代码。

良好的面向对象程序设计风格,既包括传统的程序设计风格和准则,也包括为适应面向对象方法所特有的概念(例如,继承性)而必须遵循的一些新准则。

<1>提高可重用性

面向对象方法的一个主要目标,就是提高软件的可重用性。正如本书11.3节所述,软件重用有多个层次,在编码阶段主要涉及代码重用问题。一般说来,代码重用有两种:一种是本项目内的代码重用,另一种是新项目重用旧项目的代码。内部重用主要是找出设计中相同或相似的部分,然后利用继承机制共享它们。

提高方法的内聚

减小方法的规模

保持方法的一致性

保持方法的一致性,有助于实现代码重用。一般说来,功能相似的方法应该有一致的名字、参数特征(包括参数个数、类型和次序)、返回值类型、使用条件及出错条件等。

把策略与实现分开

全面覆盖

如果输入条件的各种组合都可能出现,则应该针对所有组合写出方法,而不能仅仅针对当前用到的组合情况写方法。

此外,一个方法不应该只能处理正常值,对空值、极限值及界外值等异常情况也应该能够作出有意义的响应。

尽量不使用全局信息

应该尽量降低方法与外界的耦合程度,不使用全局信息是降低耦合度的一项主要措施。

利用继承机制

在面向对象程序中,继承机制是实现共享和提高重用程度的主要途径。

有时提高相似类代码可重用性的一个有效途径,是从不同类的相似方法中分解出不同的“因子”(即不同的代码),把余下的代码作为分用方法中的公共代码,把分解出的因子作为名字相同算法不同的方法,放在不同类中定义,并被这个公用方法调用。

    程序员往往希望重用其它方法编写的、解决同一类应用问题的程序代码。重用这类代码的一个比较安全的途径,是把被重用的代码封装在类中。

<2>  提高健壮性

    为提高健壮性应遵守以下几条准则:预防用户的误操作,不要预先限制条件,先测试后优化。

2、面向对象测试

一般说来,对面向对象软件的测试可分为下列四个层次进行:

(1)算法层

测试类中定义的每个方法,基本上相当于传统软件测试中的单元测试。

(2)类层

测试封装在同一个类中的所有方法与属性之间的相互作用。在面向对象软件中类是基本模块,因此可以认为这是面向对象测试中所特有的模块(单元)测试。

(3)主题层

测试一组协同工作的类-&-对象之间的相互作用。大体上相当于传统软件测试中的子系统测试,但是也有面向对象软件的特点(例如,对象之间通过发送消息相互作用)。

(4)系统层

把各个子系统组装完整的面向对象软件系统,在组装过程中同时进行测试。

设计测试方案的传统技术,例如,逻辑覆盖、等价划分、边界值分析和错误推测等方法,仍然可以作为测试类中每个方法的主要技术。面向对象测试的主要目标,也是用尽可能低的测试成本和尽可能少的测试方案,发现尽可能多的错误。但是,面向对象程序中特有的封装、继承和多态等机制,也给面向对象测试带来一些新特点,增加了测试和调试的难度。

七、面向对象的语言(产品)
      面向对象的语言应该具备的特征:
    1.用对象而非过程(功能或算法)作为程序设计的基本逻辑构件;
    2.每个对象属于应该类(型),并为该类的一个实例;
    3.一个类可继承其它类的性质。
       面向对象的语言有:
    1.SmallTalk-76,80,(80年代下半叶)

    2.Actor(80年代下半叶)
    3.C++,Objective-C (20世纪80年代下半叶)
    4.Object Pascal, Object-Oriented Turbo Pascal,Apple ObjectPascal (80年代初开始)
    5.Eiffel (80年代上半叶)

    6.Ada9X
      但Microsoft Visual C++, Boland C++等都属于混合型面向对象的语言,因为它们是在原来的过程语言的基础上发展起来的,都保留了原来的数据类型,如整数、浮点数、字符以及记录等。

    几个有代表性的商品软件
    Microsoft Visual Basic先从软件的可视化、速成化和组件化开始的,这3化已经开始或正在形成信息与软件工艺的主流之一。
    Bland Delphi是组件软件和复合文书工艺的软件。它包含面向对象Pascal的编辑程序、查错程序、可视研制环境和工具、强大的数据库存取(BDE-Database Engine)工具;它用Object Pascal做情节描述语言。
    Optima++ Developer 是Sybase/Powersoft出版的可视化、速成化的研制工具。它是采用C++的一种纯可视编辑工具,用拖扔编程技术,从一组标准的和可增的控件制模板中拖出组件,将其扔进应用图表中去,并编辑其性质。它可在Windows 9X和NT下运行,它不仅是一个GUI(图形用户接口)建造程序,而且还是一个C/S(客户/服务器)数据库构造工具。
    IBM的VisualAge(SmallTalk版),用一套图标来代表应用组件(对象),并提供许多标准函数(例程)、部件,供GUI配置关系数据库存取、通信、等之用。
    用户编程时,只需用鼠标把要用的部件(图标)拖扔到屏幕中的工作面内,按要求设置这些图标的缺省项和参数值,再把这些图标用线段连接起来,表示它们之间的关系和交互操作,并最后加以测试。在组装过程中,要添加复杂的计算/控件流,可用VisualAge的描述语言(Scripting Language-一种4GL)来编写。如果这还不行,VisualAge则提供SmallTalk编辑环境,以添加所需的语句。
    Digitalk(现叫ParcPlace-Digitalk)的Visual Smalltalk提供组件组装的可视研制环境和工具,用拖扔手段,可视地把组件组装成一个软件(程序),它还能自建新的组件。它最适宜研制软件雏形的OO程序设计语言。应用完成之后,使用Digitalk Smalltalk编译程序编译,其计算效率据称可增加25%,GUI效率增加了100%。
    Prograph CPX(跨平台)将程序面向对象结构的可视化方面做得较突出:
    -它用图标代表一个软件的组成部分,对象、类、组件全部可视化;
    -全套图标都用多面体图标,如类具有“ 方法”面和“ 属性”面;
    -能对图标加以注释,对象和类关系可用线段表示;
    -通过工具可方便地将方法加入Tools菜单;
    -既有解释程序、又有编译程序,可解除解释程序速度慢的问题。

八、OO方法特点和优缺点

1.特点

    (1)利用特定软件直接从对象客体的描述到软件结构的转换。

    (2)解决了传统结构化方法中客观世界描述工具与软件结构的不一致性。

    (3)减少了从系统分析、设计到软件模块结构之间的多次转换映射的繁杂过程。

2.OO方法优缺点

    优点:

     (1)是一种全新的系统分析设计方法(对象、类、结构属性、方法)。

     (2)适用于各类信息系统的开发。

     (3)实现了对客观世界描述到软件结构的直接转换 ,大大减少后续软件开发量。

     (4)开发工作的重用性、继承性高,降低重复工作量。

     (5)缩短了开发周期。

    缺点:

    (1)需要一定的软件支持环境。

    (2)不太适宜大型的MIS开发,若缺乏整体系统设计划分,易造成系统结构不合理、各部分关系失调等问题。

    (3)只能在现有业务基础上进行分类整理,不能从科学管理角度进行理顺和优化。

    (4)初学者不易接受、难学。


    面向对象方法学把分析、设计和实现很自然地联系在一起了。虽然面向对象设计原则上不依赖于特定的实现环境,但是实现结果和实现成本却在很大程度上取决于实现环境。因此,直接支持面向对象设计范式的面向对象程序语言、开发环境及类库,对于面向对象实现来说是非常重要的。

为了把面向对象设计结果顺利地转变成面向对象程序,首先应该选择一种适当的程序设计语言。面向对象的程序设计语言适合用来实现面向对象设计结果。事实上,具有方便的开发环境和丰富的类库的面向对象程序设计语言,是实现面向对象设计的最佳选择。

良好的程序设计风格对于面向对象实现来说格外重要。它既包括传统的程序设计风格准则,也包括与面向对象方法的特点相适应的一些新准则。

面向对象方法学使用独特的概念和完成软件开发工作,因此,在测试面向对象程序的时候,除了继承传统的测试技术之外,还必须研究与面向对象程序特点相适应的新的测试技术。在这方面需要做的研究工作还很多,目前已逐渐成为国内外软件工程界研究的一个新的热门课题。

 

本文作者:X8023Z 来源:http://www.cnblogs.com/X8023Z/
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读