版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaSoftwareSolutions
FoundationsofProgramDesign
SixthEditionby
Lewis&LoftusChapter6:
面向对象设计6-2面向对象设计第6章重点讨论:软件开发活动静态修饰符编写接口方法设计和方法重载6-3Outline软件开发活动静态变量和方法接口对象参数方法重载测试6-4程序开发软件开发项目应包含下述四个基本过程:建立软件需求软件设计实现软件设计软件测试上述过程是相互重叠和交互的6-5需求软件需求规定了一个程序必须完成的功能做什么,而非怎么做通常提供功能说明文档,但它应当被审阅和扩展初始需求往往是不完整,模糊,甚至可能是矛盾的小心分析软件需求能够很显著的节约开发时间和费用6-6设计软件设计指定了一个程序如何完成它的需求也就是一个软件设计决定:解决方案如何分解为可管理的多个小块每个小块该做什么面向对象设计决定了哪些类和对象是必要的,并且指定它们间如何交互底层设计包括不同方法如何完成它们的功能6-7实现实现是将设计转化为源代码的过程程序开发初学者通常认为写代码是软件开发的核心,但其实写代码应当是最少创造性的步骤几乎所有重要的决策都在需求和设计阶段做出实现应该注重代码细节,包括风格准则和文档6-8测试测试是为了保证软件能够解决预定的问题,并能够在满足性能要求的条件下执行任务一个程序应该以找出错误为目标进行充分测试调试是找出程序出现问题所在和修正的过程我们将会在本章后面讲述测试的细节6-9Outline软件开发活动静态变量和方法接口对象参数方法重载测试6-10识别类和对象 识别可能的类的方法之一是识别软件需求中所讨论的实体对象,对象一般是名词类代表了一组有类似行为的对象,问题说明中的复数名词可能表明需要一个类代表这种事务中的一个个体类识别中的另一个关键选择是要将某一事物表示为对象还是对象的基本属性识别出程序所需要的类后,要给每个类分配职责6-11静态类成员回忆之前所说的静态方法能够直接通过类名而非对象名进行调用例如,Math类的方法都是静态的:result=Math.sqrt(25)变量也能定义为静态决定一个方法或变量是否应该定义为静态是设计过程的一个重要环节6-12静态修饰符可以通过static修饰符定义静态方法和变量静态方法与变量是与类关联而非与对象关联静态方法有时也称为类方法,静态变量有时也称为类变量6-13静态变量通常每个对象拥有自己的数据空间,但如果一个变量声明为静态,则只有一份拷贝存在privatestaticfloatprice;程序第一次引用含有静态变量的类时,将为静态变量分配存储空间静态变量可以由所有的类实例共享在一个对象中改变静态变量的值将直接影响其他所有对象6-14静态方法classHelper{publicstaticintcube(intnum){returnnum*num*num;}}因为定义为静态,方法可以如下方式调用 value=Helper.cube(5);6-15静态类成员修饰符的顺序可以互换,但习惯将可见性修饰符放在前回忆之前main
方法为静态–它由java解释器直接调用而无需生成一个对象静态方法不能引用实例变量,因为实例变量开始并不存在直至对象被创建静态方法可以引用静态变量或局部变量6-16类间关系 依赖关系:一个类依赖于另一个类,通常体现在一个类的方法调用另一个类的方法同一个类的对象间依赖关系:一个类依赖于本身,即一个类的对象与本类的其他对象交互,也就是将一个类对象作为参数传递给本类的一个方法聚合关系:将其他对象的引用作为自己的实例数据的对象,一个对象越复杂,越需要将它表示为聚合对象6-17this引用 this为java的保留字,this对象允许对象引用自己this引用可以当前正在运行的对象this引用也常用于区分同名的构造方法参数和实例变量6-18Outline软件开发活动静态变量和方法接口对象参数方法重载测试6-19接口Java接口是一组常量和抽象方法的集合抽象方法是没有实现的方法,即对于抽象方法没有已定义的实现代码抽象方法声明前边可使用保留字abstract,但在接口中的方法通常不必加上一个类通过实现定义在接口中的每个抽象方法来实现这个接口6-20接口publicinterfaceDoable{publicvoiddoThis();publicintdoThat();publicvoiddoThis2(floatvalue,charch);publicbooleandoTheOther(intnum);}interface
为保留字在接口中的方法都没有定义(实现代码)包含参数列表的方法声明头后面仅跟着分号6-21接口接口不能被实例化接口方法的默认可见性是public一个类可以如下方式实现接口:在类头说明提供接口中每个抽象方法的具体实现如果一个类声明它要实现某个接口,它就必须提供这个接口中所有方法的实现代码6-22接口publicclassCanDoimplementsDoable{publicvoiddoThis(){
//whatever}publicvoiddoThat(){
//whatever}
//etc.}implements
为保留字Doable
中的每个方法都要给出定义6-23接口一个类也可以实现多个接口使用implements
子句声明一个类实现多个接口,接口名用逗号分开这个类应当提供所有接口中的所有方法的实现代码classManyThingsimplementsinterface1,interface2{
//allmethodsofbothinterfaces}6-24接口Java标准类库包含很多有用接口Comparable
接口只有一个抽象方法compareTo,用于比较两个对象我们曾经在第五章的String类中讨论过compareTo
方法String
类实现了Comparable,使得我们能够将字符串以词典顺序排列6-25Outline软件开发活动静态变量和方法接口对象参数方法重载测试6-26对象参数方法设计的一个重要问题是参数传递Java方法通过值进行参数传递实际参数的一份拷贝被存入形式参数(定义在方法头部)因此参数传递类似于赋值语句当一个对象被传递到方法时,实际参数和形式参数互为对方的别名6-27传递对象至方法方法对于参数的操作可能有永久效果,也可能没有SeeParameterTester.java
SeeParameterModifier.java
SeeNum.java
注意改变一个对象内部状态与改变一个引用指向的对象的区别6-28Outline软件开发活动静态变量和方法接口对象参数方法重载测试6-29方法重载使用具有不同参数表的相同方法名调用多个方法,这种技术称为方法重载如果一个方法被重载了,那么仅用方法名不足以确定哪个方法被调用每个重载的方法的识别标志必须是唯一的识别标记包括参数的个数,类型和参数的次序6-30方法重载编译器通过对参数的分析,决定哪个方法被调用floattryMe(intx){returnx+.375;}floattryMe(intx,floaty){returnx*y;}result=tryMe(25,4.32)Invocation6-31方法重载println方法被重载:println(Strings)println(inti)println(doubled)
等等...下列语句调用了不同版本的println方法:System.out.println("Thetotalis:");System.out.println(total);6-32方法重载方法的返回类型并不作为识别标志的一部分也就是说,方法重载不能仅靠返回值类型不同而实现构造器可以重载构造器重载提供了多种途径以初始化一个新对象6-33Outline软件开发活动静态变量和方法接口对象参数方法重载测试6-34测试测试包含多种不同意思测试当然包括以不同输入运行完整的程序它也包括通过人工或计算机作出关于访问质量的任何评估一些测试应该在编码开始前就开始问题越早发现,则解决问题的成本越小6-35测试测试的目的在于发现错误发现并且解决多个错误后,我们可以预计程序会按照预期执行我们绝不能认为所有错误都已经消除了我们什么时候停止测试?观念上的回答:绝不不诚实的回答:当我们没时间时好一些的回答:当我们能够承受没有被发现的错误所带来的风险时6-36审查审查是用于评价设计和代码质量的技术它是基于人工测试的常用和有效的方法向他人陈述设计或代码:使自己更仔细考虑已做的设计和代码可以吸取他人的建议审查通常称为排练6-37测试用例一个测试用例由一组输入数据、用户操作或其他初始条件及期望输出构成测试用例应该形成规范的文档,以便将来需要时能够重复测试对于中型和大型系统,测试过程应该仔细管理许多组织拥有不同的质量保证部门进行测试6-38缺陷和回归测试缺陷测试的目的在于通过测试用例发现错误一个问题的解决往往会带来新问题当解决了一系列问题后我们应该执行回归测试—运行以往的测试用例以保证没有引入新错误对程序所有可能的输入数据和用户操作进行穷尽式的测试是不现实的因此必须设计出具有最大化发现问题能力的测试用例6-39黑盒测试黑盒测试的测试用例不考虑系统的内部工作方式黑盒测试基于输入和输出数据输入被划分为多个等价类如果一个方法对等价类的一个输入数据能够处理,那么该方法可以处理等价类中的其他数据因此好的测试用例必须覆盖所有的等价类并且要注意不同种类间的边界6-40白盒测试白盒测试用于测试一个方法的内部结构和实现白盒测试的目标是保证程序中的每一条路径至少执行一次代码执行的路径由各种使用条件表达式的流程控制语句控制一个好的测试方案必须包括白盒和黑盒测试GUI设计设计软件界面应该让用户少犯输入错误适应性最广大型系统的风格一致6-41布局管理器布局管理器是一个对象,负责在容器安排组件每个容器有默认的布局管理器,但可以更换每当要改变容器中组件的视觉外观时,都会询问布局管理器边界、盒式、卡式、流式、网格、网格单元6-42边框允许在任何Swing组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45070-2024废弃电器电子产品回收规范
- 工作总结之房地产评估实习总结
- 工作总结之宠物医院实习总结
- 机器人操作系统(ROS2)入门与实践 课件 第6章 IMU在ROS2中的使用
- 银行内部审计制度
- 中梁物业案场服务触点方案
- 清华大学热工基础课件工程热力学加传热学期末复习
- 第9周-七年级上册数学华东师大版(2024)每周测验(含答案)
- 分配理论教学课件
- 《认识透镜》课件
- 防疫员技师考试题库及答案
- 苏教六年级数学上册百分数整理与复习课件
- 软件工程项目实践教程第四版课后参考答案
- 流行性感冒病人的护理
- 0-6岁智障儿童康复教育发展性课程评量
- 认识智能手机(老年人智能手机培训)
- 八年级英语上册动词形专练
- 宜昌市建设工程文件归档内容及排列顺序
- 项目全周期现金流管理培训
- 生物化学实验智慧树知到答案章节测试2023年浙江大学
- 义务教育化学课程标准(2022年版)
评论
0/150
提交评论