




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象的实现主要包括两个任务,即将面向对象的设计结果转换为以特定程序语言编写的面向对象的程序。测试和调试面向对象的程序。面向对象程序的质量基本上取决于面向对象设计的质量,使用的程序语言的特性和编程风格也对程序的可靠性、可重用性和可服务性有着深远的影响。软件测试仍然是保证软件可靠性的主要手段。但是,面向对象程序的独特封装、继承和多态等机制也为面向对象测试提供了一些新功能,增加了测试和调试的难度。第12章面向对象的实现,第12章面向对象的实现,12.1编程语言12.2编程风格12.3测试策略12.4设计测试实例,在使用面向对象语言时,由于语言本身充分支持面向对象概念的实现,编译程序可以自动将面向对象概念映射到目标程序。使用面向对象的语言编写面向对象的程序时,程序员必须将面向对象的概念直接映射到目标程序。面向对象设计的结果既可以使用面向对象的语言,也可以使用面向对象的语言。例如,c语言不直接支持类或对象的概念,程序员只能在结构(struct)中定义变量及其函数(实际上不能在结构中直接定义函数,而是使用指针间接定义)。12.1编程语言,12.1。编程语言,所有非面向对象的语言都不支持通用-特殊结构的实现。在使用这些语言进行编程时,完全避免继承的概念,或者在声明专门化类时,将对一般化类的引用嵌套在其中。核心不是选择语言功能强弱,即最能表达问题领域意义的语言12.1。编程语言,原则上,任何通用语言都可以实现面向对象的概念。与使用面向对象的语言相比,使用面向对象的语言实现面向对象的概念方便得多,但便利性也不是决定选择哪种语言的关键因素。程序设计语言选择的关键因素是语言的一致表达能力、可重用性和可维护性,面向对象语言是12.1.1面向对象语言的优点,1 .一致的表示法此表示法应始终稳定,从问题域到OOA、OOD、OOD到面向对象的编程(OOP)。一致的表达方式有助于在软件开发过程中始终使用统一的概念,也有助于维护人员理解软件的各种组件。2.重用性必须在更大的范围内应用重用机制,以便带来可观的商业利益。3.易于维修。12.1.2面向对象语言的技术特征,1 .支持类和对象概念的机制所有面向对象的语言允许用户动态创建对象,并使用指针引用动态创建的对象。2.实现完整-部分(即总计)结构的机制各使用独立于指针的关联对象来实现完整-部分结构。3.常规-实现特殊(广义)结构的机制包括实现继承的机制和解决名称冲突的机制。4 .属性和服务实现机制应侧重于属性实现机制中支持实例连接的机制。控制属性的可见性;属性值的约束。对于服务,主要应考虑支持消息连接的机制。控制服务可视性的机制;动态连笔字。5.如果类型检查语言要求每个变量或属性仅属于一个对象,则Smalltalk弱类型,如所示。如果语法规定每个变量或属性必须正确属于特定类,则此类语言是强类型,如c。6 .类库大多数面向对象的语言提供了实用的类库。有了类库,程序员就不必亲自编写了,软件重用很方便。7.效率使用带有omni class库的面向对象的语言,在某些情况下,与使用面向对象的语言相比,运行代码的速度更快。大多数面向对象的语言通过优化查找继承树的过程,实现了高效查找。,8 .永久存储对象所有应用程序处理数据。要长期保留数据而不依赖程序执行生命周期,需要一种方法来存储数据。长期保存数据主要有两个原因:(1)必须保存数据以在不同的程序之间传递数据。(2)要恢复运行中断的程序,必须首先保存数据。向类库中添加对象存储管理功能可以在开发环境中提供此功能,而无需更改语言定义或添加关键字。9 .参数化类所谓的参数化类是使用一种或多种类型参数化一个类的机制。此机制允许程序员首先定义参数化类模板,然后将数据类型作为参数传递。您可以将这些模板应用于其他应用程序或同一应用程序的其他部分。10.开发环境软件工具和软件工程环境对软件生产率影响很大。至少应包括最基本的软件工具,如编辑程序、编译器或解释器、导航工具、调试器等。开发人员在选择面向对象的语言时,还需要考虑一些实际因素:1 .为了能取得未来优势,使自己的产品几年后仍然具有强大的生命力,人们可能希望未来支配性的语言编程。根据目前占有的市场份额以及在专业出版物和学术会议上进行的分析、评价,预测未来将会有哪些面向对象的语言占据支配地位。但是,决定选择哪种面向对象语言的实际因素通常是经济因素,如成本,而不是技术因素。12.1.3选择面向对象的语言,2 .结合可重用性、语言、开发环境和类库三个元素,共同确定可重用性。使用面向对象的方法开发软件的基本目的和主要优点是通过重用提高软件生产率。因此,必须优先选择最完整、最准确地表达问题区域含义的面向对象的语言。12.1.3选择面向对象的语言,3 .在考虑类库和开发环境、类库时,不仅要考虑是否提供类库,还要考虑类库提供了哪些有价值的类。要轻松积累可重复使用的类并重用现有类,除了上述基本软件工具外,还必须提供在开发环境中易于使用的类库编辑工具和浏览工具。12.1.3选择面向对象的语言,4 .其他因素,选择编程语言时需要考虑的其他因素:使用户学习面向对象的分析、设计和编码技术的培训服务;在使用此面向对象语言期间提供的技术支持:可提供给开发人员的开发工具、开发平台;机器性能和内存要求现有软件的集成简便性等。12.1.3面向对象的语言选择,12.2编程样式,良好的面向对象的编程样式包括传统编程样式准则和为适应面向对象方法特有概念(例如继承)而必须遵循的一些新准则。良好的编程风格不仅大大减少了维护或扩展的开销,而且有助于在新项目中重用现有程序代码。良好的编程风格对保证程序质量至关重要。软件复用有多层,主要涉及编码阶段的代码重用问题。代码重用通常有两种。一个是在此项目中重复使用代码,另一个是新项目重复使用旧项目的代码。内部重用主要是查找设计中相同或相似的部分,并利用继承机制共享。12.2.1提高可重复使用性,提高可重复使用性指南,1 .改进方法的凝聚力提高方法(即服务)只能完成单个功能。如果一种方法包含两个或多个不相关的功能,则需要用较小的几种方法分解它们。2.方法大小要减小,方法大小要减小,如果方法太大,要用几个较小的方法分解。3.如何保持方法的一致性通常,类似功能的方法必须具有一致的名称、参数特征、返回值类型、使用条件和错误条件等。4 .为了将策略与实现分开,提高可重用性,在编程中不要以相同的方式放策略和实现,应将算法的核心部分放在单独的特定实现方法中。为此,需要提取特定参数作为策略方法调用实现方法的参数。战略方法和实施方法是什么?-嗯?是一类方法,用于做出决策,提供参数,管理可以称为策略方法的全局资源。执行特定任务的另一种方法不确定是否执行该任务,可以说是不知道执行该任务的原因的实施方法。策略方法必须检查系统运行状态,处理直接完成计算或不实施复杂算法的错误条件。策略方法通常密切依赖特定的应用程序,这些方法易于编写,易于理解。实现方法仅对特定数据执行特定处理,通常用于实现复杂算法。实施方法不管理决策或全局资源,如果在执行过程中发现错误,则应仅返回到执行状态,而不出错。实现方法是自包含算法,独立于特定应用程序,因此也可以在其他应用程序系统中重复使用。5 .完全复盖输入条件的所有组合的创建方法。必须能够对异常情况(例如Null、限制和边界值)做出有意义的响应。6.尽可能不使用全局信息应尽量减少方法与外部结合的程度,不使用全局信息是减少结合度的主要措施。7 .使用继承机制调用子进程。分解因子。使用委派。将代码封装在类中。(1)调用子进程的最简单方法是分离公共代码,以配置由其他方法调用的公共方法。如下图所示:7 .使用继承机制,(2)分解参数从不在同类相似方法中分解其他“参数”(即其他代码),剩下的代码从公共方法分解为公用代码,分解的参数由相同算法以其他方法定义,由此公用方法调用。使用此方法通常定义其他抽象基类,并在此抽象基类中定义公用方法,如图所示。7 .使用继承机制和(3)使用委派仅在具有常规-特殊关系的情况下适用。不正确地使用继承机制可能会使程序难以理解、修改和扩展。如果一般-特殊关系在逻辑上不存在,则可以利用委托机制重复使用现有代码。(4)通过将代码封装到类中,程序员通常希望重用用其他方法编写的程序代码以解决相同类型的应用程序问题。重复使用这些代码的更安全的方法是将重复使用的代码封装到类中。12.2.2可扩展性增强,软件包实现策略不会以一种方式遍历多个连接链。您可以使用多个语句避免仔细确定公共方法,改进可重用性准则,并提高进程的可扩展性。以下面向对象的编程准则也有助于提高可扩展性。1 .包实施策略、类的实施策略(包括描述属性的数据结构、修改属性的算法等)必须打包在包中,仅向外部提供公共接口,否则以后修改数据结构或算法的自由度会降低。12.2.2提高了可扩展性,2 .不要以一种方式遍历多个关联链。一种方法必须仅包含对象模型的有限内容。违反这个准则,方法太复杂,很难理解或修改扩展。3 .不要使用多个分支语句。通常,您可以使用DO_CASE语句测试对象的内部状态,而不是根据对象类型选择相应的行为。否则,添加新类时必须修改原始代码。必须合理利用多态机制,根据对象的当前类型自动确定适当的行为。12.2.2可扩展性增强,4。注意公共方法,公共方法是公共的接口。对这些方法的修改通常涉及很多其他类,因此修改公共方法的成本通常更高。要提高可修改性并降低维护成本,必须慎重选择和定义公共方法。私有方法是仅在类中使用的方法,通常用于实现公共方法。成本更低,因为删除、添加或修改Private方法涉及的面要窄得多。12.2.3加强健壮性,防止用户操作错误检查参数的合法性未预先确定限制条件,先测试后优化。必须认识到,对于任何实用软件,健壮性都是不可忽视的质量指标。要提高健壮性,必须遵循四条规则:系统在意外环境(如硬件故障、输入数据错误或操作错误)中的正确响应范围。1 .防止用户操作错误,软件系统必须具有处理用户操作错误的能力。接收用户输入数据的所有方法都必须确认收到的数据,即使发现非常严重的错误,也必须提供适当的提示信息,并准备重新接收用户输入,而不执行中断或“冲突”。2 .必须关注参数的正当性、公共方法,尤其是当用户使用公共方法时,可能违反该参数的约束条件,因此必须确保该参数的正当性。12.2.3坚固性增强,3 .不要预先确定约束。在设计阶段,很难准确预测应用程序系统中使用的数据结构的最大容量要求。因此,不应预先设置约束条件。必要时,必须使用动态内存分配机制创建没有预设限制的数据结构。4 .测试后优化,为了在效率和健壮性之间进行合理的折衷,为了提高效率,在优化之前,必须测试程序的性能。合理确定优化的关键部分以提高性能的测试。12.3测试策略,测试软件的经典策略是从单元测试开始逐步进入集成测试,最后进行验证测试和系统测试。测试面向对象软件的策略与上述基本相同,但具有多种新功能。12.3.1面向对象的单元测试,考虑面向对象的软件时,单位概念发生了变化。可测试的最小单位是封装的类和对象。类别可以包含不同的工作集,特定工作也可以位于不同的类别集中。因此,对于面向对象的软件,单元测试的意义发生了重大变化。测试面向对象的软件时,不能再孤立地测试单个任务,必须将任务作为类的一部分进行测试。必须在每个子类中测试作业x,并测试作业作为类的一部分,而不是孤立地测试单个作业(函数)。例如,假定有一个类层次结构,其中作业x在超类中定义,每个都使用作业x,但x调用在子类中定义的作业,并处理子类的专用属性。由于在不同子类中使用x的环境存在微妙的差异,因此必须在每个子类的上下文中测试工作x。12.3.2面向对象集成测试在面向对象软件中没有分层控制结构,传统的自上而下或自下而上集成策略没有意义。面向对象软件的集成测试主要有两种不同的策略:基于线程的测试(threadbasedtesting)集成了响应系统输入或事件所需的类。分别集成和测试每个线程,并应用回归测试,以确保没有副作用。基于使用的测试(usebasedtesting)首先测试很少使用服务器类的类(称为独立类),测试所有独立类,然后测试使用独立类下一层(称为从属类)的类。在构建整个软件系统之前,对从属类的测试将继续一步一步地进行。群集测试(clustertesting)是面向对象软件集成测试的一个步骤,它检查一组相互协作以发现协作错误的类。,12.3.3面向对象的验证测试不再考虑验证测试或系统测试级别中类之间互连的详细信息。与传统的验证测试一样,面向对象软件的验证测试集中检查用户可见的行为和用户可见的输出。传统的黑盒测试方法也可以用于设计验证测试用例,但对于面向对象的软件,主要是根据描述动态模型和系统行为的脚本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 七年级语文下册 第一单元 1 邓稼先说课稿 新人教版
- 2025年面试时劳动合同应注意条款
- 3.3生态系统的物质循环教学设计-2024-2025学年高二上学期生物人教版选择性必修2
- 2025上海市电梯定期检查与维修服务合同
- 2025农产品采购合同书
- 第十二课 用表格为网页布局说课稿-2025-2026学年初中信息技术浙教版2013八年级上册-浙教版2013
- 2024-2025学年新教材高中语文 第三单元 9.1 说“木叶”说课稿 部编版必修下册
- 居民集中供热(热计量计费)合同协议
- 国有土地租赁合同
- 鲁科版高中物理必修一第2章第3节《匀变速直线运动实例-自由落体运动》教学设计
- 液压机搬迁改造工程方案(3篇)
- 脊柱骨科课件教学
- 物业服务培训课件大纲
- 家庭教育指导行业2025年市场规模与增长趋势报告
- 急性腹泻病教学课件
- 2025年版住宅房屋租赁合同范本下载
- 2-5跨学科实践制作隔音房间模型八年级物理学案人教版
- 特殊人才考核管理办法
- 巩固脱贫成果全面推进乡村振兴政策培训测试题(附答案)
- 第一次月考综合卷(试卷)-2025-2026学年外研版(三起)英语五年级上册(含答案含听力原文无音频)
- 新交际英语(2024)二年级上册全册核心素养教案
评论
0/150
提交评论